diff --git a/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java b/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java
index cf7445917..8a32bfc5e 100644
--- a/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java
+++ b/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java
@@ -12,7 +12,7 @@ import java.util.List;
/**
* Used for creating a {@link Variable} with the right properties based on the declaration incl. all directives and configuration.
- *
+ *
* Holds information about the variable while it is being built.
*/
public class VariableBuilder {
@@ -55,6 +55,7 @@ public class VariableBuilder {
/**
* Is the type is a simple integer type.
+ *
* @return True if the type is a simple integer type.
*/
boolean isTypeInteger() {
@@ -63,6 +64,7 @@ public class VariableBuilder {
/**
* Is the type is a pointer type.
+ *
* @return True if the type is a pointer type.
*/
boolean isTypePointer() {
@@ -71,32 +73,53 @@ public class VariableBuilder {
/**
* Is the type is a struct type.
+ *
* @return True if the type is a struct type.
*/
boolean isTypeStruct() {
return type instanceof SymbolTypeStruct;
}
- /** The different scopes deciding directive defaults. */
- public enum DirectiveScope {
- GLOBAL, LOCAL, PARAMETER, MEMBER;
+ /**
+ * Is the variable a global variable
+ *
+ * @return true if the variable is in the global scope
+ */
+ boolean isScopeGlobal() {
+ return ScopeRef.ROOT.equals(scope.getRef());
+ }
- private static DirectiveScope getFor(Scope scope, boolean isParameter) {
- if(isParameter) {
- return PARAMETER;
- }
- if(ScopeRef.ROOT.equals(scope.getRef())) {
- return GLOBAL;
- } else if(scope instanceof Procedure) {
- return LOCAL;
- } else if(scope instanceof StructDefinition) {
- return MEMBER;
- } else if(scope instanceof BlockScope) {
- return getFor(scope.getScope(), false);
- } else {
- throw new InternalError("Scope type not handled " + scope);
- }
- }
+ /**
+ * Is the variable a function parameter
+ *
+ * @return true if the variable is a function parameter
+ */
+ boolean isScopeParameter() {
+ Scope s = scope;
+ while(s instanceof BlockScope)
+ s = s.getScope();
+ return (s instanceof Procedure) && isParameter;
+ }
+
+ /**
+ * Is the variable a local variable in a function
+ *
+ * @return true if the variable is in a function scope
+ */
+ boolean isScopeLocal() {
+ Scope s = scope;
+ while(s instanceof BlockScope)
+ s = s.getScope();
+ return (s instanceof Procedure) && !isParameter;
+ }
+
+ /**
+ * Is the variable a member of a struct definition
+ *
+ * @return true if the variable is a struct definition member
+ */
+ boolean isScopeMember() {
+ return scope instanceof StructDefinition;
}
public VariableBuilder() {
diff --git a/src/test/ref/address-of-3.log b/src/test/ref/address-of-3.log
index 591581241..733935a75 100644
--- a/src/test/ref/address-of-3.log
+++ b/src/test/ref/address-of-3.log
@@ -80,7 +80,7 @@ SYMBOL TABLE SSA
(label) @end
(const signed word*) SCREEN = (signed word*)(number) $400
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
-(const signed word*) VALS = { (signed word)(number) 1, (signed word)(number) 2, (signed word)(number) 3, (signed word)(number) 4 }
+(const signed word*) VALS[] = { (signed word)(number) 1, (signed word)(number) 2, (signed word)(number) 3, (signed word)(number) 4 }
(byte) idx
(byte) idx#0
(byte) idx#1
@@ -630,7 +630,7 @@ FINAL SYMBOL TABLE
(label) @end
(const signed word*) SCREEN = (signed word*) 1024
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
-(const signed word*) VALS = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
+(const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
(byte) idx
(byte) idx#12 idx zp[1]:3 5.666666666666667
(byte) idx#13 idx zp[1]:3 1.3636363636363638
diff --git a/src/test/ref/address-of-3.sym b/src/test/ref/address-of-3.sym
index 807ba31e5..8a87e8bf2 100644
--- a/src/test/ref/address-of-3.sym
+++ b/src/test/ref/address-of-3.sym
@@ -3,7 +3,7 @@
(label) @end
(const signed word*) SCREEN = (signed word*) 1024
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
-(const signed word*) VALS = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
+(const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
(byte) idx
(byte) idx#12 idx zp[1]:3 5.666666666666667
(byte) idx#13 idx zp[1]:3 1.3636363636363638
diff --git a/src/test/ref/array-16bit-lookup.log b/src/test/ref/array-16bit-lookup.log
index 26ea4e07b..83ac942cf 100644
--- a/src/test/ref/array-16bit-lookup.log
+++ b/src/test/ref/array-16bit-lookup.log
@@ -61,7 +61,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte) SIZEOF_WORD = (byte) 2
-(const word*) arr16 = { fill( $80, 0) }
+(const word*) arr16[(number) $80] = { fill( $80, 0) }
(word()) getValue((word) getValue::index)
(number~) getValue::$0
(number~) getValue::$1
@@ -568,7 +568,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const word*) arr16 = { fill( $80, 0) }
+(const word*) arr16[(number) $80] = { fill( $80, 0) }
(word()) getValue((word) getValue::index)
(byte~) getValue::$0 reg byte a 4.0
(byte~) getValue::$1 reg byte a 4.0
diff --git a/src/test/ref/array-16bit-lookup.sym b/src/test/ref/array-16bit-lookup.sym
index 3cfe1dca2..d184d45e9 100644
--- a/src/test/ref/array-16bit-lookup.sym
+++ b/src/test/ref/array-16bit-lookup.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const word*) arr16 = { fill( $80, 0) }
+(const word*) arr16[(number) $80] = { fill( $80, 0) }
(word()) getValue((word) getValue::index)
(byte~) getValue::$0 reg byte a 4.0
(byte~) getValue::$1 reg byte a 4.0
diff --git a/src/test/ref/array-length-symbolic-min.log b/src/test/ref/array-length-symbolic-min.log
index f4ec6b463..8a78fb86b 100644
--- a/src/test/ref/array-length-symbolic-min.log
+++ b/src/test/ref/array-length-symbolic-min.log
@@ -32,7 +32,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte) SZ = (number) $f
-(const byte*) items = { fill( SZ, 0) }
+(const byte*) items[(const byte) SZ] = { fill( SZ, 0) }
(void()) main()
(bool~) main::$0
(label) main::@1
@@ -276,7 +276,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte) SZ = (number) $f
-(const byte*) items = { fill( SZ, 0) }
+(const byte*) items[(const byte) SZ] = { fill( SZ, 0) }
(void()) main()
(label) main::@1
(label) main::@return
diff --git a/src/test/ref/array-length-symbolic-min.sym b/src/test/ref/array-length-symbolic-min.sym
index cd8161af3..7e6b9b02c 100644
--- a/src/test/ref/array-length-symbolic-min.sym
+++ b/src/test/ref/array-length-symbolic-min.sym
@@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte) SZ = (number) $f
-(const byte*) items = { fill( SZ, 0) }
+(const byte*) items[(const byte) SZ] = { fill( SZ, 0) }
(void()) main()
(label) main::@1
(label) main::@return
diff --git a/src/test/ref/array-length-symbolic.log b/src/test/ref/array-length-symbolic.log
index 6d02b0da8..6c482cad6 100644
--- a/src/test/ref/array-length-symbolic.log
+++ b/src/test/ref/array-length-symbolic.log
@@ -50,7 +50,7 @@ SYMBOL TABLE SSA
(label) @end
(const byte) ITEM_COUNT = (number) 3
(const byte) ITEM_SIZE = (number) 5
-(const byte*) items = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(void()) main()
(number~) main::$0
(number~) main::$1
@@ -511,7 +511,7 @@ FINAL SYMBOL TABLE
(label) @end
(const byte) ITEM_COUNT = (number) 3
(const byte) ITEM_SIZE = (number) 5
-(const byte*) items = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(void()) main()
(byte~) main::$0 reg byte a 202.0
(byte~) main::$1 reg byte a 202.0
diff --git a/src/test/ref/array-length-symbolic.sym b/src/test/ref/array-length-symbolic.sym
index e9d0b0ad0..c7c005ea5 100644
--- a/src/test/ref/array-length-symbolic.sym
+++ b/src/test/ref/array-length-symbolic.sym
@@ -3,7 +3,7 @@
(label) @end
(const byte) ITEM_COUNT = (number) 3
(const byte) ITEM_SIZE = (number) 5
-(const byte*) items = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(void()) main()
(byte~) main::$0 reg byte a 202.0
(byte~) main::$1 reg byte a 202.0
diff --git a/src/test/ref/arrays-init-kasm-0.log b/src/test/ref/arrays-init-kasm-0.log
index f4ffedfd5..5eb4a19bd 100644
--- a/src/test/ref/arrays-init-kasm-0.log
+++ b/src/test/ref/arrays-init-kasm-0.log
@@ -24,7 +24,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) SINTAB = kickasm {{ .fill 256, 128 + 128*sin(i*2*PI/256)
+(const byte*) SINTAB[(number) $100] = kickasm {{ .fill 256, 128 + 128*sin(i*2*PI/256)
}}
(void()) main()
(label) main::@return
@@ -197,7 +197,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SINTAB = kickasm {{ .fill 256, 128 + 128*sin(i*2*PI/256)
+(const byte*) SINTAB[(number) $100] = kickasm {{ .fill 256, 128 + 128*sin(i*2*PI/256)
}}
(void()) main()
(label) main::@return
diff --git a/src/test/ref/arrays-init-kasm-0.sym b/src/test/ref/arrays-init-kasm-0.sym
index dbd6a3fab..95ab889d1 100644
--- a/src/test/ref/arrays-init-kasm-0.sym
+++ b/src/test/ref/arrays-init-kasm-0.sym
@@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SINTAB = kickasm {{ .fill 256, 128 + 128*sin(i*2*PI/256)
+(const byte*) SINTAB[(number) $100] = kickasm {{ .fill 256, 128 + 128*sin(i*2*PI/256)
}}
(void()) main()
(label) main::@return
diff --git a/src/test/ref/arrays-init-short.log b/src/test/ref/arrays-init-short.log
index 2089c0d7e..cdc4c5c97 100644
--- a/src/test/ref/arrays-init-short.log
+++ b/src/test/ref/arrays-init-short.log
@@ -74,8 +74,8 @@ SYMBOL TABLE SSA
(byte) main::i1#1
(byte) main::i1#2
(byte) main::i1#3
-(const byte*) msg1 = (string) "camelot"
-(const byte*) msg2 = { (byte) 'c', (byte) 'm', (byte) 'l' }
+(const byte*) msg1[(number) $10] = (string) "camelot"
+(const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' }
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$0 ← (number) 0 != *((const byte*) msg1 + (byte) main::i#2)
@@ -430,8 +430,8 @@ FINAL SYMBOL TABLE
(byte) main::i1
(byte) main::i1#1 reg byte x 22.0
(byte) main::i1#2 reg byte x 18.333333333333332
-(const byte*) msg1 = (string) "camelot"
-(const byte*) msg2 = { (byte) 'c', (byte) 'm', (byte) 'l' }
+(const byte*) msg1[(number) $10] = (string) "camelot"
+(const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' }
reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/arrays-init-short.sym b/src/test/ref/arrays-init-short.sym
index 3945fe9f6..28ee7a9dd 100644
--- a/src/test/ref/arrays-init-short.sym
+++ b/src/test/ref/arrays-init-short.sym
@@ -14,8 +14,8 @@
(byte) main::i1
(byte) main::i1#1 reg byte x 22.0
(byte) main::i1#2 reg byte x 18.333333333333332
-(const byte*) msg1 = (string) "camelot"
-(const byte*) msg2 = { (byte) 'c', (byte) 'm', (byte) 'l' }
+(const byte*) msg1[(number) $10] = (string) "camelot"
+(const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' }
reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/arrays-init.log b/src/test/ref/arrays-init.log
index a34162c2b..8e7aadabc 100644
--- a/src/test/ref/arrays-init.log
+++ b/src/test/ref/arrays-init.log
@@ -29,9 +29,9 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) b = { fill( 3, 0) }
-(const byte*) c = { (byte) 'c', (byte) 'm', (byte) 'l' }
-(const byte*) d = (string) "cml"z
+(const byte*) b[(number) 3] = { fill( 3, 0) }
+(const byte*) c[] = { (byte) 'c', (byte) 'm', (byte) 'l' }
+(const byte*) d[] = (string) "cml"z
(void()) main()
(byte*~) main::$0
(byte*~) main::$1
@@ -251,9 +251,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) b = { fill( 3, 0) }
-(const byte*) c = { (byte) 'c', (byte) 'm', (byte) 'l' }
-(const byte*) d = (string) "cml"z
+(const byte*) b[(number) 3] = { fill( 3, 0) }
+(const byte*) c[] = { (byte) 'c', (byte) 'm', (byte) 'l' }
+(const byte*) d[] = (string) "cml"z
(void()) main()
(label) main::@return
diff --git a/src/test/ref/arrays-init.sym b/src/test/ref/arrays-init.sym
index 583f2e989..873e876b6 100644
--- a/src/test/ref/arrays-init.sym
+++ b/src/test/ref/arrays-init.sym
@@ -2,9 +2,9 @@
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) b = { fill( 3, 0) }
-(const byte*) c = { (byte) 'c', (byte) 'm', (byte) 'l' }
-(const byte*) d = (string) "cml"z
+(const byte*) b[(number) 3] = { fill( 3, 0) }
+(const byte*) c[] = { (byte) 'c', (byte) 'm', (byte) 'l' }
+(const byte*) d[] = (string) "cml"z
(void()) main()
(label) main::@return
diff --git a/src/test/ref/assignment-compound.log b/src/test/ref/assignment-compound.log
index dd990814b..8fbdc9c64 100644
--- a/src/test/ref/assignment-compound.log
+++ b/src/test/ref/assignment-compound.log
@@ -226,7 +226,7 @@ SYMBOL TABLE SSA
(byte) main::i#7
(byte) main::i#8
(byte) main::i#9
-(const byte*) ref = { (byte)(number) 3, (byte)(number) 4, (byte)(number) 3, (byte)(number) $12, (byte)(number) 9, (byte)(number) 1, (byte)(number) 4, (byte)(number) 2, (byte)(number) 4, (byte)(number) 5, (byte)(number) 1, (byte)(number) 0 }
+(const byte*) ref[] = { (byte)(number) 3, (byte)(number) 4, (byte)(number) 3, (byte)(number) $12, (byte)(number) 9, (byte)(number) 1, (byte)(number) 4, (byte)(number) 2, (byte)(number) 4, (byte)(number) 5, (byte)(number) 1, (byte)(number) 0 }
(const byte*) screen1 = (byte*)(number) $400
(byte*) screen2
(byte*) screen2#0
@@ -1292,7 +1292,7 @@ FINAL SYMBOL TABLE
(label) main::@return
(byte) main::a
(byte) main::i
-(const byte*) ref = { (byte) 3, (byte) 4, (byte) 3, (byte) $12, (byte) 9, (byte) 1, (byte) 4, (byte) 2, (byte) 4, (byte) 5, (byte) 1, (byte) 0 }
+(const byte*) ref[] = { (byte) 3, (byte) 4, (byte) 3, (byte) $12, (byte) 9, (byte) 1, (byte) 4, (byte) 2, (byte) 4, (byte) 5, (byte) 1, (byte) 0 }
(const byte*) screen1 = (byte*) 1024
(byte*) screen2
(const byte*) screen2#0 screen2 = (const byte*) screen1+(byte) $28
diff --git a/src/test/ref/assignment-compound.sym b/src/test/ref/assignment-compound.sym
index e35077fe0..b3ca43c2f 100644
--- a/src/test/ref/assignment-compound.sym
+++ b/src/test/ref/assignment-compound.sym
@@ -18,7 +18,7 @@
(label) main::@return
(byte) main::a
(byte) main::i
-(const byte*) ref = { (byte) 3, (byte) 4, (byte) 3, (byte) $12, (byte) 9, (byte) 1, (byte) 4, (byte) 2, (byte) 4, (byte) 5, (byte) 1, (byte) 0 }
+(const byte*) ref[] = { (byte) 3, (byte) 4, (byte) 3, (byte) $12, (byte) 9, (byte) 1, (byte) 4, (byte) 2, (byte) 4, (byte) 5, (byte) 1, (byte) 0 }
(const byte*) screen1 = (byte*) 1024
(byte*) screen2
(const byte*) screen2#0 screen2 = (const byte*) screen1+(byte) $28
diff --git a/src/test/ref/bitmap-circle-2.log b/src/test/ref/bitmap-circle-2.log
index 883d50287..e9463d31a 100644
--- a/src/test/ref/bitmap-circle-2.log
+++ b/src/test/ref/bitmap-circle-2.log
@@ -313,7 +313,7 @@ SYMBOL TABLE SSA
(const byte) VIC_DEN = (number) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
-(const byte*) bitmask = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 }
+(const byte*) bitmask[] = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0
(number~) circle::$1
@@ -2842,7 +2842,7 @@ FINAL SYMBOL TABLE
(const byte) VIC_DEN = (number) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
-(const byte*) bitmask = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
+(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0 zp[2]:4 4.0
(signed word~) circle::$10 zp[2]:4 202.0
diff --git a/src/test/ref/bitmap-circle-2.sym b/src/test/ref/bitmap-circle-2.sym
index ca0401601..e531eba9c 100644
--- a/src/test/ref/bitmap-circle-2.sym
+++ b/src/test/ref/bitmap-circle-2.sym
@@ -10,7 +10,7 @@
(const byte) VIC_DEN = (number) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
-(const byte*) bitmask = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
+(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0 zp[2]:4 4.0
(signed word~) circle::$10 zp[2]:4 202.0
diff --git a/src/test/ref/bitmap-circle.log b/src/test/ref/bitmap-circle.log
index 86b895b2b..4329b74d3 100644
--- a/src/test/ref/bitmap-circle.log
+++ b/src/test/ref/bitmap-circle.log
@@ -283,7 +283,7 @@ SYMBOL TABLE SSA
(const byte) VIC_DEN = (number) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (number) 8
-(const byte*) bitmask = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 }
+(const byte*) bitmask[] = { (byte)(number) $80, (byte)(number) $40, (byte)(number) $20, (byte)(number) $10, (byte)(number) 8, (byte)(number) 4, (byte)(number) 2, (byte)(number) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0
(number~) circle::$1
@@ -2520,7 +2520,7 @@ FINAL SYMBOL TABLE
(const byte) VIC_DEN = (number) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
-(const byte*) bitmask = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
+(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$10 zp[2]:2 22.0
(signed word~) circle::$5 zp[2]:8 22.0
diff --git a/src/test/ref/bitmap-circle.sym b/src/test/ref/bitmap-circle.sym
index 38b9831dc..5aa8909ec 100644
--- a/src/test/ref/bitmap-circle.sym
+++ b/src/test/ref/bitmap-circle.sym
@@ -10,7 +10,7 @@
(const byte) VIC_DEN = (number) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (number) 8
-(const byte*) bitmask = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
+(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$10 zp[2]:2 22.0
(signed word~) circle::$5 zp[2]:8 22.0
diff --git a/src/test/ref/bitmap-line-anim-1.log b/src/test/ref/bitmap-line-anim-1.log
index e486225db..bee7632be 100644
--- a/src/test/ref/bitmap-line-anim-1.log
+++ b/src/test/ref/bitmap-line-anim-1.log
@@ -1166,11 +1166,11 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) init_screen()
(bool~) init_screen::$0
(label) init_screen::@1
@@ -4696,11 +4696,11 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte y 202.0
(byte) bitmap_plot::y#3 reg byte y 202.0
(byte) bitmap_plot::y#4 reg byte y 204.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) init_screen()
(label) init_screen::@1
(label) init_screen::@2
diff --git a/src/test/ref/bitmap-line-anim-1.sym b/src/test/ref/bitmap-line-anim-1.sym
index d4fc96699..bbb022608 100644
--- a/src/test/ref/bitmap-line-anim-1.sym
+++ b/src/test/ref/bitmap-line-anim-1.sym
@@ -191,11 +191,11 @@
(byte) bitmap_plot::y#2 reg byte y 202.0
(byte) bitmap_plot::y#3 reg byte y 202.0
(byte) bitmap_plot::y#4 reg byte y 204.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) init_screen()
(label) init_screen::@1
(label) init_screen::@2
diff --git a/src/test/ref/bitmap-line-anim-2.log b/src/test/ref/bitmap-line-anim-2.log
index 4eaaa1644..98958f74d 100644
--- a/src/test/ref/bitmap-line-anim-2.log
+++ b/src/test/ref/bitmap-line-anim-2.log
@@ -945,9 +945,9 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -4420,9 +4420,9 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 101.0
(byte) bitmap_plot::y#4 reg byte x 208.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(void()) main()
(label) main::@1
diff --git a/src/test/ref/bitmap-line-anim-2.sym b/src/test/ref/bitmap-line-anim-2.sym
index 6f3eec735..186b1ac6e 100644
--- a/src/test/ref/bitmap-line-anim-2.sym
+++ b/src/test/ref/bitmap-line-anim-2.sym
@@ -140,9 +140,9 @@
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 101.0
(byte) bitmap_plot::y#4 reg byte x 208.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(void()) main()
(label) main::@1
diff --git a/src/test/ref/bitmap-plot-0.log b/src/test/ref/bitmap-plot-0.log
index d60ba4494..9a2f5dc4d 100644
--- a/src/test/ref/bitmap-plot-0.log
+++ b/src/test/ref/bitmap-plot-0.log
@@ -583,9 +583,9 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -783,7 +783,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(void*) memset::str#4
(void*) memset::str#5
(void*) memset::str#6
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#1) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#1)
Successful SSA optimization Pass2FixInlineConstructors
@@ -3168,9 +3168,9 @@ FINAL SYMBOL TABLE
(word) bitmap_plot::x#0 x zp[2]:3 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 15.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte) frame_cnt
(byte) frame_cnt#0 frame_cnt zp[1]:7 1.1111111111111112
@@ -3232,7 +3232,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:5
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
zp[1]:2 [ main::vy#2 main::vy#8 main::vy#1 ]
zp[2]:3 [ memset::num#2 memset::end#0 main::x#2 main::x#1 bitmap_plot::x#0 ]
diff --git a/src/test/ref/bitmap-plot-0.sym b/src/test/ref/bitmap-plot-0.sym
index 11beeb404..268efe95b 100644
--- a/src/test/ref/bitmap-plot-0.sym
+++ b/src/test/ref/bitmap-plot-0.sym
@@ -71,9 +71,9 @@
(word) bitmap_plot::x#0 x zp[2]:3 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 15.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte) frame_cnt
(byte) frame_cnt#0 frame_cnt zp[1]:7 1.1111111111111112
@@ -135,7 +135,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:5
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
zp[1]:2 [ main::vy#2 main::vy#8 main::vy#1 ]
zp[2]:3 [ memset::num#2 memset::end#0 main::x#2 main::x#1 bitmap_plot::x#0 ]
diff --git a/src/test/ref/bitmap-plot-1.log b/src/test/ref/bitmap-plot-1.log
index 1fd5d53b3..2ab31e8fc 100644
--- a/src/test/ref/bitmap-plot-1.log
+++ b/src/test/ref/bitmap-plot-1.log
@@ -1034,7 +1034,7 @@ SYMBOL TABLE SSA
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
-(const signed word*) SINUS = { fill( $200, 0) }
+(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte*) VIC_CONTROL = (byte*)(number) $d011
@@ -1162,9 +1162,9 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -1632,7 +1632,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mulu16_sel::v2#3
(word) mulu16_sel::v2#4
(word) mulu16_sel::v2#5
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#0
(word) rem16u#1
@@ -8090,7 +8090,7 @@ FINAL SYMBOL TABLE
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed word*) SINUS = { fill( $200, 0) }
+(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte*) VIC_CONTROL = (byte*) 53265
@@ -8144,9 +8144,9 @@ FINAL SYMBOL TABLE
(word) bitmap_plot::x#0 x zp[2]:28 3.75
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 7.5
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
@@ -8355,7 +8355,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mulu16_sel::v2#3 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:2 5.0
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#1 rem16u zp[2]:12 0.8
(signed word()) sin16s((dword) sin16s::x)
diff --git a/src/test/ref/bitmap-plot-1.sym b/src/test/ref/bitmap-plot-1.sym
index 7bf993505..24e2414c5 100644
--- a/src/test/ref/bitmap-plot-1.sym
+++ b/src/test/ref/bitmap-plot-1.sym
@@ -22,7 +22,7 @@
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed word*) SINUS = { fill( $200, 0) }
+(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte*) VIC_CONTROL = (byte*) 53265
@@ -76,9 +76,9 @@
(word) bitmap_plot::x#0 x zp[2]:28 3.75
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 7.5
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
@@ -287,7 +287,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mulu16_sel::v2#3 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:2 5.0
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#1 rem16u zp[2]:12 0.8
(signed word()) sin16s((dword) sin16s::x)
diff --git a/src/test/ref/bitmap-plot-2.log b/src/test/ref/bitmap-plot-2.log
index 628ee95f9..ef17d8950 100644
--- a/src/test/ref/bitmap-plot-2.log
+++ b/src/test/ref/bitmap-plot-2.log
@@ -1107,7 +1107,7 @@ SYMBOL TABLE SSA
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
-(const signed word*) SINUS = { fill( $200, 0) }
+(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte*) VIC_CONTROL = (byte*)(number) $d011
@@ -1239,9 +1239,9 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -1759,7 +1759,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mulu16_sel::v2#3
(word) mulu16_sel::v2#4
(word) mulu16_sel::v2#5
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#0
(word) rem16u#1
@@ -8479,7 +8479,7 @@ FINAL SYMBOL TABLE
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed word*) SINUS = { fill( $200, 0) }
+(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte*) VIC_CONTROL = (byte*) 53265
@@ -8533,9 +8533,9 @@ FINAL SYMBOL TABLE
(word) bitmap_plot::x#0 x zp[2]:28 3.75
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 7.5
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
@@ -8757,7 +8757,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mulu16_sel::v2#3 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:2 5.0
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#1 rem16u zp[2]:21 0.8
(signed word()) sin16s((dword) sin16s::x)
diff --git a/src/test/ref/bitmap-plot-2.sym b/src/test/ref/bitmap-plot-2.sym
index b8ceee387..b61f45bac 100644
--- a/src/test/ref/bitmap-plot-2.sym
+++ b/src/test/ref/bitmap-plot-2.sym
@@ -23,7 +23,7 @@
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed word*) SINUS = { fill( $200, 0) }
+(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
(const byte) VIC_BMM = (number) $20
(const byte*) VIC_CONTROL = (byte*) 53265
@@ -77,9 +77,9 @@
(word) bitmap_plot::x#0 x zp[2]:28 3.75
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 7.5
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
@@ -301,7 +301,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
(word) mulu16_sel::v2#3 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#4 v2 zp[2]:2 4.0
(word) mulu16_sel::v2#5 v2 zp[2]:2 5.0
-(const byte*) plots_per_frame = { fill( $100, 0) }
+(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
(word) rem16u
(word) rem16u#1 rem16u zp[2]:21 0.8
(signed word()) sin16s((dword) sin16s::x)
diff --git a/src/test/ref/bitmap-plot-3.log b/src/test/ref/bitmap-plot-3.log
index bd45a1dcc..afd0213cc 100644
--- a/src/test/ref/bitmap-plot-3.log
+++ b/src/test/ref/bitmap-plot-3.log
@@ -693,7 +693,7 @@ SYMBOL TABLE SSA
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) SINTAB = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
+(const byte*) SINTAB[(number) $180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
@@ -1040,9 +1040,9 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -4644,7 +4644,7 @@ FINAL SYMBOL TABLE
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SINTAB = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
+(const byte*) SINTAB[(number) $180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
@@ -4780,9 +4780,9 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 101.0
(byte) bitmap_plot::y#4 reg byte x 210.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(void()) main()
(word~) main::$4 zp[2]:11 22.0
diff --git a/src/test/ref/bitmap-plot-3.sym b/src/test/ref/bitmap-plot-3.sym
index 2ba5c67bf..a938dece9 100644
--- a/src/test/ref/bitmap-plot-3.sym
+++ b/src/test/ref/bitmap-plot-3.sym
@@ -10,7 +10,7 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SINTAB = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
+(const byte*) SINTAB[(number) $180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
(const byte) VIC_BMM = (number) $20
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
@@ -146,9 +146,9 @@
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 101.0
(byte) bitmap_plot::y#4 reg byte x 210.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(void()) main()
(word~) main::$4 zp[2]:11 22.0
diff --git a/src/test/ref/bitmap-plotter.log b/src/test/ref/bitmap-plotter.log
index ecc447367..5caa9a32e 100644
--- a/src/test/ref/bitmap-plotter.log
+++ b/src/test/ref/bitmap-plotter.log
@@ -342,11 +342,11 @@ SYMBOL TABLE SSA
(byte) plot::y
(byte) plot::y#0
(byte) plot::y#1
-(const byte*) plot_bit = { fill( $100, 0) }
-(const byte*) plot_xhi = { fill( $100, 0) }
-(const byte*) plot_xlo = { fill( $100, 0) }
-(const byte*) plot_yhi = { fill( $100, 0) }
-(const byte*) plot_ylo = { fill( $100, 0) }
+(const byte*) plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) plots()
(bool~) plots::$0
(label) plots::@1
@@ -360,8 +360,8 @@ SYMBOL TABLE SSA
(byte) plots::i#3
(byte) plots::i#4
(const byte) plots_cnt = (byte) 8
-(const byte*) plots_x = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28 }
-(const byte*) plots_y = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28 }
+(const byte*) plots_x[] = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28 }
+(const byte*) plots_y[] = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28 }
Adding number conversion cast (unumber) 0 in *((const byte*) BGCOL) ← (number) 0
Adding number conversion cast (unumber) 0 in *((const byte*) FGCOL) ← (number) 0
@@ -2003,11 +2003,11 @@ FINAL SYMBOL TABLE
(byte) plot::x#0 x zp[1]:7 9.727272727272727
(byte) plot::y
(byte) plot::y#0 y zp[1]:2 15.000000000000002
-(const byte*) plot_bit = { fill( $100, 0) }
-(const byte*) plot_xhi = { fill( $100, 0) }
-(const byte*) plot_xlo = { fill( $100, 0) }
-(const byte*) plot_yhi = { fill( $100, 0) }
-(const byte*) plot_ylo = { fill( $100, 0) }
+(const byte*) plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) plots()
(label) plots::@1
(label) plots::@2
@@ -2017,8 +2017,8 @@ FINAL SYMBOL TABLE
(byte) plots::i#1 reg byte x 202.0
(byte) plots::i#2 reg byte x 101.0
(const byte) plots_cnt = (byte) 8
-(const byte*) plots_x = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
-(const byte*) plots_y = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
+(const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
+(const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
reg byte x [ plots::i#2 plots::i#1 ]
reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
diff --git a/src/test/ref/bitmap-plotter.sym b/src/test/ref/bitmap-plotter.sym
index fa9b70def..48f8672d7 100644
--- a/src/test/ref/bitmap-plotter.sym
+++ b/src/test/ref/bitmap-plotter.sym
@@ -74,11 +74,11 @@
(byte) plot::x#0 x zp[1]:7 9.727272727272727
(byte) plot::y
(byte) plot::y#0 y zp[1]:2 15.000000000000002
-(const byte*) plot_bit = { fill( $100, 0) }
-(const byte*) plot_xhi = { fill( $100, 0) }
-(const byte*) plot_xlo = { fill( $100, 0) }
-(const byte*) plot_yhi = { fill( $100, 0) }
-(const byte*) plot_ylo = { fill( $100, 0) }
+(const byte*) plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) plots()
(label) plots::@1
(label) plots::@2
@@ -88,8 +88,8 @@
(byte) plots::i#1 reg byte x 202.0
(byte) plots::i#2 reg byte x 101.0
(const byte) plots_cnt = (byte) 8
-(const byte*) plots_x = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
-(const byte*) plots_y = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
+(const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
+(const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
reg byte x [ plots::i#2 plots::i#1 ]
reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
diff --git a/src/test/ref/bresenham.log b/src/test/ref/bresenham.log
index 9ec18f163..ef857f504 100644
--- a/src/test/ref/bresenham.log
+++ b/src/test/ref/bresenham.log
@@ -82,7 +82,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*)(number) $400
+(const byte*) SCREEN[(number) $28*(number) $19] = (byte*)(number) $400
(const byte) STAR = (byte) $51
(void()) main()
(byte~) main::$0
@@ -660,7 +660,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*) 1024
+(const byte*) SCREEN[(number) $28*(number) $19] = (byte*) 1024
(const byte) STAR = (byte) $51
(void()) main()
(label) main::@1
diff --git a/src/test/ref/bresenham.sym b/src/test/ref/bresenham.sym
index 9f525be86..ca944f9be 100644
--- a/src/test/ref/bresenham.sym
+++ b/src/test/ref/bresenham.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*) 1024
+(const byte*) SCREEN[(number) $28*(number) $19] = (byte*) 1024
(const byte) STAR = (byte) $51
(void()) main()
(label) main::@1
diff --git a/src/test/ref/bresenhamarr.log b/src/test/ref/bresenhamarr.log
index 84f6546e1..da8f6fdb5 100644
--- a/src/test/ref/bresenhamarr.log
+++ b/src/test/ref/bresenhamarr.log
@@ -116,7 +116,7 @@ SYMBOL TABLE SSA
(word) main::idx#3
(word) main::idx#4
(word) main::idx#5
-(const byte*) main::screen = (byte*)(number) $400
+(const byte*) main::screen[(number) $28*(number) $19] = (byte*)(number) $400
(byte) main::x
(byte) main::x#0
(byte) main::x#1
@@ -710,7 +710,7 @@ FINAL SYMBOL TABLE
(word) main::idx#2 idx zp[2]:2 11.0
(word) main::idx#3 idx zp[2]:2 8.25
(word) main::idx#5 idx zp[2]:2 16.5
-(const byte*) main::screen = (byte*) 1024
+(const byte*) main::screen[(number) $28*(number) $19] = (byte*) 1024
(byte) main::x
(byte) main::x#1 x zp[1]:4 3.666666666666667
(byte) main::x#2 x zp[1]:4 7.333333333333333
diff --git a/src/test/ref/bresenhamarr.sym b/src/test/ref/bresenhamarr.sym
index 25350859a..3f636670e 100644
--- a/src/test/ref/bresenhamarr.sym
+++ b/src/test/ref/bresenhamarr.sym
@@ -18,7 +18,7 @@
(word) main::idx#2 idx zp[2]:2 11.0
(word) main::idx#3 idx zp[2]:2 8.25
(word) main::idx#5 idx zp[2]:2 16.5
-(const byte*) main::screen = (byte*) 1024
+(const byte*) main::screen[(number) $28*(number) $19] = (byte*) 1024
(byte) main::x
(byte) main::x#1 x zp[1]:4 3.666666666666667
(byte) main::x#2 x zp[1]:4 7.333333333333333
diff --git a/src/test/ref/c-types.log b/src/test/ref/c-types.log
index 088c0deb2..d09e18212 100644
--- a/src/test/ref/c-types.log
+++ b/src/test/ref/c-types.log
@@ -1011,7 +1011,7 @@ SYMBOL TABLE SSA
(dword) print_dword::dw#1
(dword) print_dword::dw#2
(dword) print_dword::dw#3
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -1198,7 +1198,7 @@ SYMBOL TABLE SSA
(label) testChar::@return
(const byte) testChar::n = (byte) $e
(const signed byte) testChar::s = (signed byte) -$e
-(const string) testChar::str = (string) "char: "
+(const string) testChar::str[] = (string) "char: "
(const byte) testChar::u = (byte) $e
(void()) testInt()
(label) testInt::@1
@@ -1211,7 +1211,7 @@ SYMBOL TABLE SSA
(label) testInt::@return
(const signed word) testInt::n = (signed word) -$578
(const signed word) testInt::s = (signed word) -$578
-(const string) testInt::str = (string) "int: "
+(const string) testInt::str[] = (string) "int: "
(const word) testInt::u = (word) $578
(void()) testLong()
(label) testLong::@1
@@ -1224,7 +1224,7 @@ SYMBOL TABLE SSA
(label) testLong::@return
(const signed dword) testLong::n = (signed dword) -$222e0
(const signed dword) testLong::s = (signed dword) -$222e0
-(const string) testLong::str = (string) "long: "
+(const string) testLong::str[] = (string) "long: "
(const dword) testLong::u = (dword) $222e0
(void()) testShort()
(label) testShort::@1
@@ -1237,7 +1237,7 @@ SYMBOL TABLE SSA
(label) testShort::@return
(const signed word) testShort::n = (signed word) -$578
(const signed word) testShort::s = (signed word) -$578
-(const string) testShort::str = (string) "short: "
+(const string) testShort::str[] = (string) "short: "
(const word) testShort::u = (word) $578
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
@@ -4541,7 +4541,7 @@ FINAL SYMBOL TABLE
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:2 4.0
(dword) print_dword::dw#2 dw zp[4]:2 2.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:10 0.8333333333333333
(byte*) print_line_cursor#20 print_line_cursor zp[2]:10 24.0
@@ -4602,7 +4602,7 @@ FINAL SYMBOL TABLE
(label) testChar::@return
(const byte) testChar::n = (byte) $e
(const signed byte) testChar::s = (signed byte) -$e
-(const string) testChar::str = (string) "char: "
+(const string) testChar::str[] = (string) "char: "
(const byte) testChar::u = (byte) $e
(void()) testInt()
(label) testInt::@1
@@ -4614,7 +4614,7 @@ FINAL SYMBOL TABLE
(label) testInt::@return
(const signed word) testInt::n = (signed word) -$578
(const signed word) testInt::s = (signed word) -$578
-(const string) testInt::str = (string) "int: "
+(const string) testInt::str[] = (string) "int: "
(const word) testInt::u = (word) $578
(void()) testLong()
(label) testLong::@1
@@ -4626,7 +4626,7 @@ FINAL SYMBOL TABLE
(label) testLong::@return
(const signed dword) testLong::n = (signed dword) -$222e0
(const signed dword) testLong::s = (signed dword) -$222e0
-(const string) testLong::str = (string) "long: "
+(const string) testLong::str[] = (string) "long: "
(const dword) testLong::u = (dword) $222e0
(void()) testShort()
(label) testShort::@1
@@ -4638,7 +4638,7 @@ FINAL SYMBOL TABLE
(label) testShort::@return
(const signed word) testShort::n = (signed word) -$578
(const signed word) testShort::s = (signed word) -$578
-(const string) testShort::str = (string) "short: "
+(const string) testShort::str[] = (string) "short: "
(const word) testShort::u = (word) $578
zp[4]:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
diff --git a/src/test/ref/c-types.sym b/src/test/ref/c-types.sym
index 650d5e48b..435770792 100644
--- a/src/test/ref/c-types.sym
+++ b/src/test/ref/c-types.sym
@@ -62,7 +62,7 @@
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:2 4.0
(dword) print_dword::dw#2 dw zp[4]:2 2.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:10 0.8333333333333333
(byte*) print_line_cursor#20 print_line_cursor zp[2]:10 24.0
@@ -123,7 +123,7 @@
(label) testChar::@return
(const byte) testChar::n = (byte) $e
(const signed byte) testChar::s = (signed byte) -$e
-(const string) testChar::str = (string) "char: "
+(const string) testChar::str[] = (string) "char: "
(const byte) testChar::u = (byte) $e
(void()) testInt()
(label) testInt::@1
@@ -135,7 +135,7 @@
(label) testInt::@return
(const signed word) testInt::n = (signed word) -$578
(const signed word) testInt::s = (signed word) -$578
-(const string) testInt::str = (string) "int: "
+(const string) testInt::str[] = (string) "int: "
(const word) testInt::u = (word) $578
(void()) testLong()
(label) testLong::@1
@@ -147,7 +147,7 @@
(label) testLong::@return
(const signed dword) testLong::n = (signed dword) -$222e0
(const signed dword) testLong::s = (signed dword) -$222e0
-(const string) testLong::str = (string) "long: "
+(const string) testLong::str[] = (string) "long: "
(const dword) testLong::u = (dword) $222e0
(void()) testShort()
(label) testShort::@1
@@ -159,7 +159,7 @@
(label) testShort::@return
(const signed word) testShort::n = (signed word) -$578
(const signed word) testShort::s = (signed word) -$578
-(const string) testShort::str = (string) "short: "
+(const string) testShort::str[] = (string) "short: "
(const word) testShort::u = (word) $578
zp[4]:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
diff --git a/src/test/ref/c64dtv-blitter-box.log b/src/test/ref/c64dtv-blitter-box.log
index 28a9b451a..cbde27f45 100644
--- a/src/test/ref/c64dtv-blitter-box.log
+++ b/src/test/ref/c64dtv-blitter-box.log
@@ -109,8 +109,8 @@ SYMBOL TABLE SSA
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) SRCA = (string) "camelot rules!"
-(const byte*) SRCB = { (byte)(number) $80 }
+(const byte*) SRCA[] = (string) "camelot rules!"
+(const byte*) SRCB[] = { (byte)(number) $80 }
(void()) main()
(byte~) main::$0
(bool~) main::$1
@@ -861,8 +861,8 @@ FINAL SYMBOL TABLE
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SRCA = (string) "camelot rules!"
-(const byte*) SRCB = { (byte) $80 }
+(const byte*) SRCA[] = (string) "camelot rules!"
+(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0 reg byte a 22.0
(label) main::@1
diff --git a/src/test/ref/c64dtv-blitter-box.sym b/src/test/ref/c64dtv-blitter-box.sym
index 28d3cf594..bb708cb2b 100644
--- a/src/test/ref/c64dtv-blitter-box.sym
+++ b/src/test/ref/c64dtv-blitter-box.sym
@@ -43,8 +43,8 @@
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SRCA = (string) "camelot rules!"
-(const byte*) SRCB = { (byte) $80 }
+(const byte*) SRCA[] = (string) "camelot rules!"
+(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0 reg byte a 22.0
(label) main::@1
diff --git a/src/test/ref/c64dtv-blittermin.log b/src/test/ref/c64dtv-blittermin.log
index 0084a82d1..f711b2e39 100644
--- a/src/test/ref/c64dtv-blittermin.log
+++ b/src/test/ref/c64dtv-blittermin.log
@@ -119,9 +119,9 @@ SYMBOL TABLE SSA
(const byte*) DTV_FEATURE = (byte*)(number) $d03f
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
+(const byte*) SRCA[] = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
(const byte) SRCA_LEN = (number) 9
-(const byte*) SRCB = { (byte)(number) $80 }
+(const byte*) SRCB[] = { (byte)(number) $80 }
(void()) main()
(byte~) main::$0
(bool~) main::$1
@@ -995,9 +995,9 @@ FINAL SYMBOL TABLE
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
+(const byte*) SRCA[] = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
(const byte) SRCA_LEN = (number) 9
-(const byte*) SRCB = { (byte) $80 }
+(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0 reg byte a 202.0
(label) main::@1
diff --git a/src/test/ref/c64dtv-blittermin.sym b/src/test/ref/c64dtv-blittermin.sym
index 4baca773b..c8f081979 100644
--- a/src/test/ref/c64dtv-blittermin.sym
+++ b/src/test/ref/c64dtv-blittermin.sym
@@ -43,9 +43,9 @@
(const byte*) DTV_FEATURE = (byte*) 53311
(const byte) DTV_FEATURE_ENABLE = (number) 1
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
+(const byte*) SRCA[] = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
(const byte) SRCA_LEN = (number) 9
-(const byte*) SRCB = { (byte) $80 }
+(const byte*) SRCB[] = { (byte) $80 }
(void()) main()
(byte~) main::$0 reg byte a 202.0
(label) main::@1
diff --git a/src/test/ref/c64dtv-color.log b/src/test/ref/c64dtv-color.log
index c8849d402..f38690f5b 100644
--- a/src/test/ref/c64dtv-color.log
+++ b/src/test/ref/c64dtv-color.log
@@ -96,7 +96,7 @@ SYMBOL TABLE SSA
(byte) main::c#0
(byte) main::c#1
(byte) main::c#2
-(const byte*) main::palette = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) $e, (byte)(number) $f }
+(const byte*) main::palette[(number) $10] = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) $e, (byte)(number) $f }
(byte) main::r
(byte) main::r#0
(byte) main::r#1
@@ -590,7 +590,7 @@ FINAL SYMBOL TABLE
(byte) main::c
(byte) main::c#1 reg byte x 151.5
(byte) main::c#2 reg byte x 201.99999999999997
-(const byte*) main::palette = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f }
+(const byte*) main::palette[(number) $10] = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f }
(byte) main::r
(byte) main::r#1 reg byte x 151.5
(byte) main::r#2 reg byte x 67.33333333333333
diff --git a/src/test/ref/c64dtv-color.sym b/src/test/ref/c64dtv-color.sym
index f13bbda3b..0a96d60ed 100644
--- a/src/test/ref/c64dtv-color.sym
+++ b/src/test/ref/c64dtv-color.sym
@@ -18,7 +18,7 @@
(byte) main::c
(byte) main::c#1 reg byte x 151.5
(byte) main::c#2 reg byte x 201.99999999999997
-(const byte*) main::palette = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f }
+(const byte*) main::palette[(number) $10] = { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $e, (byte) $f }
(byte) main::r
(byte) main::r#1 reg byte x 151.5
(byte) main::r#2 reg byte x 67.33333333333333
diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log
index b42639020..1901d873e 100644
--- a/src/test/ref/c64dtv-gfxexplorer.log
+++ b/src/test/ref/c64dtv-gfxexplorer.log
@@ -3641,7 +3641,7 @@ SYMBOL TABLE SSA
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte*) DTV_PALETTE = (byte*)(number) $d200
-(const byte*) DTV_PALETTE_DEFAULT = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a }
+(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*)(number) $d039
(const byte*) DTV_PLANEA_MODULO_LO = (byte*)(number) $d038
(const byte*) DTV_PLANEA_START_HI = (byte*)(number) $d045
@@ -3655,10 +3655,10 @@ SYMBOL TABLE SSA
(const byte*) DTV_PLANEB_START_MI = (byte*)(number) $d04a
(const byte*) DTV_PLANEB_STEP = (byte*)(number) $d04c
(const byte*) FORM_CHARSET = (byte*)(number) $1800
-(const byte*) FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
+(const byte*) FORM_COLS[] = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
(const signed byte) FORM_CURSOR_BLINK = (number) $28
(const byte*) FORM_SCREEN = (byte*)(number) $400
-(const byte*) FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
+(const byte*) FORM_TEXT[] = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
(const byte) KEY_COMMODORE = (number) $3d
(const byte) KEY_CRSR_DOWN = (number) 7
(const byte) KEY_CRSR_RIGHT = (number) 2
@@ -4259,11 +4259,11 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*)(number) $ff
@@ -4544,12 +4544,12 @@ SYMBOL TABLE SSA
(byte) form_field_ptr::y
(byte) form_field_ptr::y#0
(const byte) form_fields_cnt = (byte) $24
-(const byte*) form_fields_max = { (byte)(number) $a, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) 3, (byte)(number) 1, (byte)(number) 4, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f }
-(const byte*) form_fields_val = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) form_fields_x = { (byte)(number) 8, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25 }
-(const byte*) form_fields_y = { (byte)(number) 2, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) 5, (byte)(number) 6, (byte)(number) 6, (byte)(number) 7, (byte)(number) 7, (byte)(number) 8, (byte)(number) 8, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) $a, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e }
-(const byte*) form_line_hi = { fill( $19, 0) }
-(const byte*) form_line_lo = { fill( $19, 0) }
+(const byte*) form_fields_max[] = { (byte)(number) $a, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $d, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) 3, (byte)(number) 1, (byte)(number) 4, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f, (byte)(number) $f }
+(const byte*) form_fields_val[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) form_fields_x[] = { (byte)(number) 8, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $c, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $18, (byte)(number) $19, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25, (byte)(number) $24, (byte)(number) $25 }
+(const byte*) form_fields_y[] = { (byte)(number) 2, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) 8, (byte)(number) 9, (byte)(number) $a, (byte)(number) $b, (byte)(number) $c, (byte)(number) $d, (byte)(number) 5, (byte)(number) 6, (byte)(number) 6, (byte)(number) 7, (byte)(number) 7, (byte)(number) 8, (byte)(number) 8, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e, (byte)(number) 5, (byte)(number) 6, (byte)(number) 7, (byte)(number) $a, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $d, (byte)(number) $d, (byte)(number) $e, (byte)(number) $e }
+(const byte*) form_line_hi[(number) $19] = { fill( $19, 0) }
+(const byte*) form_line_lo[(number) $19] = { fill( $19, 0) }
(void()) form_mode()
(bool~) form_mode::$10
(byte~) form_mode::$11
@@ -5106,7 +5106,7 @@ SYMBOL TABLE SSA
(byte) gfx_init_plane_horisontal2::gfxbCpuBank#2
(byte) gfx_init_plane_horisontal2::row
(byte) gfx_init_plane_horisontal2::row#0
-(const byte*) gfx_init_plane_horisontal2::row_bitmask = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
+(const byte*) gfx_init_plane_horisontal2::row_bitmask[] = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
(void()) gfx_init_plane_vertical()
(bool~) gfx_init_plane_vertical::$2
(bool~) gfx_init_plane_vertical::$3
@@ -5291,8 +5291,8 @@ SYMBOL TABLE SSA
(byte) gfx_init_vic_bitmap::l#3
(byte) gfx_init_vic_bitmap::l#4
(const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9
-(const byte*) gfx_init_vic_bitmap::lines_x = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 }
-(const byte*) gfx_init_vic_bitmap::lines_y = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 }
+(const byte*) gfx_init_vic_bitmap::lines_x[] = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 }
+(const byte*) gfx_init_vic_bitmap::lines_y[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 }
(void()) gfx_mode()
(bool~) gfx_mode::$0
(bool~) gfx_mode::$1
@@ -5637,7 +5637,7 @@ SYMBOL TABLE SSA
(byte) keyboard_event_scan::row_scan#6
(byte) keyboard_event_scan::row_scan#7
(byte) keyboard_event_scan::row_scan#8
-(const byte*) keyboard_events = { fill( 8, 0) }
+(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#0
(byte) keyboard_events_size#1
@@ -5786,7 +5786,7 @@ SYMBOL TABLE SSA
(byte) keyboard_events_size#99
(void()) keyboard_init()
(label) keyboard_init::@return
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -5801,7 +5801,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(byte) keyboard_modifiers
(byte) keyboard_modifiers#0
(byte) keyboard_modifiers#1
@@ -5929,7 +5929,7 @@ SYMBOL TABLE SSA
(byte) keyboard_modifiers#97
(byte) keyboard_modifiers#98
(byte) keyboard_modifiers#99
-(const byte*) keyboard_scan_values = { fill( 8, 0) }
+(const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) }
(void()) main()
(label) main::@1
(label) main::@10
@@ -5980,17 +5980,17 @@ SYMBOL TABLE SSA
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
-(const byte*) preset_8bpppixelcell = { (byte)(number) $a, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_chunky = { (byte)(number) 7, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 6, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_ecmchar = { (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 0, (byte)(number) 5, (byte)(number) 0, (byte)(number) 6 }
-(const byte*) preset_hi_ecmchar = { (byte)(number) 5, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 8, (byte)(number) 9, (byte)(number) $c, (byte)(number) $c }
-(const byte*) preset_hi_stdchar = { (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_mcbm = { (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_sixsfred = { (byte)(number) 8, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_sixsfred2 = { (byte)(number) 9, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_stdbm = { (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_stdchar = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) preset_twoplane = { (byte)(number) 6, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 7, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 7, (byte)(number) 0, (byte)(number) $d, (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_8bpppixelcell[] = { (byte)(number) $a, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_chunky[] = { (byte)(number) 7, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 6, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_ecmchar[] = { (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 0, (byte)(number) 5, (byte)(number) 0, (byte)(number) 6 }
+(const byte*) preset_hi_ecmchar[] = { (byte)(number) 5, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 3, (byte)(number) 4, (byte)(number) 6, (byte)(number) 8, (byte)(number) 9, (byte)(number) $c, (byte)(number) $c }
+(const byte*) preset_hi_stdchar[] = { (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_mcbm[] = { (byte)(number) 3, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_sixsfred[] = { (byte)(number) 8, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_sixsfred2[] = { (byte)(number) 9, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 9, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) $a, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_stdbm[] = { (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 2, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_stdchar[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) preset_twoplane[] = { (byte)(number) 6, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 7, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 8, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 7, (byte)(number) 0, (byte)(number) $d, (byte)(number) 4, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
@@ -6062,7 +6062,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -6238,19 +6238,19 @@ SYMBOL TABLE SSA
(bool~) render_preset_name::$0
(bool~) render_preset_name::$1
(bool~) render_preset_name::$10
-(const string) render_preset_name::$12 = (string) "Standard Charset "
-(const string) render_preset_name::$13 = (string) "Extended Color Charset "
-(const string) render_preset_name::$14 = (string) "Standard Bitmap "
-(const string) render_preset_name::$15 = (string) "Multicolor Bitmap "
-(const string) render_preset_name::$16 = (string) "Hicolor Charset "
-(const string) render_preset_name::$17 = (string) "Hicolor Extended Color Charset"
-(const string) render_preset_name::$18 = (string) "Twoplane Bitmap "
-(const string) render_preset_name::$19 = (string) "Chunky 8bpp "
+(const string) render_preset_name::$12[] = (string) "Standard Charset "
+(const string) render_preset_name::$13[] = (string) "Extended Color Charset "
+(const string) render_preset_name::$14[] = (string) "Standard Bitmap "
+(const string) render_preset_name::$15[] = (string) "Multicolor Bitmap "
+(const string) render_preset_name::$16[] = (string) "Hicolor Charset "
+(const string) render_preset_name::$17[] = (string) "Hicolor Extended Color Charset"
+(const string) render_preset_name::$18[] = (string) "Twoplane Bitmap "
+(const string) render_preset_name::$19[] = (string) "Chunky 8bpp "
(bool~) render_preset_name::$2
-(const string) render_preset_name::$20 = (string) "Sixs Fred "
-(const string) render_preset_name::$21 = (string) "Sixs Fred 2 "
-(const string) render_preset_name::$22 = (string) "8bpp Pixel Cell "
-(const string) render_preset_name::$23 = (string) "Standard Charset "
+(const string) render_preset_name::$20[] = (string) "Sixs Fred "
+(const string) render_preset_name::$21[] = (string) "Sixs Fred 2 "
+(const string) render_preset_name::$22[] = (string) "8bpp Pixel Cell "
+(const string) render_preset_name::$23[] = (string) "Standard Charset "
(bool~) render_preset_name::$3
(bool~) render_preset_name::$4
(bool~) render_preset_name::$5
@@ -27674,7 +27674,7 @@ FINAL SYMBOL TABLE
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte*) DTV_PALETTE = (byte*) 53760
-(const byte*) DTV_PALETTE_DEFAULT = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
+(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
(const byte*) DTV_PLANEA_MODULO_LO = (byte*) 53304
(const byte*) DTV_PLANEA_START_HI = (byte*) 53317
@@ -27688,10 +27688,10 @@ FINAL SYMBOL TABLE
(const byte*) DTV_PLANEB_START_MI = (byte*) 53322
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) FORM_CHARSET = (byte*) 6144
-(const byte*) FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
+(const byte*) FORM_COLS[] = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
(const signed byte) FORM_CURSOR_BLINK = (number) $28
(const byte*) FORM_SCREEN = (byte*) 1024
-(const byte*) FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
+(const byte*) FORM_TEXT[] = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
(const byte) KEY_COMMODORE = (number) $3d
(const byte) KEY_CRSR_DOWN = (number) 7
(const byte) KEY_CRSR_RIGHT = (number) 2
@@ -28011,11 +28011,11 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte y 202.0
(byte) bitmap_plot::y#3 reg byte y 202.0
(byte) bitmap_plot::y#4 reg byte y 204.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255
@@ -28111,12 +28111,12 @@ FINAL SYMBOL TABLE
(byte) form_field_ptr::y
(byte) form_field_ptr::y#0 reg byte a 6.0
(const byte) form_fields_cnt = (byte) $24
-(const byte*) form_fields_max = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f }
-(const byte*) form_fields_val = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) form_fields_x = { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 }
-(const byte*) form_fields_y = { (byte) 2, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 7, (byte) 8, (byte) 8, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e, (byte) 5, (byte) 6, (byte) 7, (byte) $a, (byte) $b, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e }
-(const byte*) form_line_hi = { fill( $19, 0) }
-(const byte*) form_line_lo = { fill( $19, 0) }
+(const byte*) form_fields_max[] = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f }
+(const byte*) form_fields_val[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) form_fields_x[] = { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 }
+(const byte*) form_fields_y[] = { (byte) 2, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 7, (byte) 8, (byte) 8, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e, (byte) 5, (byte) 6, (byte) 7, (byte) $a, (byte) $b, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e }
+(const byte*) form_line_hi[(number) $19] = { fill( $19, 0) }
+(const byte*) form_line_lo[(number) $19] = { fill( $19, 0) }
(void()) form_mode()
(byte~) form_mode::$11 reg byte a 2002.0
(label) form_mode::@1
@@ -28412,7 +28412,7 @@ FINAL SYMBOL TABLE
(const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_HORISONTAL2/(word) $4000
(byte) gfx_init_plane_horisontal2::row
(byte) gfx_init_plane_horisontal2::row#0 reg byte a 202.0
-(const byte*) gfx_init_plane_horisontal2::row_bitmask = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
+(const byte*) gfx_init_plane_horisontal2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) gfx_init_plane_vertical()
(label) gfx_init_plane_vertical::@1
(label) gfx_init_plane_vertical::@2
@@ -28535,8 +28535,8 @@ FINAL SYMBOL TABLE
(byte) gfx_init_vic_bitmap::l#1 l zp[1]:8 22.0
(byte) gfx_init_vic_bitmap::l#2 l zp[1]:8 11.0
(const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9
-(const byte*) gfx_init_vic_bitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
-(const byte*) gfx_init_vic_bitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
+(const byte*) gfx_init_vic_bitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
+(const byte*) gfx_init_vic_bitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
(void()) gfx_mode()
(byte~) gfx_mode::$18 reg byte a 4.0
(dword~) gfx_mode::$20 zp[4]:2 4.0
@@ -28730,7 +28730,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_event_scan::row#2 row zp[1]:10 6000.24
(byte) keyboard_event_scan::row_scan
(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:31 12778.055555555557
-(const byte*) keyboard_events = { fill( 8, 0) }
+(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#1 keyboard_events_size zp[1]:8 200002.0
(byte) keyboard_events_size#100 keyboard_events_size zp[1]:8 882.6176470588235
@@ -28745,7 +28745,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_events_size#97 keyboard_events_size zp[1]:8 105.0
(void()) keyboard_init()
(label) keyboard_init::@return
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -28754,7 +28754,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 10003.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(byte) keyboard_modifiers
(byte) keyboard_modifiers#18 reg byte x 0.8
(byte) keyboard_modifiers#19 reg byte x 1.6
@@ -28763,7 +28763,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_modifiers#3 reg byte x 4.0
(byte) keyboard_modifiers#4 reg byte x 4.0
(byte) keyboard_modifiers#5 reg byte x 4.0
-(const byte*) keyboard_scan_values = { fill( 8, 0) }
+(const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) }
(void()) main()
(label) main::@1
(label) main::@2
@@ -28787,17 +28787,17 @@ FINAL SYMBOL TABLE
(void*) memset::return
(void*) memset::str
(void*) memset::str#0 str zp[2]:11 0.6666666666666666
-(const byte*) preset_8bpppixelcell = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_chunky = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_ecmchar = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 }
-(const byte*) preset_hi_ecmchar = { (byte) 5, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 3, (byte) 4, (byte) 6, (byte) 8, (byte) 9, (byte) $c, (byte) $c }
-(const byte*) preset_hi_stdchar = { (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_mcbm = { (byte) 3, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_sixsfred = { (byte) 8, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_sixsfred2 = { (byte) 9, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_stdbm = { (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_stdchar = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_twoplane = { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_8bpppixelcell[] = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_chunky[] = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_ecmchar[] = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 }
+(const byte*) preset_hi_ecmchar[] = { (byte) 5, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 3, (byte) 4, (byte) 6, (byte) 8, (byte) 9, (byte) $c, (byte) $c }
+(const byte*) preset_hi_stdchar[] = { (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_mcbm[] = { (byte) 3, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_sixsfred[] = { (byte) 8, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_sixsfred2[] = { (byte) 9, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_stdbm[] = { (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_stdchar[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_twoplane[] = { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 2002.0
(byte*) print_char_cursor#20 print_char_cursor zp[2]:11 821.0
@@ -28807,7 +28807,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#68 print_char_cursor zp[2]:11 202.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#2 print_line_cursor zp[2]:14 8.749999999999998
(byte*) print_line_cursor#21 print_line_cursor zp[2]:14 2004.0
diff --git a/src/test/ref/c64dtv-gfxexplorer.sym b/src/test/ref/c64dtv-gfxexplorer.sym
index 6338cabd8..3e0741a3e 100644
--- a/src/test/ref/c64dtv-gfxexplorer.sym
+++ b/src/test/ref/c64dtv-gfxexplorer.sym
@@ -29,7 +29,7 @@
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte*) DTV_PALETTE = (byte*) 53760
-(const byte*) DTV_PALETTE_DEFAULT = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
+(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
(const byte*) DTV_PLANEA_MODULO_LO = (byte*) 53304
(const byte*) DTV_PLANEA_START_HI = (byte*) 53317
@@ -43,10 +43,10 @@
(const byte*) DTV_PLANEB_START_MI = (byte*) 53322
(const byte*) DTV_PLANEB_STEP = (byte*) 53324
(const byte*) FORM_CHARSET = (byte*) 6144
-(const byte*) FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
+(const byte*) FORM_COLS[] = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm ooooooooo @ nnnnnnnnnnnn mmmmmmmmmm @ nnnnnnnnnnnn jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @ nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"
(const signed byte) FORM_CURSOR_BLINK = (number) $28
(const byte*) FORM_SCREEN = (byte*) 1024
-(const byte*) FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
+(const byte*) FORM_TEXT[] = (string) " C64 DTV Graphics Mode Explorer @ @ PRESET 0 Standard Charset @ @ CONTROL PLANE A VIC II @ bmm 0 pattern p0 screen s0 @ mcm 0 start 00 gfx g0 @ ecm 0 step 00 colors c0 @ hicolor 0 modulo 00 @ linear 0 COLORS @ color off 0 PLANE B palet 0 @ chunky 0 pattern p0 bgcol0 00 @ border off 0 start 00 bgcol1 00 @ overscan 0 step 00 bgcol2 00 @ modulo 00 bgcol3 00 @"
(const byte) KEY_COMMODORE = (number) $3d
(const byte) KEY_CRSR_DOWN = (number) 7
(const byte) KEY_CRSR_RIGHT = (number) 2
@@ -366,11 +366,11 @@
(byte) bitmap_plot::y#2 reg byte y 202.0
(byte) bitmap_plot::y#3 reg byte y 202.0
(byte) bitmap_plot::y#4 reg byte y 204.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255
@@ -466,12 +466,12 @@
(byte) form_field_ptr::y
(byte) form_field_ptr::y#0 reg byte a 6.0
(const byte) form_fields_cnt = (byte) $24
-(const byte*) form_fields_max = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f }
-(const byte*) form_fields_val = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) form_fields_x = { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 }
-(const byte*) form_fields_y = { (byte) 2, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 7, (byte) 8, (byte) 8, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e, (byte) 5, (byte) 6, (byte) 7, (byte) $a, (byte) $b, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e }
-(const byte*) form_line_hi = { fill( $19, 0) }
-(const byte*) form_line_lo = { fill( $19, 0) }
+(const byte*) form_fields_max[] = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f }
+(const byte*) form_fields_val[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) form_fields_x[] = { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 }
+(const byte*) form_fields_y[] = { (byte) 2, (byte) 5, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 7, (byte) 8, (byte) 8, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e, (byte) 5, (byte) 6, (byte) 7, (byte) $a, (byte) $b, (byte) $b, (byte) $c, (byte) $c, (byte) $d, (byte) $d, (byte) $e, (byte) $e }
+(const byte*) form_line_hi[(number) $19] = { fill( $19, 0) }
+(const byte*) form_line_lo[(number) $19] = { fill( $19, 0) }
(void()) form_mode()
(byte~) form_mode::$11 reg byte a 2002.0
(label) form_mode::@1
@@ -767,7 +767,7 @@
(const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfxbCpuBank = (byte)(const dword) PLANE_HORISONTAL2/(word) $4000
(byte) gfx_init_plane_horisontal2::row
(byte) gfx_init_plane_horisontal2::row#0 reg byte a 202.0
-(const byte*) gfx_init_plane_horisontal2::row_bitmask = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
+(const byte*) gfx_init_plane_horisontal2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) gfx_init_plane_vertical()
(label) gfx_init_plane_vertical::@1
(label) gfx_init_plane_vertical::@2
@@ -890,8 +890,8 @@
(byte) gfx_init_vic_bitmap::l#1 l zp[1]:8 22.0
(byte) gfx_init_vic_bitmap::l#2 l zp[1]:8 11.0
(const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9
-(const byte*) gfx_init_vic_bitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
-(const byte*) gfx_init_vic_bitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
+(const byte*) gfx_init_vic_bitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
+(const byte*) gfx_init_vic_bitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
(void()) gfx_mode()
(byte~) gfx_mode::$18 reg byte a 4.0
(dword~) gfx_mode::$20 zp[4]:2 4.0
@@ -1085,7 +1085,7 @@
(byte) keyboard_event_scan::row#2 row zp[1]:10 6000.24
(byte) keyboard_event_scan::row_scan
(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:31 12778.055555555557
-(const byte*) keyboard_events = { fill( 8, 0) }
+(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#1 keyboard_events_size zp[1]:8 200002.0
(byte) keyboard_events_size#100 keyboard_events_size zp[1]:8 882.6176470588235
@@ -1100,7 +1100,7 @@
(byte) keyboard_events_size#97 keyboard_events_size zp[1]:8 105.0
(void()) keyboard_init()
(label) keyboard_init::@return
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -1109,7 +1109,7 @@
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 10003.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(byte) keyboard_modifiers
(byte) keyboard_modifiers#18 reg byte x 0.8
(byte) keyboard_modifiers#19 reg byte x 1.6
@@ -1118,7 +1118,7 @@
(byte) keyboard_modifiers#3 reg byte x 4.0
(byte) keyboard_modifiers#4 reg byte x 4.0
(byte) keyboard_modifiers#5 reg byte x 4.0
-(const byte*) keyboard_scan_values = { fill( 8, 0) }
+(const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) }
(void()) main()
(label) main::@1
(label) main::@2
@@ -1142,17 +1142,17 @@
(void*) memset::return
(void*) memset::str
(void*) memset::str#0 str zp[2]:11 0.6666666666666666
-(const byte*) preset_8bpppixelcell = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_chunky = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_ecmchar = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 }
-(const byte*) preset_hi_ecmchar = { (byte) 5, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 3, (byte) 4, (byte) 6, (byte) 8, (byte) 9, (byte) $c, (byte) $c }
-(const byte*) preset_hi_stdchar = { (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_mcbm = { (byte) 3, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_sixsfred = { (byte) 8, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_sixsfred2 = { (byte) 9, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_stdbm = { (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_stdchar = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) preset_twoplane = { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_8bpppixelcell[] = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_chunky[] = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_ecmchar[] = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 }
+(const byte*) preset_hi_ecmchar[] = { (byte) 5, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 3, (byte) 4, (byte) 6, (byte) 8, (byte) 9, (byte) $c, (byte) $c }
+(const byte*) preset_hi_stdchar[] = { (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_mcbm[] = { (byte) 3, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_sixsfred[] = { (byte) 8, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_sixsfred2[] = { (byte) 9, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 9, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $a, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_stdbm[] = { (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_stdchar[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) preset_twoplane[] = { (byte) 6, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 7, (byte) 0, (byte) $d, (byte) 4, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:11 2002.0
(byte*) print_char_cursor#20 print_char_cursor zp[2]:11 821.0
@@ -1162,7 +1162,7 @@
(byte*) print_char_cursor#68 print_char_cursor zp[2]:11 202.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#2 print_line_cursor zp[2]:14 8.749999999999998
(byte*) print_line_cursor#21 print_line_cursor zp[2]:14 2004.0
diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log
index 68004110b..b30416120 100644
--- a/src/test/ref/c64dtv-gfxmodes.log
+++ b/src/test/ref/c64dtv-gfxmodes.log
@@ -3086,7 +3086,7 @@ SYMBOL TABLE SSA
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte*) DTV_PALETTE = (byte*)(number) $d200
-(const byte*) DTV_PALETTE_DEFAULT = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a }
+(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte)(number) 0, (byte)(number) $f, (byte)(number) $36, (byte)(number) $be, (byte)(number) $58, (byte)(number) $db, (byte)(number) $86, (byte)(number) $ff, (byte)(number) $29, (byte)(number) $26, (byte)(number) $3b, (byte)(number) 5, (byte)(number) 7, (byte)(number) $df, (byte)(number) $9a, (byte)(number) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*)(number) $d039
(const byte*) DTV_PLANEA_MODULO_LO = (byte*)(number) $d038
(const byte*) DTV_PLANEA_START_HI = (byte*)(number) $d045
@@ -3119,7 +3119,7 @@ SYMBOL TABLE SSA
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_U = (number) $1e
(const byte) LIGHT_GREEN = (number) $d
-(const byte*) MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
+(const byte*) MENU_TEXT[] = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) PROCPORT_DDR = (byte*)(number) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
@@ -3619,11 +3619,11 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*)(number) $ff
@@ -4002,7 +4002,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -4017,7 +4017,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) main()
(label) main::@1
(label) main::@2
@@ -4766,7 +4766,7 @@ SYMBOL TABLE SSA
(byte) mode_sixsfred::i#2
(byte) mode_sixsfred::row
(byte) mode_sixsfred::row#0
-(const byte*) mode_sixsfred::row_bitmask = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
+(const byte*) mode_sixsfred::row_bitmask[] = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
(void()) mode_sixsfred2()
(bool~) mode_sixsfred2::$1
(bool~) mode_sixsfred2::$10
@@ -4854,7 +4854,7 @@ SYMBOL TABLE SSA
(byte) mode_sixsfred2::i#2
(byte) mode_sixsfred2::row
(byte) mode_sixsfred2::row#0
-(const byte*) mode_sixsfred2::row_bitmask = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
+(const byte*) mode_sixsfred2::row_bitmask[] = { (byte)(number) 0, (byte)(number) $55, (byte)(number) $aa, (byte)(number) $ff }
(void()) mode_stdbitmap()
(bool~) mode_stdbitmap::$10
(bool~) mode_stdbitmap::$11
@@ -4914,8 +4914,8 @@ SYMBOL TABLE SSA
(byte) mode_stdbitmap::l#3
(byte) mode_stdbitmap::l#4
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
-(const byte*) mode_stdbitmap::lines_x = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 }
-(const byte*) mode_stdbitmap::lines_y = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 }
+(const byte*) mode_stdbitmap::lines_x[] = { (byte)(number) 0, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) $ff, (byte)(number) $80, (byte)(number) 0, (byte)(number) $80 }
+(const byte*) mode_stdbitmap::lines_y[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) $c7, (byte)(number) $c7, (byte)(number) 0, (byte)(number) 0, (byte)(number) $64, (byte)(number) $c7, (byte)(number) $64, (byte)(number) 0 }
(void()) mode_stdchar()
(bool~) mode_stdchar::$1
(byte~) mode_stdchar::$2
@@ -24729,7 +24729,7 @@ FINAL SYMBOL TABLE
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte*) DTV_PALETTE = (byte*) 53760
-(const byte*) DTV_PALETTE_DEFAULT = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
+(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
(const byte*) DTV_PLANEA_MODULO_LO = (byte*) 53304
(const byte*) DTV_PLANEA_START_HI = (byte*) 53317
@@ -24762,7 +24762,7 @@ FINAL SYMBOL TABLE
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_U = (number) $1e
(const byte) LIGHT_GREEN = (number) $d
-(const byte*) MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
+(const byte*) MENU_TEXT[] = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
@@ -25032,11 +25032,11 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte y 2002.0
(byte) bitmap_plot::y#3 reg byte y 2002.0
(byte) bitmap_plot::y#4 reg byte y 2004.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255
@@ -25079,7 +25079,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#30 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -25088,7 +25088,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(label) main::@1
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
@@ -25546,7 +25546,7 @@ FINAL SYMBOL TABLE
(byte) mode_sixsfred::i#2 reg byte x 202.0
(byte) mode_sixsfred::row
(byte) mode_sixsfred::row#0 reg byte a 2002.0
-(const byte*) mode_sixsfred::row_bitmask = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
+(const byte*) mode_sixsfred::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) mode_sixsfred2()
(byte~) mode_sixsfred2::$2 reg byte a 2002.0
(byte~) mode_sixsfred2::$3 zp[1]:7 1001.0
@@ -25604,7 +25604,7 @@ FINAL SYMBOL TABLE
(byte) mode_sixsfred2::i#2 reg byte x 202.0
(byte) mode_sixsfred2::row
(byte) mode_sixsfred2::row#0 reg byte a 2002.0
-(const byte*) mode_sixsfred2::row_bitmask = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
+(const byte*) mode_sixsfred2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) mode_stdbitmap()
(byte~) mode_stdbitmap::$4 reg byte a 2002.0
(byte~) mode_stdbitmap::$7 reg byte a 2002.0
@@ -25644,8 +25644,8 @@ FINAL SYMBOL TABLE
(byte) mode_stdbitmap::l#1 l zp[1]:14 202.0
(byte) mode_stdbitmap::l#2 l zp[1]:14 101.0
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
-(const byte*) mode_stdbitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
-(const byte*) mode_stdbitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
+(const byte*) mode_stdbitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
+(const byte*) mode_stdbitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
(void()) mode_stdchar()
(byte~) mode_stdchar::$2 reg byte a 2002.0
(byte~) mode_stdchar::$3 reg byte a 2002.0
diff --git a/src/test/ref/c64dtv-gfxmodes.sym b/src/test/ref/c64dtv-gfxmodes.sym
index 0ae5783c8..02f8bab02 100644
--- a/src/test/ref/c64dtv-gfxmodes.sym
+++ b/src/test/ref/c64dtv-gfxmodes.sym
@@ -28,7 +28,7 @@
(const byte) DTV_LINEAR = (number) 1
(const byte) DTV_OVERSCAN = (number) 8
(const byte*) DTV_PALETTE = (byte*) 53760
-(const byte*) DTV_PALETTE_DEFAULT = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
+(const byte*) DTV_PALETTE_DEFAULT[(number) $10] = { (byte) 0, (byte) $f, (byte) $36, (byte) $be, (byte) $58, (byte) $db, (byte) $86, (byte) $ff, (byte) $29, (byte) $26, (byte) $3b, (byte) 5, (byte) 7, (byte) $df, (byte) $9a, (byte) $a }
(const byte*) DTV_PLANEA_MODULO_HI = (byte*) 53305
(const byte*) DTV_PLANEA_MODULO_LO = (byte*) 53304
(const byte*) DTV_PLANEA_START_HI = (byte*) 53317
@@ -61,7 +61,7 @@
(const byte) KEY_SPACE = (number) $3c
(const byte) KEY_U = (number) $1e
(const byte) LIGHT_GREEN = (number) $d
-(const byte*) MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
+(const byte*) MENU_TEXT[] = (string) "C64DTV Graphics Modes CCLHBME@ OHIIMCC@ LUNCMMM@----------------------------------------@1. Standard Char (V) 0000000@2. Extended Color Char (V) 0000001@3. Multicolor Char (V) 0000010@4. Standard Bitmap (V) 0000100@5. Multicolor Bitmap (V) 0000110@6. High Color Standard Char (H) 0001000@7. High Extended Color Char (H) 0001001@8. High Multicolor Char (H) 0001010@9. High Multicolor Bitmap (H) 0001110@a. Sixs Fred 2 (D) 0010111@b. Two Plane Bitmap (D) 0011101@c. Sixs Fred (2 Plane MC BM) (D) 0011111@d. 8bpp Pixel Cell (D) 0111011@e. Chunky 8bpp Bitmap (D) 1111011@----------------------------------------@ (V) vicII (H) vicII+hicol (D) c64dtv@"
(const byte*) PROCPORT = (byte*) 1
(const byte*) PROCPORT_DDR = (byte*) 0
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
@@ -331,11 +331,11 @@
(byte) bitmap_plot::y#2 reg byte y 2002.0
(byte) bitmap_plot::y#3 reg byte y 2002.0
(byte) bitmap_plot::y#4 reg byte y 2004.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(const byte*) dtvSetCpuBankSegment1::cpuBank = (byte*) 255
@@ -378,7 +378,7 @@
(byte) keyboard_key_pressed::return#30 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -387,7 +387,7 @@
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(label) main::@1
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
@@ -845,7 +845,7 @@
(byte) mode_sixsfred::i#2 reg byte x 202.0
(byte) mode_sixsfred::row
(byte) mode_sixsfred::row#0 reg byte a 2002.0
-(const byte*) mode_sixsfred::row_bitmask = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
+(const byte*) mode_sixsfred::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) mode_sixsfred2()
(byte~) mode_sixsfred2::$2 reg byte a 2002.0
(byte~) mode_sixsfred2::$3 zp[1]:7 1001.0
@@ -903,7 +903,7 @@
(byte) mode_sixsfred2::i#2 reg byte x 202.0
(byte) mode_sixsfred2::row
(byte) mode_sixsfred2::row#0 reg byte a 2002.0
-(const byte*) mode_sixsfred2::row_bitmask = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
+(const byte*) mode_sixsfred2::row_bitmask[] = { (byte) 0, (byte) $55, (byte) $aa, (byte) $ff }
(void()) mode_stdbitmap()
(byte~) mode_stdbitmap::$4 reg byte a 2002.0
(byte~) mode_stdbitmap::$7 reg byte a 2002.0
@@ -943,8 +943,8 @@
(byte) mode_stdbitmap::l#1 l zp[1]:14 202.0
(byte) mode_stdbitmap::l#2 l zp[1]:14 101.0
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
-(const byte*) mode_stdbitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
-(const byte*) mode_stdbitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
+(const byte*) mode_stdbitmap::lines_x[] = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
+(const byte*) mode_stdbitmap::lines_y[] = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
(void()) mode_stdchar()
(byte~) mode_stdchar::$2 reg byte a 2002.0
(byte~) mode_stdchar::$3 reg byte a 2002.0
diff --git a/src/test/ref/cast-deref.log b/src/test/ref/cast-deref.log
index d092778f7..8b1829367 100644
--- a/src/test/ref/cast-deref.log
+++ b/src/test/ref/cast-deref.log
@@ -42,7 +42,7 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const signed byte*) main::sbs = { (signed byte)(number) -1, (signed byte)(number) -2, (signed byte)(number) -3, (signed byte)(number) -4 }
+(const signed byte*) main::sbs[] = { (signed byte)(number) -1, (signed byte)(number) -2, (signed byte)(number) -3, (signed byte)(number) -4 }
Inlining cast (byte~) main::$0 ← (byte)*((const signed byte*) main::sbs + (byte) main::i#2)
Successful SSA optimization Pass2InlineCast
@@ -291,7 +291,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 16.5
-(const signed byte*) main::sbs = { (signed byte) -1, (signed byte) -2, (signed byte) -3, (signed byte) -4 }
+(const signed byte*) main::sbs[] = { (signed byte) -1, (signed byte) -2, (signed byte) -3, (signed byte) -4 }
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/cast-deref.sym b/src/test/ref/cast-deref.sym
index 92a83e44f..2807b6382 100644
--- a/src/test/ref/cast-deref.sym
+++ b/src/test/ref/cast-deref.sym
@@ -8,6 +8,6 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 16.5
-(const signed byte*) main::sbs = { (signed byte) -1, (signed byte) -2, (signed byte) -3, (signed byte) -4 }
+(const signed byte*) main::sbs[] = { (signed byte) -1, (signed byte) -2, (signed byte) -3, (signed byte) -4 }
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/cast-not-needed-2.log b/src/test/ref/cast-not-needed-2.log
index 93187203c..e04b004df 100644
--- a/src/test/ref/cast-not-needed-2.log
+++ b/src/test/ref/cast-not-needed-2.log
@@ -93,7 +93,7 @@ SYMBOL TABLE SSA
(byte*) main::spritePtr1_screen
(byte*) main::spritePtr1_screen#0
(byte*) main::spritePtr1_screen#1
-(const byte**) screens = { (byte*)(number) $400, (byte*)(number) $1400 }
+(const byte**) screens[] = { (byte*)(number) $400, (byte*)(number) $1400 }
Adding number conversion cast (unumber) 0 in (byte) main::getScreen1_id#0 ← (number) 0
Adding number conversion cast (unumber) $378 in (byte*~) main::spritePtr1_$0 ← (byte*) main::spritePtr1_screen#1 + (number) $378
@@ -391,7 +391,7 @@ FINAL SYMBOL TABLE
(byte*) main::spritePtr1_return
(byte*) main::spritePtr1_return#0 spritePtr1_return zp[2]:2 4.0
(byte*) main::spritePtr1_screen
-(const byte**) screens = { (byte*) 1024, (byte*) 5120 }
+(const byte**) screens[] = { (byte*) 1024, (byte*) 5120 }
zp[2]:2 [ main::getScreen1_return#0 main::spritePtr1_return#0 ]
diff --git a/src/test/ref/cast-not-needed-2.sym b/src/test/ref/cast-not-needed-2.sym
index 6cfd8762a..22b638a2d 100644
--- a/src/test/ref/cast-not-needed-2.sym
+++ b/src/test/ref/cast-not-needed-2.sym
@@ -13,6 +13,6 @@
(byte*) main::spritePtr1_return
(byte*) main::spritePtr1_return#0 spritePtr1_return zp[2]:2 4.0
(byte*) main::spritePtr1_screen
-(const byte**) screens = { (byte*) 1024, (byte*) 5120 }
+(const byte**) screens[] = { (byte*) 1024, (byte*) 5120 }
zp[2]:2 [ main::getScreen1_return#0 main::spritePtr1_return#0 ]
diff --git a/src/test/ref/cast-not-needed-3.log b/src/test/ref/cast-not-needed-3.log
index b3a7bc953..cba704caa 100644
--- a/src/test/ref/cast-not-needed-3.log
+++ b/src/test/ref/cast-not-needed-3.log
@@ -90,7 +90,7 @@ SYMBOL TABLE SSA
(byte*) main::spritePtr1_screen
(byte*) main::spritePtr1_screen#0
(byte*) main::spritePtr1_screen#1
-(const byte**) screens = { (byte*)(number) $400, (byte*)(number) $1400 }
+(const byte**) screens[] = { (byte*)(number) $400, (byte*)(number) $1400 }
Adding number conversion cast (unumber) 0 in (byte) main::getScreen1_id#0 ← (number) 0
Adding number conversion cast (unumber) $378 in (byte*~) main::spritePtr1_$0 ← (byte*) main::spritePtr1_screen#1 + (number) $378
@@ -400,7 +400,7 @@ FINAL SYMBOL TABLE
(byte) main::spritePtr1_return
(byte) main::spritePtr1_return#0 reg byte a 4.0
(byte*) main::spritePtr1_screen
-(const byte**) screens = { (byte*) 1024, (byte*) 5120 }
+(const byte**) screens[] = { (byte*) 1024, (byte*) 5120 }
zp[2]:2 [ main::getScreen1_return#0 main::spritePtr1_$0 ]
reg byte a [ main::spritePtr1_return#0 ]
diff --git a/src/test/ref/cast-not-needed-3.sym b/src/test/ref/cast-not-needed-3.sym
index b9ffc79ff..c56ea9e18 100644
--- a/src/test/ref/cast-not-needed-3.sym
+++ b/src/test/ref/cast-not-needed-3.sym
@@ -14,7 +14,7 @@
(byte) main::spritePtr1_return
(byte) main::spritePtr1_return#0 reg byte a 4.0
(byte*) main::spritePtr1_screen
-(const byte**) screens = { (byte*) 1024, (byte*) 5120 }
+(const byte**) screens[] = { (byte*) 1024, (byte*) 5120 }
zp[2]:2 [ main::getScreen1_return#0 main::spritePtr1_$0 ]
reg byte a [ main::spritePtr1_return#0 ]
diff --git a/src/test/ref/cia-timer-cyclecount.log b/src/test/ref/cia-timer-cyclecount.log
index 408fea94c..f9eadf3c9 100644
--- a/src/test/ref/cia-timer-cyclecount.log
+++ b/src/test/ref/cia-timer-cyclecount.log
@@ -286,7 +286,7 @@ SYMBOL TABLE SSA
(dword) print_dword_at::dw#0
(dword) print_dword_at::dw#1
(dword) print_dword_at::dw#2
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(byte~) print_word_at::$0
(byte~) print_word_at::$2
@@ -1461,7 +1461,7 @@ FINAL SYMBOL TABLE
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp[4]:9 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
diff --git a/src/test/ref/cia-timer-cyclecount.sym b/src/test/ref/cia-timer-cyclecount.sym
index 9ba869372..8895aaacb 100644
--- a/src/test/ref/cia-timer-cyclecount.sym
+++ b/src/test/ref/cia-timer-cyclecount.sym
@@ -55,7 +55,7 @@
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp[4]:9 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
diff --git a/src/test/ref/cia-timer-simple.log b/src/test/ref/cia-timer-simple.log
index 736579699..6d5b2ca77 100644
--- a/src/test/ref/cia-timer-simple.log
+++ b/src/test/ref/cia-timer-simple.log
@@ -279,7 +279,7 @@ SYMBOL TABLE SSA
(dword) print_dword_at::dw#0
(dword) print_dword_at::dw#1
(dword) print_dword_at::dw#2
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(byte~) print_word_at::$0
(byte~) print_word_at::$2
@@ -1368,7 +1368,7 @@ FINAL SYMBOL TABLE
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp[4]:9 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
diff --git a/src/test/ref/cia-timer-simple.sym b/src/test/ref/cia-timer-simple.sym
index ad75cbc08..3d57df4ef 100644
--- a/src/test/ref/cia-timer-simple.sym
+++ b/src/test/ref/cia-timer-simple.sym
@@ -50,7 +50,7 @@
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp[4]:9 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
diff --git a/src/test/ref/comparison-rewriting.log b/src/test/ref/comparison-rewriting.log
index 25d4cec02..71524071c 100644
--- a/src/test/ref/comparison-rewriting.log
+++ b/src/test/ref/comparison-rewriting.log
@@ -167,7 +167,7 @@ SYMBOL TABLE SSA
(label) main::@5
(label) main::@9
(label) main::@return
-(const byte*) main::header = (string) " < <= == >= >"
+(const byte*) main::header[] = (string) " < <= == >= >"
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@@ -1021,7 +1021,7 @@ FINAL SYMBOL TABLE
(label) main::@8
(label) main::@9
(label) main::@return
-(const byte*) main::header = (string) " < <= == >= >"
+(const byte*) main::header[] = (string) " < <= == >= >"
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
diff --git a/src/test/ref/comparison-rewriting.sym b/src/test/ref/comparison-rewriting.sym
index 2c976f2e7..263532c7a 100644
--- a/src/test/ref/comparison-rewriting.sym
+++ b/src/test/ref/comparison-rewriting.sym
@@ -19,7 +19,7 @@
(label) main::@8
(label) main::@9
(label) main::@return
-(const byte*) main::header = (string) " < <= == >= >"
+(const byte*) main::header[] = (string) " < <= == >= >"
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
diff --git a/src/test/ref/complex/ataritempest/ataritempest.log b/src/test/ref/complex/ataritempest/ataritempest.log
index da75d7b17..d56164a66 100644
--- a/src/test/ref/complex/ataritempest/ataritempest.log
+++ b/src/test/ref/complex/ataritempest/ataritempest.log
@@ -50,9 +50,9 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*)(number) $c01a
-(const byte*) MESSAGE = (string) "hello world"
-(const byte*) SCREEN = { fill( $32, 0) }
-(const void()**) VECTORS = { &interrupt(HARDWARE_ALL)(void()) nmiHandler(), &(void()) entryPoint() }
+(const byte*) MESSAGE[] = (string) "hello world"
+(const byte*) SCREEN[(number) $32] = { fill( $32, 0) }
+(const void()**) VECTORS[] = { &interrupt(HARDWARE_ALL)(void()) nmiHandler(), &(void()) entryPoint() }
(void()) entryPoint()
(bool~) entryPoint::$0
(label) entryPoint::@1
@@ -408,9 +408,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 49178
-(const byte*) MESSAGE = (string) "hello world"
-(const byte*) SCREEN = { fill( $32, 0) }
-(const void()**) VECTORS = { &interrupt(HARDWARE_ALL)(void()) nmiHandler(), &(void()) entryPoint() }
+(const byte*) MESSAGE[] = (string) "hello world"
+(const byte*) SCREEN[(number) $32] = { fill( $32, 0) }
+(const void()**) VECTORS[] = { &interrupt(HARDWARE_ALL)(void()) nmiHandler(), &(void()) entryPoint() }
(void()) entryPoint()
(label) entryPoint::@1
(label) entryPoint::@return
diff --git a/src/test/ref/complex/ataritempest/ataritempest.sym b/src/test/ref/complex/ataritempest/ataritempest.sym
index 036ab2490..26f1b7b56 100644
--- a/src/test/ref/complex/ataritempest/ataritempest.sym
+++ b/src/test/ref/complex/ataritempest/ataritempest.sym
@@ -2,9 +2,9 @@
(label) @begin
(label) @end
(const byte*) BGCOL = (byte*) 49178
-(const byte*) MESSAGE = (string) "hello world"
-(const byte*) SCREEN = { fill( $32, 0) }
-(const void()**) VECTORS = { &interrupt(HARDWARE_ALL)(void()) nmiHandler(), &(void()) entryPoint() }
+(const byte*) MESSAGE[] = (string) "hello world"
+(const byte*) SCREEN[(number) $32] = { fill( $32, 0) }
+(const void()**) VECTORS[] = { &interrupt(HARDWARE_ALL)(void()) nmiHandler(), &(void()) entryPoint() }
(void()) entryPoint()
(label) entryPoint::@1
(label) entryPoint::@return
diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log
index 43c635c32..333c24ec3 100644
--- a/src/test/ref/complex/clearscreen/clearscreen.log
+++ b/src/test/ref/complex/clearscreen/clearscreen.log
@@ -1262,7 +1262,7 @@ SYMBOL TABLE SSA
(const byte*) CIA1_INTERRUPT = (byte*)(number) $dc0d
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const byte*) COLS = (byte*)(number) $d800
-(const word*) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -8693,7 +8693,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$15 reg byte a 22.0
(byte~) main::$17 reg byte a 22.0
@@ -8829,10 +8829,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) prepareBobs()
(byte~) prepareBobs::$6 reg byte a 2002.0
(label) prepareBobs::@1
@@ -8885,7 +8885,7 @@ FINAL SYMBOL TABLE
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
diff --git a/src/test/ref/complex/prebob/grid-bobs.sym b/src/test/ref/complex/prebob/grid-bobs.sym
index 90c6475ec..3c7d3fb25 100644
--- a/src/test/ref/complex/prebob/grid-bobs.sym
+++ b/src/test/ref/complex/prebob/grid-bobs.sym
@@ -8,7 +8,7 @@
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
-(const byte*) BOB_TABLES = { fill( 9*8*4, 0) }
+(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CIA1_PORT_A = (byte*) 56320
(const byte*) CIA1_PORT_B = (byte*) 56321
@@ -16,9 +16,9 @@
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
-(const word*) MUL40 = { fill( $20, 0) }
+(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $19
-(const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
.byte pic.getSinglecolorByte(x,y)
@@ -28,7 +28,7 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
-(const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) }
+(const byte**) RENDERBOB_CLEANUP[(const byte) NUM_BOBS] = { fill( NUM_BOBS, 0) }
(const byte) SIZEOF_POINTER = (byte) 2
(byte) bob_charset_next_id
(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:14 12.0
@@ -81,7 +81,7 @@
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -89,7 +89,7 @@
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$15 reg byte a 22.0
(byte~) main::$17 reg byte a 22.0
@@ -225,10 +225,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) prepareBobs()
(byte~) prepareBobs::$6 reg byte a 2002.0
(label) prepareBobs::@1
@@ -281,7 +281,7 @@
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
diff --git a/src/test/ref/complex/prebob/vogel-bobs.log b/src/test/ref/complex/prebob/vogel-bobs.log
index b9c21bbbf..a5fd20350 100644
--- a/src/test/ref/complex/prebob/vogel-bobs.log
+++ b/src/test/ref/complex/prebob/vogel-bobs.log
@@ -1408,7 +1408,7 @@ SYMBOL TABLE SSA
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
-(const byte*) BOB_TABLES = { fill( 9*8*4, 0) }
+(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) CHARSET_BASIC = (byte*)(number) $1000
(const byte*) CIA1_PORT_A = (byte*)(number) $dc00
@@ -1418,9 +1418,9 @@ SYMBOL TABLE SSA
(const signed byte*) COS = (const signed byte*) SIN+(number) $40
(const byte*) D018 = (byte*)(number) $d018
(const byte) KEY_SPACE = (number) $3c
-(const word*) MUL40 = { fill( $20, 0) }
+(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $14
-(const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
.byte pic.getSinglecolorByte(x,y)
@@ -1430,9 +1430,9 @@ SYMBOL TABLE SSA
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
-(const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) }
+(const byte**) RENDERBOB_CLEANUP[(const byte) NUM_BOBS] = { fill( NUM_BOBS, 0) }
(const byte*) SCREEN_BASIC = (byte*)(number) $400
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_POINTER = (byte) 2
@@ -1633,7 +1633,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#6
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1648,7 +1648,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) main()
(signed word~) main::$10
(number~) main::$11
@@ -2031,10 +2031,10 @@ SYMBOL TABLE SSA
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(byte) mulf_init::x_255#5
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) prepareBobs()
(bool~) prepareBobs::$2
(bool~) prepareBobs::$3
@@ -2270,7 +2270,7 @@ SYMBOL TABLE SSA
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
@@ -9483,7 +9483,7 @@ FINAL SYMBOL TABLE
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
-(const byte*) BOB_TABLES = { fill( 9*8*4, 0) }
+(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CHARSET_BASIC = (byte*) 4096
(const byte*) CIA1_PORT_A = (byte*) 56320
@@ -9493,9 +9493,9 @@ FINAL SYMBOL TABLE
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
-(const word*) MUL40 = { fill( $20, 0) }
+(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $14
-(const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
.byte pic.getSinglecolorByte(x,y)
@@ -9505,9 +9505,9 @@ FINAL SYMBOL TABLE
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
-(const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) }
+(const byte**) RENDERBOB_CLEANUP[(const byte) NUM_BOBS] = { fill( NUM_BOBS, 0) }
(const byte*) SCREEN_BASIC = (byte*) 1024
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_POINTER = (byte) 2
@@ -9561,7 +9561,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -9569,7 +9569,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(signed word~) main::$10 zp[2]:11 202.0
(signed word~) main::$12 zp[2]:11 202.0
@@ -9747,10 +9747,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) prepareBobs()
(byte~) prepareBobs::$6 reg byte a 2002.0
(label) prepareBobs::@1
@@ -9803,7 +9803,7 @@ FINAL SYMBOL TABLE
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
diff --git a/src/test/ref/complex/prebob/vogel-bobs.sym b/src/test/ref/complex/prebob/vogel-bobs.sym
index a9f318f62..ba7e7d648 100644
--- a/src/test/ref/complex/prebob/vogel-bobs.sym
+++ b/src/test/ref/complex/prebob/vogel-bobs.sym
@@ -6,7 +6,7 @@
(const byte) BOB_SHIFTS_X = (number) 4
(const byte) BOB_SHIFTS_Y = (number) 8
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
-(const byte*) BOB_TABLES = { fill( 9*8*4, 0) }
+(const byte*) BOB_TABLES[(number) 9*(number) 8*(number) 4] = { fill( 9*8*4, 0) }
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CHARSET_BASIC = (byte*) 4096
(const byte*) CIA1_PORT_A = (byte*) 56320
@@ -16,9 +16,9 @@
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
(const byte*) D018 = (byte*) 53272
(const byte) KEY_SPACE = (number) $3c
-(const word*) MUL40 = { fill( $20, 0) }
+(const word*) MUL40[(number) $20] = { fill( $20, 0) }
(const byte) NUM_BOBS = (number) $14
-(const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) PROTO_BOB[(number) 3*(number) 3*(number) 8] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var x=0;x<3; x++)
.for (var y=0; y<24; y++)
.byte pic.getSinglecolorByte(x,y)
@@ -28,9 +28,9 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
-(const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) }
+(const byte**) RENDERBOB_CLEANUP[(const byte) NUM_BOBS] = { fill( NUM_BOBS, 0) }
(const byte*) SCREEN_BASIC = (byte*) 1024
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_POINTER = (byte) 2
@@ -84,7 +84,7 @@
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -92,7 +92,7 @@
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(signed word~) main::$10 zp[2]:11 202.0
(signed word~) main::$12 zp[2]:11 202.0
@@ -270,10 +270,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) prepareBobs()
(byte~) prepareBobs::$6 reg byte a 2002.0
(label) prepareBobs::@1
@@ -326,7 +326,7 @@
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
diff --git a/src/test/ref/complex/prebob/vogel-sprites.log b/src/test/ref/complex/prebob/vogel-sprites.log
index 6c04e0706..ff18c05ed 100644
--- a/src/test/ref/complex/prebob/vogel-sprites.log
+++ b/src/test/ref/complex/prebob/vogel-sprites.log
@@ -1040,8 +1040,8 @@ SYMBOL TABLE SSA
(const byte) KEY_SPACE = (number) $3c
(const byte) NUM_BOBS = (number) $10
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(byte*) PLEX_SCREEN_PTR#0
(byte*) PLEX_SCREEN_PTR#1
@@ -1094,16 +1094,16 @@ SYMBOL TABLE SSA
(byte*) PLEX_SCREEN_PTR#7
(byte*) PLEX_SCREEN_PTR#8
(byte*) PLEX_SCREEN_PTR#9
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_WORD = (byte) 2
-(const byte*) SPRITE = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) SPRITE[] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
@@ -1170,7 +1170,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#6
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1185,7 +1185,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) loop()
(bool~) loop::$0
(signed word~) loop::$1
@@ -1513,10 +1513,10 @@ SYMBOL TABLE SSA
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(byte) mulf_init::x_255#5
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) plexInit((byte*) plexInit::screen)
(bool~) plexInit::$1
(label) plexInit::@1
@@ -7072,19 +7072,19 @@ FINAL SYMBOL TABLE
(const byte) KEY_SPACE = (number) $3c
(const byte) NUM_BOBS = (number) $10
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(const byte*) PLEX_SCREEN_PTR#1 PLEX_SCREEN_PTR = (const byte*) SCREEN+(word) $3f8
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
-(const byte*) SPRITE = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) SPRITE[] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
@@ -7134,7 +7134,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -7142,7 +7142,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) loop()
(signed word~) loop::$1 zp[2]:7 202.0
(byte~) loop::$11 reg byte a 202.0
@@ -7311,10 +7311,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) plexInit((byte*) plexInit::screen)
(label) plexInit::@1
(label) plexInit::@return
diff --git a/src/test/ref/complex/prebob/vogel-sprites.sym b/src/test/ref/complex/prebob/vogel-sprites.sym
index 87ef1b590..3e434f145 100644
--- a/src/test/ref/complex/prebob/vogel-sprites.sym
+++ b/src/test/ref/complex/prebob/vogel-sprites.sym
@@ -11,19 +11,19 @@
(const byte) KEY_SPACE = (number) $3c
(const byte) NUM_BOBS = (number) $10
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(const byte*) PLEX_SCREEN_PTR#1 PLEX_SCREEN_PTR = (const byte*) SCREEN+(word) $3f8
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
-(const byte*) SPRITE = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
+(const byte*) SPRITE[] = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
.for (var y=0; y<21; y++)
.for (var x=0;x<3; x++)
.byte pic.getSinglecolorByte(x,y)
@@ -73,7 +73,7 @@
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -81,7 +81,7 @@
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) loop()
(signed word~) loop::$1 zp[2]:7 202.0
(byte~) loop::$11 reg byte a 202.0
@@ -250,10 +250,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) plexInit((byte*) plexInit::screen)
(label) plexInit::@1
(label) plexInit::@return
diff --git a/src/test/ref/complex/splines/truetype-splines.log b/src/test/ref/complex/splines/truetype-splines.log
index 8e0514716..36bd90097 100644
--- a/src/test/ref/complex/splines/truetype-splines.log
+++ b/src/test/ref/complex/splines/truetype-splines.log
@@ -1735,12 +1735,12 @@ SYMBOL TABLE SSA
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_STRUCT_SEGMENT = (byte) 9
(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 = (byte) 4
-(const struct SplineVector16*) SPLINE_8SEG = { fill( 9, 0) }
+(const struct SplineVector16*) SPLINE_8SEG[(number) 9] = { fill( 9, 0) }
(const byte) SPLINE_TO = (byte) 1
(const byte) Segment::SegmentType::LINE_TO = (byte) 2
(const byte) Segment::SegmentType::MOVE_TO = (byte) 0
@@ -2115,7 +2115,7 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
(void()) bitmap_plot_spline_8seg()
(word~) bitmap_plot_spline_8seg::$0
(word~) bitmap_plot_spline_8seg::$1
@@ -2148,8 +2148,8 @@ SYMBOL TABLE SSA
(byte) bitmap_plot_spline_8seg::n#1
(byte) bitmap_plot_spline_8seg::n#2
(byte) bitmap_plot_spline_8seg::n#3
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -2191,7 +2191,7 @@ SYMBOL TABLE SSA
(byte*) bitmap_screen#7
(byte*) bitmap_screen#8
(byte*) bitmap_screen#9
-(const struct Segment*) letter_c = { { type: (const byte) MOVE_TO, to: { x: (signed word)(number) $6c, y: (signed word)(number) $92 }, via: { x: (signed word)(number) 0, y: (signed word)(number) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $59, y: (signed word)(number) $b6 }, via: { x: (signed word)(number) $67, y: (signed word)(number) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $3b, y: (signed word)(number) $c3 }, via: { x: (signed word)(number) $4b, y: (signed word)(number) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $17, y: (signed word)(number) $b2 }, via: { x: (signed word)(number) $26, y: (signed word)(number) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) 9, y: (signed word)(number) $84 }, via: { x: (signed word)(number) 9, y: (signed word)(number) $a1 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $19, y: (signed word)(number) $57 }, via: { x: (signed word)(number) 9, y: (signed word)(number) $68 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $41, y: (signed word)(number) $45 }, via: { x: (signed word)(number) $2a, y: (signed word)(number) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $5d, y: (signed word)(number) $4f }, via: { x: (signed word)(number) $52, y: (signed word)(number) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $69, y: (signed word)(number) $62 }, via: { x: (signed word)(number) $69, y: (signed word)(number) $58 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $66, y: (signed word)(number) $6a }, via: { x: (signed word)(number) $69, y: (signed word)(number) $67 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $5d, y: (signed word)(number) $6d }, via: { x: (signed word)(number) $62, y: (signed word)(number) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $51, y: (signed word)(number) $68 }, via: { x: (signed word)(number) $55, y: (signed word)(number) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $4e, y: (signed word)(number) $5d }, via: { x: (signed word)(number) $4f, y: (signed word)(number) $65 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $49, y: (signed word)(number) $52 }, via: { x: (signed word)(number) $4e, y: (signed word)(number) $56 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $3d, y: (signed word)(number) $4e }, via: { x: (signed word)(number) $45, y: (signed word)(number) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $28, y: (signed word)(number) $58 }, via: { x: (signed word)(number) $30, y: (signed word)(number) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $1d, y: (signed word)(number) $79 }, via: { x: (signed word)(number) $1d, y: (signed word)(number) $64 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $28, y: (signed word)(number) $9e }, via: { x: (signed word)(number) $1d, y: (signed word)(number) $8e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $44, y: (signed word)(number) $ae }, via: { x: (signed word)(number) $32, y: (signed word)(number) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $5b, y: (signed word)(number) $a6 }, via: { x: (signed word)(number) $50, y: (signed word)(number) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $68, y: (signed word)(number) $90 }, via: { x: (signed word)(number) $62, y: (signed word)(number) $a0 } }, { type: (const byte) LINE_TO, to: { x: (signed word)(number) $6c, y: (signed word)(number) $92 }, via: { x: (signed word)(number) 0, y: (signed word)(number) 0 } } }
+(const struct Segment*) letter_c[(number) $16] = { { type: (const byte) MOVE_TO, to: { x: (signed word)(number) $6c, y: (signed word)(number) $92 }, via: { x: (signed word)(number) 0, y: (signed word)(number) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $59, y: (signed word)(number) $b6 }, via: { x: (signed word)(number) $67, y: (signed word)(number) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $3b, y: (signed word)(number) $c3 }, via: { x: (signed word)(number) $4b, y: (signed word)(number) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $17, y: (signed word)(number) $b2 }, via: { x: (signed word)(number) $26, y: (signed word)(number) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) 9, y: (signed word)(number) $84 }, via: { x: (signed word)(number) 9, y: (signed word)(number) $a1 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $19, y: (signed word)(number) $57 }, via: { x: (signed word)(number) 9, y: (signed word)(number) $68 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $41, y: (signed word)(number) $45 }, via: { x: (signed word)(number) $2a, y: (signed word)(number) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $5d, y: (signed word)(number) $4f }, via: { x: (signed word)(number) $52, y: (signed word)(number) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $69, y: (signed word)(number) $62 }, via: { x: (signed word)(number) $69, y: (signed word)(number) $58 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $66, y: (signed word)(number) $6a }, via: { x: (signed word)(number) $69, y: (signed word)(number) $67 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $5d, y: (signed word)(number) $6d }, via: { x: (signed word)(number) $62, y: (signed word)(number) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $51, y: (signed word)(number) $68 }, via: { x: (signed word)(number) $55, y: (signed word)(number) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $4e, y: (signed word)(number) $5d }, via: { x: (signed word)(number) $4f, y: (signed word)(number) $65 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $49, y: (signed word)(number) $52 }, via: { x: (signed word)(number) $4e, y: (signed word)(number) $56 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $3d, y: (signed word)(number) $4e }, via: { x: (signed word)(number) $45, y: (signed word)(number) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $28, y: (signed word)(number) $58 }, via: { x: (signed word)(number) $30, y: (signed word)(number) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $1d, y: (signed word)(number) $79 }, via: { x: (signed word)(number) $1d, y: (signed word)(number) $64 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $28, y: (signed word)(number) $9e }, via: { x: (signed word)(number) $1d, y: (signed word)(number) $8e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $44, y: (signed word)(number) $ae }, via: { x: (signed word)(number) $32, y: (signed word)(number) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $5b, y: (signed word)(number) $a6 }, via: { x: (signed word)(number) $50, y: (signed word)(number) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word)(number) $68, y: (signed word)(number) $90 }, via: { x: (signed word)(number) $62, y: (signed word)(number) $a0 } }, { type: (const byte) LINE_TO, to: { x: (signed word)(number) $6c, y: (signed word)(number) $92 }, via: { x: (signed word)(number) 0, y: (signed word)(number) 0 } } }
(void()) main()
(byte~) main::$4
(bool~) main::$7
@@ -2483,10 +2483,10 @@ SYMBOL TABLE SSA
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(byte) mulf_init::x_255#5
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
(signed word~) rotate::$0
(signed dword~) rotate::$1
@@ -11880,11 +11880,11 @@ FINAL SYMBOL TABLE
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 = (byte) 4
-(const struct SplineVector16*) SPLINE_8SEG = { fill( 9, 0) }
+(const struct SplineVector16*) SPLINE_8SEG[(number) 9] = { fill( 9, 0) }
(const byte) SPLINE_TO = (byte) 1
(const byte) Segment::SegmentType::LINE_TO = (byte) 2
(const byte) Segment::SegmentType::MOVE_TO = (byte) 0
@@ -12039,7 +12039,7 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 1001.0
(byte) bitmap_plot::y#4 reg byte x 2010.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
(void()) bitmap_plot_spline_8seg()
(byte~) bitmap_plot_spline_8seg::$8 reg byte x 500.5
(byte~) bitmap_plot_spline_8seg::$9 reg byte x 1501.5
@@ -12057,10 +12057,10 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot_spline_8seg::n
(byte) bitmap_plot_spline_8seg::n#1 n zp[1]:36 1501.5
(byte) bitmap_plot_spline_8seg::n#2 n zp[1]:36 400.4
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
-(const struct Segment*) letter_c = { { type: (const byte) MOVE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $59, y: (signed word) $b6 }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3b, y: (signed word) $c3 }, via: { x: (signed word) $4b, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $17, y: (signed word) $b2 }, via: { x: (signed word) $26, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) 9, y: (signed word) $84 }, via: { x: (signed word) 9, y: (signed word) $a1 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $19, y: (signed word) $57 }, via: { x: (signed word) 9, y: (signed word) $68 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $41, y: (signed word) $45 }, via: { x: (signed word) $2a, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $4f }, via: { x: (signed word) $52, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $69, y: (signed word) $62 }, via: { x: (signed word) $69, y: (signed word) $58 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $66, y: (signed word) $6a }, via: { x: (signed word) $69, y: (signed word) $67 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $6d }, via: { x: (signed word) $62, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $51, y: (signed word) $68 }, via: { x: (signed word) $55, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $4e, y: (signed word) $5d }, via: { x: (signed word) $4f, y: (signed word) $65 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $49, y: (signed word) $52 }, via: { x: (signed word) $4e, y: (signed word) $56 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3d, y: (signed word) $4e }, via: { x: (signed word) $45, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $58 }, via: { x: (signed word) $30, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $1d, y: (signed word) $79 }, via: { x: (signed word) $1d, y: (signed word) $64 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $9e }, via: { x: (signed word) $1d, y: (signed word) $8e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $44, y: (signed word) $ae }, via: { x: (signed word) $32, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5b, y: (signed word) $a6 }, via: { x: (signed word) $50, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $68, y: (signed word) $90 }, via: { x: (signed word) $62, y: (signed word) $a0 } }, { type: (const byte) LINE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } } }
+(const struct Segment*) letter_c[(number) $16] = { { type: (const byte) MOVE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $59, y: (signed word) $b6 }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3b, y: (signed word) $c3 }, via: { x: (signed word) $4b, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $17, y: (signed word) $b2 }, via: { x: (signed word) $26, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) 9, y: (signed word) $84 }, via: { x: (signed word) 9, y: (signed word) $a1 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $19, y: (signed word) $57 }, via: { x: (signed word) 9, y: (signed word) $68 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $41, y: (signed word) $45 }, via: { x: (signed word) $2a, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $4f }, via: { x: (signed word) $52, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $69, y: (signed word) $62 }, via: { x: (signed word) $69, y: (signed word) $58 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $66, y: (signed word) $6a }, via: { x: (signed word) $69, y: (signed word) $67 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $6d }, via: { x: (signed word) $62, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $51, y: (signed word) $68 }, via: { x: (signed word) $55, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $4e, y: (signed word) $5d }, via: { x: (signed word) $4f, y: (signed word) $65 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $49, y: (signed word) $52 }, via: { x: (signed word) $4e, y: (signed word) $56 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3d, y: (signed word) $4e }, via: { x: (signed word) $45, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $58 }, via: { x: (signed word) $30, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $1d, y: (signed word) $79 }, via: { x: (signed word) $1d, y: (signed word) $64 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $9e }, via: { x: (signed word) $1d, y: (signed word) $8e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $44, y: (signed word) $ae }, via: { x: (signed word) $32, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5b, y: (signed word) $a6 }, via: { x: (signed word) $50, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $68, y: (signed word) $90 }, via: { x: (signed word) $62, y: (signed word) $a0 } }, { type: (const byte) LINE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } } }
(void()) main()
(label) main::@1
(label) main::@10
@@ -12199,10 +12199,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
(signed dword~) rotate::$1 zp[4]:8 2.0
(signed word~) rotate::$10 zp[2]:28 4.0
diff --git a/src/test/ref/complex/splines/truetype-splines.sym b/src/test/ref/complex/splines/truetype-splines.sym
index 156d77c3d..83eff09e5 100644
--- a/src/test/ref/complex/splines/truetype-splines.sym
+++ b/src/test/ref/complex/splines/truetype-splines.sym
@@ -18,11 +18,11 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
-(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const signed byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte) SIZEOF_STRUCT_SPLINEVECTOR16 = (byte) 4
-(const struct SplineVector16*) SPLINE_8SEG = { fill( 9, 0) }
+(const struct SplineVector16*) SPLINE_8SEG[(number) 9] = { fill( 9, 0) }
(const byte) SPLINE_TO = (byte) 1
(const byte) Segment::SegmentType::LINE_TO = (byte) 2
(const byte) Segment::SegmentType::MOVE_TO = (byte) 0
@@ -177,7 +177,7 @@
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 1001.0
(byte) bitmap_plot::y#4 reg byte x 2010.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
(void()) bitmap_plot_spline_8seg()
(byte~) bitmap_plot_spline_8seg::$8 reg byte x 500.5
(byte~) bitmap_plot_spline_8seg::$9 reg byte x 1501.5
@@ -195,10 +195,10 @@
(byte) bitmap_plot_spline_8seg::n
(byte) bitmap_plot_spline_8seg::n#1 n zp[1]:36 1501.5
(byte) bitmap_plot_spline_8seg::n#2 n zp[1]:36 400.4
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
-(const struct Segment*) letter_c = { { type: (const byte) MOVE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $59, y: (signed word) $b6 }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3b, y: (signed word) $c3 }, via: { x: (signed word) $4b, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $17, y: (signed word) $b2 }, via: { x: (signed word) $26, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) 9, y: (signed word) $84 }, via: { x: (signed word) 9, y: (signed word) $a1 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $19, y: (signed word) $57 }, via: { x: (signed word) 9, y: (signed word) $68 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $41, y: (signed word) $45 }, via: { x: (signed word) $2a, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $4f }, via: { x: (signed word) $52, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $69, y: (signed word) $62 }, via: { x: (signed word) $69, y: (signed word) $58 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $66, y: (signed word) $6a }, via: { x: (signed word) $69, y: (signed word) $67 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $6d }, via: { x: (signed word) $62, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $51, y: (signed word) $68 }, via: { x: (signed word) $55, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $4e, y: (signed word) $5d }, via: { x: (signed word) $4f, y: (signed word) $65 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $49, y: (signed word) $52 }, via: { x: (signed word) $4e, y: (signed word) $56 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3d, y: (signed word) $4e }, via: { x: (signed word) $45, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $58 }, via: { x: (signed word) $30, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $1d, y: (signed word) $79 }, via: { x: (signed word) $1d, y: (signed word) $64 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $9e }, via: { x: (signed word) $1d, y: (signed word) $8e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $44, y: (signed word) $ae }, via: { x: (signed word) $32, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5b, y: (signed word) $a6 }, via: { x: (signed word) $50, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $68, y: (signed word) $90 }, via: { x: (signed word) $62, y: (signed word) $a0 } }, { type: (const byte) LINE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } } }
+(const struct Segment*) letter_c[(number) $16] = { { type: (const byte) MOVE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $59, y: (signed word) $b6 }, via: { x: (signed word) $67, y: (signed word) $a9 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3b, y: (signed word) $c3 }, via: { x: (signed word) $4b, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $17, y: (signed word) $b2 }, via: { x: (signed word) $26, y: (signed word) $c3 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) 9, y: (signed word) $84 }, via: { x: (signed word) 9, y: (signed word) $a1 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $19, y: (signed word) $57 }, via: { x: (signed word) 9, y: (signed word) $68 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $41, y: (signed word) $45 }, via: { x: (signed word) $2a, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $4f }, via: { x: (signed word) $52, y: (signed word) $45 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $69, y: (signed word) $62 }, via: { x: (signed word) $69, y: (signed word) $58 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $66, y: (signed word) $6a }, via: { x: (signed word) $69, y: (signed word) $67 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5d, y: (signed word) $6d }, via: { x: (signed word) $62, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $51, y: (signed word) $68 }, via: { x: (signed word) $55, y: (signed word) $6d } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $4e, y: (signed word) $5d }, via: { x: (signed word) $4f, y: (signed word) $65 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $49, y: (signed word) $52 }, via: { x: (signed word) $4e, y: (signed word) $56 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $3d, y: (signed word) $4e }, via: { x: (signed word) $45, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $58 }, via: { x: (signed word) $30, y: (signed word) $4e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $1d, y: (signed word) $79 }, via: { x: (signed word) $1d, y: (signed word) $64 } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $28, y: (signed word) $9e }, via: { x: (signed word) $1d, y: (signed word) $8e } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $44, y: (signed word) $ae }, via: { x: (signed word) $32, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $5b, y: (signed word) $a6 }, via: { x: (signed word) $50, y: (signed word) $ae } }, { type: (const byte) SPLINE_TO, to: { x: (signed word) $68, y: (signed word) $90 }, via: { x: (signed word) $62, y: (signed word) $a0 } }, { type: (const byte) LINE_TO, to: { x: (signed word) $6c, y: (signed word) $92 }, via: { x: (signed word) 0, y: (signed word) 0 } } }
(void()) main()
(label) main::@1
(label) main::@10
@@ -337,10 +337,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
(signed dword~) rotate::$1 zp[4]:8 2.0
(signed word~) rotate::$10 zp[2]:28 4.0
diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log
index 2f4ecdec9..9021310f1 100644
--- a/src/test/ref/complex/tetris/test-sprites.log
+++ b/src/test/ref/complex/tetris/test-sprites.log
@@ -516,7 +516,7 @@ SYMBOL TABLE SSA
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*)(number) $d012
-(const byte*) SIN = kickasm {{ .var AMPL = 200-21
+(const byte*) SIN[(number) $100] = kickasm {{ .var AMPL = 200-21
.for(var i=0; i<256; i++) {
.byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2
}
@@ -3501,7 +3501,7 @@ FINAL SYMBOL TABLE
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*) 53266
-(const byte*) SIN = kickasm {{ .var AMPL = 200-21
+(const byte*) SIN[(number) $100] = kickasm {{ .var AMPL = 200-21
.for(var i=0; i<256; i++) {
.byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2
}
diff --git a/src/test/ref/complex/tetris/test-sprites.sym b/src/test/ref/complex/tetris/test-sprites.sym
index b1ff4026c..6075c4d6a 100644
--- a/src/test/ref/complex/tetris/test-sprites.sym
+++ b/src/test/ref/complex/tetris/test-sprites.sym
@@ -27,7 +27,7 @@
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
(const byte) PROCPORT_RAM_IO = (number) 5
(const byte*) RASTER = (byte*) 53266
-(const byte*) SIN = kickasm {{ .var AMPL = 200-21
+(const byte*) SIN[(number) $100] = kickasm {{ .var AMPL = 200-21
.for(var i=0; i<256; i++) {
.byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2
}
diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log
index efd33e26c..5ba96f2bc 100644
--- a/src/test/ref/complex/tetris/tetris.log
+++ b/src/test/ref/complex/tetris/tetris.log
@@ -3632,22 +3632,22 @@ SYMBOL TABLE SSA
(const byte) KEY_Z = (number) $c
(const byte) LIGHT_BLUE = (number) $e
(const byte) LIGHT_GREEN = (number) $d
-(const byte*) MOVEDOWN_SLOW_SPEEDS = { (byte)(number) $30, (byte)(number) $2b, (byte)(number) $26, (byte)(number) $21, (byte)(number) $1c, (byte)(number) $17, (byte)(number) $12, (byte)(number) $d, (byte)(number) 8, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 3, (byte)(number) 3, (byte)(number) 3, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 1 }
+(const byte*) MOVEDOWN_SLOW_SPEEDS[] = { (byte)(number) $30, (byte)(number) $2b, (byte)(number) $26, (byte)(number) $21, (byte)(number) $1c, (byte)(number) $17, (byte)(number) $12, (byte)(number) $d, (byte)(number) 8, (byte)(number) 6, (byte)(number) 5, (byte)(number) 5, (byte)(number) 5, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 3, (byte)(number) 3, (byte)(number) 3, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 2, (byte)(number) 1 }
(const byte) ORANGE = (number) 8
-(const word*) PIECES = { (word)(const byte*) PIECE_T, (word)(const byte*) PIECE_S, (word)(const byte*) PIECE_Z, (word)(const byte*) PIECE_J, (word)(const byte*) PIECE_O, (word)(const byte*) PIECE_I, (word)(const byte*) PIECE_L }
-(const byte*) PIECES_CHARS = { (byte)(number) $65, (byte)(number) $66, (byte)(number) $a6, (byte)(number) $66, (byte)(number) $65, (byte)(number) $65, (byte)(number) $a6 }
-(const byte*) PIECES_COLORS_1 = { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED }
-(const byte*) PIECES_COLORS_2 = { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE }
-(const byte*) PIECES_NEXT_CHARS = { (byte)(number) $63, (byte)(number) $64, (byte)(number) $a4, (byte)(number) $64, (byte)(number) $63, (byte)(number) $63, (byte)(number) $a4 }
-(const byte*) PIECES_START_X = { (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4 }
-(const byte*) PIECES_START_Y = { (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1 }
-(const byte*) PIECE_I = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) PIECE_J = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) PIECE_L = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) PIECE_O = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) PIECE_S = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) PIECE_T = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) PIECE_Z = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const word*) PIECES[] = { (word)(const byte*) PIECE_T, (word)(const byte*) PIECE_S, (word)(const byte*) PIECE_Z, (word)(const byte*) PIECE_J, (word)(const byte*) PIECE_O, (word)(const byte*) PIECE_I, (word)(const byte*) PIECE_L }
+(const byte*) PIECES_CHARS[] = { (byte)(number) $65, (byte)(number) $66, (byte)(number) $a6, (byte)(number) $66, (byte)(number) $65, (byte)(number) $65, (byte)(number) $a6 }
+(const byte*) PIECES_COLORS_1[] = { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED }
+(const byte*) PIECES_COLORS_2[] = { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE }
+(const byte*) PIECES_NEXT_CHARS[] = { (byte)(number) $63, (byte)(number) $64, (byte)(number) $a4, (byte)(number) $64, (byte)(number) $63, (byte)(number) $63, (byte)(number) $a4 }
+(const byte*) PIECES_START_X[] = { (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4, (byte)(number) 4 }
+(const byte*) PIECES_START_Y[] = { (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1 }
+(const byte*) PIECE_I[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) PIECE_J[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) PIECE_L[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) PIECE_O[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) PIECE_S[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) PIECE_T[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) PIECE_Z[(number) 4*(number) 4*(number) 4] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(const byte) PINK = (number) $a
(const byte*) PLAYFIELD_CHARSET = (byte*)(number) $2800
(const byte*) PLAYFIELD_COLORS_ORIGINAL = (byte*)(number) $1c00
@@ -3666,7 +3666,7 @@ SYMBOL TABLE SSA
(const byte) PURPLE = (number) 4
(const byte*) RASTER = (byte*)(number) $d012
(const byte) RED = (number) 2
-(const dword*) SCORE_BASE_BCD = { (dword)(number) 0, (dword)(number) $40, (dword)(number) $100, (dword)(number) $300, (dword)(number) $1200 }
+(const dword*) SCORE_BASE_BCD[] = { (dword)(number) 0, (dword)(number) $40, (dword)(number) $100, (dword)(number) $300, (dword)(number) $1200 }
(const byte) SID_CONTROL_NOISE = (number) $80
(const byte*) SID_VOICE3_CONTROL = (byte*)(number) $d412
(const word*) SID_VOICE3_FREQ = (word*)(number) $d40e
@@ -4776,7 +4776,7 @@ SYMBOL TABLE SSA
(byte) keyboard_event_scan::row_scan#6
(byte) keyboard_event_scan::row_scan#7
(byte) keyboard_event_scan::row_scan#8
-(const byte*) keyboard_events = { fill( 8, 0) }
+(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#0
(byte) keyboard_events_size#1
@@ -4856,7 +4856,7 @@ SYMBOL TABLE SSA
(byte) keyboard_events_size#77
(byte) keyboard_events_size#8
(byte) keyboard_events_size#9
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -4871,7 +4871,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(byte) keyboard_modifiers
(byte) keyboard_modifiers#0
(byte) keyboard_modifiers#1
@@ -4933,7 +4933,7 @@ SYMBOL TABLE SSA
(byte) keyboard_modifiers#7
(byte) keyboard_modifiers#8
(byte) keyboard_modifiers#9
-(const byte*) keyboard_scan_values = { fill( 8, 0) }
+(const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) }
(byte) level
(byte) level#0
(byte) level#1
@@ -5901,9 +5901,9 @@ SYMBOL TABLE SSA
(byte) play_update_score::removed#0
(byte) play_update_score::removed#1
(byte) play_update_score::removed#2
-(const byte*) playfield = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
-(const byte**) playfield_lines = { fill( PLAYFIELD_LINES, 0) }
-(const byte*) playfield_lines_idx = { fill( PLAYFIELD_LINES+1, 0) }
+(const byte*) playfield[(const byte) PLAYFIELD_LINES*(const byte) PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
+(const byte**) playfield_lines[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
+(const byte*) playfield_lines_idx[(const byte) PLAYFIELD_LINES+(number) 1] = { fill( PLAYFIELD_LINES+1, 0) }
(void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low)
(byte*~) render_bcd::$0
(bool~) render_bcd::$1
@@ -6490,7 +6490,7 @@ SYMBOL TABLE SSA
(byte*) render_show::toD0182_screen
(byte*) render_show::toD0182_screen#0
(byte*) render_show::toD0182_screen#1
-(const dword*) score_add_bcd = { fill( 5, 0) }
+(const dword*) score_add_bcd[(number) 5] = { fill( 5, 0) }
(dword) score_bcd
(dword) score_bcd#0
(dword) score_bcd#1
@@ -6571,8 +6571,8 @@ SYMBOL TABLE SSA
(dword) score_bcd#78
(dword) score_bcd#8
(dword) score_bcd#9
-(const byte**) screen_lines_1 = { fill( PLAYFIELD_LINES, 0) }
-(const byte**) screen_lines_2 = { fill( PLAYFIELD_LINES, 0) }
+(const byte**) screen_lines_1[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
+(const byte**) screen_lines_2[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
(void()) sid_rnd_init()
(label) sid_rnd_init::@return
(void()) sprites_init()
@@ -22288,22 +22288,22 @@ FINAL SYMBOL TABLE
(const byte) KEY_Z = (number) $c
(const byte) LIGHT_BLUE = (number) $e
(const byte) LIGHT_GREEN = (number) $d
-(const byte*) MOVEDOWN_SLOW_SPEEDS = { (byte) $30, (byte) $2b, (byte) $26, (byte) $21, (byte) $1c, (byte) $17, (byte) $12, (byte) $d, (byte) 8, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 1 }
+(const byte*) MOVEDOWN_SLOW_SPEEDS[] = { (byte) $30, (byte) $2b, (byte) $26, (byte) $21, (byte) $1c, (byte) $17, (byte) $12, (byte) $d, (byte) 8, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 1 }
(const byte) ORANGE = (number) 8
-(const word*) PIECES = { (word)(const byte*) PIECE_T, (word)(const byte*) PIECE_S, (word)(const byte*) PIECE_Z, (word)(const byte*) PIECE_J, (word)(const byte*) PIECE_O, (word)(const byte*) PIECE_I, (word)(const byte*) PIECE_L }
-(const byte*) PIECES_CHARS = { (byte) $65, (byte) $66, (byte) $a6, (byte) $66, (byte) $65, (byte) $65, (byte) $a6 }
-(const byte*) PIECES_COLORS_1 = { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED }
-(const byte*) PIECES_COLORS_2 = { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE }
-(const byte*) PIECES_NEXT_CHARS = { (byte) $63, (byte) $64, (byte) $a4, (byte) $64, (byte) $63, (byte) $63, (byte) $a4 }
-(const byte*) PIECES_START_X = { (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4 }
-(const byte*) PIECES_START_Y = { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1 }
-(const byte*) PIECE_I = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0 }
-(const byte*) PIECE_J = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_L = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_O = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_S = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_T = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_Z = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const word*) PIECES[] = { (word)(const byte*) PIECE_T, (word)(const byte*) PIECE_S, (word)(const byte*) PIECE_Z, (word)(const byte*) PIECE_J, (word)(const byte*) PIECE_O, (word)(const byte*) PIECE_I, (word)(const byte*) PIECE_L }
+(const byte*) PIECES_CHARS[] = { (byte) $65, (byte) $66, (byte) $a6, (byte) $66, (byte) $65, (byte) $65, (byte) $a6 }
+(const byte*) PIECES_COLORS_1[] = { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED }
+(const byte*) PIECES_COLORS_2[] = { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE }
+(const byte*) PIECES_NEXT_CHARS[] = { (byte) $63, (byte) $64, (byte) $a4, (byte) $64, (byte) $63, (byte) $63, (byte) $a4 }
+(const byte*) PIECES_START_X[] = { (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4 }
+(const byte*) PIECES_START_Y[] = { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1 }
+(const byte*) PIECE_I[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0 }
+(const byte*) PIECE_J[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_L[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_O[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_S[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_T[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_Z[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte) PINK = (number) $a
(const byte*) PLAYFIELD_CHARSET = (byte*) 10240
(const byte*) PLAYFIELD_COLORS_ORIGINAL = (byte*) 7168
@@ -22322,7 +22322,7 @@ FINAL SYMBOL TABLE
(const byte) PURPLE = (number) 4
(const byte*) RASTER = (byte*) 53266
(const byte) RED = (number) 2
-(const dword*) SCORE_BASE_BCD = { (dword) 0, (dword) $40, (dword) $100, (dword) $300, (dword) $1200 }
+(const dword*) SCORE_BASE_BCD[] = { (dword) 0, (dword) $40, (dword) $100, (dword) $300, (dword) $1200 }
(const byte) SID_CONTROL_NOISE = (number) $80
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
@@ -22512,7 +22512,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_event_scan::row#2 row zp[1]:32 600.24
(byte) keyboard_event_scan::row_scan
(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:47 1278.0555555555554
-(const byte*) keyboard_events = { fill( 8, 0) }
+(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#1 keyboard_events_size zp[1]:19 20002.0
(byte) keyboard_events_size#10 keyboard_events_size zp[1]:19 8100.9000000000015
@@ -22523,7 +22523,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_events_size#29 keyboard_events_size zp[1]:19 10201.2
(byte) keyboard_events_size#30 keyboard_events_size zp[1]:19 429.2857142857143
(byte) keyboard_events_size#4 keyboard_events_size zp[1]:19 3.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -22532,9 +22532,9 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(byte) keyboard_modifiers
-(const byte*) keyboard_scan_values = { fill( 8, 0) }
+(const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) }
(byte) level
(byte) level#10 level zp[1]:7 1.909090909090909
(byte) level#17 level zp[1]:7 3.135135135135135
@@ -22880,9 +22880,9 @@ FINAL SYMBOL TABLE
(byte) play_update_score::lines_before#0 lines_before zp[1]:38 0.4444444444444444
(byte) play_update_score::removed
(byte) play_update_score::removed#0 reg byte x 1.1428571428571428
-(const byte*) playfield = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
-(const byte**) playfield_lines = { fill( PLAYFIELD_LINES, 0) }
-(const byte*) playfield_lines_idx = { fill( PLAYFIELD_LINES+1, 0) }
+(const byte*) playfield[(const byte) PLAYFIELD_LINES*(const byte) PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
+(const byte**) playfield_lines[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
+(const byte*) playfield_lines_idx[(const byte) PLAYFIELD_LINES+(byte) 1] = { fill( PLAYFIELD_LINES+1, 0) }
(void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low)
(byte~) render_bcd::$3 reg byte a 4.0
(byte~) render_bcd::$4 reg byte a 4.0
@@ -23118,7 +23118,7 @@ FINAL SYMBOL TABLE
(byte) render_show::toD0182_return
(const byte) render_show::toD0182_return#0 toD0182_return = >(word)(const byte*) PLAYFIELD_SCREEN_2&(word) $3fff*(byte) 4|>(word)(const byte*) PLAYFIELD_CHARSET/(byte) 4&(byte) $f
(byte*) render_show::toD0182_screen
-(const dword*) score_add_bcd = { fill( 5, 0) }
+(const dword*) score_add_bcd[(number) 5] = { fill( 5, 0) }
(dword) score_bcd
(dword) score_bcd#0 score_bcd zp[4]:3 0.1111111111111111
(dword) score_bcd#13 score_bcd zp[4]:3 3.135135135135135
@@ -23126,8 +23126,8 @@ FINAL SYMBOL TABLE
(dword) score_bcd#17 score_bcd zp[4]:3 2.3921568627450975
(dword) score_bcd#23 score_bcd zp[4]:3 6.0
(dword) score_bcd#26 score_bcd zp[4]:3 0.8571428571428571
-(const byte**) screen_lines_1 = { fill( PLAYFIELD_LINES, 0) }
-(const byte**) screen_lines_2 = { fill( PLAYFIELD_LINES, 0) }
+(const byte**) screen_lines_1[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
+(const byte**) screen_lines_2[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
(void()) sid_rnd_init()
(label) sid_rnd_init::@return
(void()) sprites_init()
diff --git a/src/test/ref/complex/tetris/tetris.sym b/src/test/ref/complex/tetris/tetris.sym
index 74139c140..a6a065ae7 100644
--- a/src/test/ref/complex/tetris/tetris.sym
+++ b/src/test/ref/complex/tetris/tetris.sym
@@ -46,22 +46,22 @@
(const byte) KEY_Z = (number) $c
(const byte) LIGHT_BLUE = (number) $e
(const byte) LIGHT_GREEN = (number) $d
-(const byte*) MOVEDOWN_SLOW_SPEEDS = { (byte) $30, (byte) $2b, (byte) $26, (byte) $21, (byte) $1c, (byte) $17, (byte) $12, (byte) $d, (byte) 8, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 1 }
+(const byte*) MOVEDOWN_SLOW_SPEEDS[] = { (byte) $30, (byte) $2b, (byte) $26, (byte) $21, (byte) $1c, (byte) $17, (byte) $12, (byte) $d, (byte) 8, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 4, (byte) 4, (byte) 4, (byte) 3, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 1 }
(const byte) ORANGE = (number) 8
-(const word*) PIECES = { (word)(const byte*) PIECE_T, (word)(const byte*) PIECE_S, (word)(const byte*) PIECE_Z, (word)(const byte*) PIECE_J, (word)(const byte*) PIECE_O, (word)(const byte*) PIECE_I, (word)(const byte*) PIECE_L }
-(const byte*) PIECES_CHARS = { (byte) $65, (byte) $66, (byte) $a6, (byte) $66, (byte) $65, (byte) $65, (byte) $a6 }
-(const byte*) PIECES_COLORS_1 = { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED }
-(const byte*) PIECES_COLORS_2 = { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE }
-(const byte*) PIECES_NEXT_CHARS = { (byte) $63, (byte) $64, (byte) $a4, (byte) $64, (byte) $63, (byte) $63, (byte) $a4 }
-(const byte*) PIECES_START_X = { (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4 }
-(const byte*) PIECES_START_Y = { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1 }
-(const byte*) PIECE_I = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0 }
-(const byte*) PIECE_J = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_L = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_O = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_S = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_T = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) PIECE_Z = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const word*) PIECES[] = { (word)(const byte*) PIECE_T, (word)(const byte*) PIECE_S, (word)(const byte*) PIECE_Z, (word)(const byte*) PIECE_J, (word)(const byte*) PIECE_O, (word)(const byte*) PIECE_I, (word)(const byte*) PIECE_L }
+(const byte*) PIECES_CHARS[] = { (byte) $65, (byte) $66, (byte) $a6, (byte) $66, (byte) $65, (byte) $65, (byte) $a6 }
+(const byte*) PIECES_COLORS_1[] = { (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED, (const byte) BLUE, (const byte) GREEN, (const byte) PURPLE, (const byte) BLUE, (const byte) RED, (const byte) LIGHT_GREEN, (const byte) RED, (const byte) BLUE, (const byte) LIGHT_BLUE, (const byte) RED }
+(const byte*) PIECES_COLORS_2[] = { (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE, (const byte) CYAN, (const byte) LIGHT_GREEN, (const byte) PINK, (const byte) LIGHT_GREEN, (const byte) LIGHT_GREEN, (const byte) LIGHT_BLUE, (const byte) DARK_GREY, (const byte) PURPLE, (const byte) RED, (const byte) ORANGE }
+(const byte*) PIECES_NEXT_CHARS[] = { (byte) $63, (byte) $64, (byte) $a4, (byte) $64, (byte) $63, (byte) $63, (byte) $a4 }
+(const byte*) PIECES_START_X[] = { (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4, (byte) 4 }
+(const byte*) PIECES_START_Y[] = { (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1 }
+(const byte*) PIECE_I[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0 }
+(const byte*) PIECE_J[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_L[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_O[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_S[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_T[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) PIECE_Z[(number) 4*(number) 4*(number) 4] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte) PINK = (number) $a
(const byte*) PLAYFIELD_CHARSET = (byte*) 10240
(const byte*) PLAYFIELD_COLORS_ORIGINAL = (byte*) 7168
@@ -80,7 +80,7 @@
(const byte) PURPLE = (number) 4
(const byte*) RASTER = (byte*) 53266
(const byte) RED = (number) 2
-(const dword*) SCORE_BASE_BCD = { (dword) 0, (dword) $40, (dword) $100, (dword) $300, (dword) $1200 }
+(const dword*) SCORE_BASE_BCD[] = { (dword) 0, (dword) $40, (dword) $100, (dword) $300, (dword) $1200 }
(const byte) SID_CONTROL_NOISE = (number) $80
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
@@ -270,7 +270,7 @@
(byte) keyboard_event_scan::row#2 row zp[1]:32 600.24
(byte) keyboard_event_scan::row_scan
(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:47 1278.0555555555554
-(const byte*) keyboard_events = { fill( 8, 0) }
+(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#1 keyboard_events_size zp[1]:19 20002.0
(byte) keyboard_events_size#10 keyboard_events_size zp[1]:19 8100.9000000000015
@@ -281,7 +281,7 @@
(byte) keyboard_events_size#29 keyboard_events_size zp[1]:19 10201.2
(byte) keyboard_events_size#30 keyboard_events_size zp[1]:19 429.2857142857143
(byte) keyboard_events_size#4 keyboard_events_size zp[1]:19 3.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -290,9 +290,9 @@
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(byte) keyboard_modifiers
-(const byte*) keyboard_scan_values = { fill( 8, 0) }
+(const byte*) keyboard_scan_values[(number) 8] = { fill( 8, 0) }
(byte) level
(byte) level#10 level zp[1]:7 1.909090909090909
(byte) level#17 level zp[1]:7 3.135135135135135
@@ -638,9 +638,9 @@
(byte) play_update_score::lines_before#0 lines_before zp[1]:38 0.4444444444444444
(byte) play_update_score::removed
(byte) play_update_score::removed#0 reg byte x 1.1428571428571428
-(const byte*) playfield = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
-(const byte**) playfield_lines = { fill( PLAYFIELD_LINES, 0) }
-(const byte*) playfield_lines_idx = { fill( PLAYFIELD_LINES+1, 0) }
+(const byte*) playfield[(const byte) PLAYFIELD_LINES*(const byte) PLAYFIELD_COLS] = { fill( PLAYFIELD_LINES*PLAYFIELD_COLS, 0) }
+(const byte**) playfield_lines[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
+(const byte*) playfield_lines_idx[(const byte) PLAYFIELD_LINES+(byte) 1] = { fill( PLAYFIELD_LINES+1, 0) }
(void()) render_bcd((byte*) render_bcd::screen , (word) render_bcd::offset , (byte) render_bcd::bcd , (byte) render_bcd::only_low)
(byte~) render_bcd::$3 reg byte a 4.0
(byte~) render_bcd::$4 reg byte a 4.0
@@ -876,7 +876,7 @@
(byte) render_show::toD0182_return
(const byte) render_show::toD0182_return#0 toD0182_return = >(word)(const byte*) PLAYFIELD_SCREEN_2&(word) $3fff*(byte) 4|>(word)(const byte*) PLAYFIELD_CHARSET/(byte) 4&(byte) $f
(byte*) render_show::toD0182_screen
-(const dword*) score_add_bcd = { fill( 5, 0) }
+(const dword*) score_add_bcd[(number) 5] = { fill( 5, 0) }
(dword) score_bcd
(dword) score_bcd#0 score_bcd zp[4]:3 0.1111111111111111
(dword) score_bcd#13 score_bcd zp[4]:3 3.135135135135135
@@ -884,8 +884,8 @@
(dword) score_bcd#17 score_bcd zp[4]:3 2.3921568627450975
(dword) score_bcd#23 score_bcd zp[4]:3 6.0
(dword) score_bcd#26 score_bcd zp[4]:3 0.8571428571428571
-(const byte**) screen_lines_1 = { fill( PLAYFIELD_LINES, 0) }
-(const byte**) screen_lines_2 = { fill( PLAYFIELD_LINES, 0) }
+(const byte**) screen_lines_1[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
+(const byte**) screen_lines_2[(const byte) PLAYFIELD_LINES] = { fill( PLAYFIELD_LINES, 0) }
(void()) sid_rnd_init()
(label) sid_rnd_init::@return
(void()) sprites_init()
diff --git a/src/test/ref/complex/xmega65/xmega65.log b/src/test/ref/complex/xmega65/xmega65.log
index e2a765698..97f835a70 100644
--- a/src/test/ref/complex/xmega65/xmega65.log
+++ b/src/test/ref/complex/xmega65/xmega65.log
@@ -154,12 +154,12 @@ SYMBOL TABLE SSA
(const byte) BLACK = (number) 0
(const byte*) COLS = (byte*)(number) $d800
(const byte) JMP = (number) $4c
-(const byte*) MESSAGE = (string) "hello world!"
+(const byte*) MESSAGE[] = (string) "hello world!"
(const byte) NOP = (number) $ea
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
-(const struct SysCall*) SYSCALLS = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
-(const struct SysCall*) SYSCALL_RESET = { { xjmp: (const byte) JMP, syscall: &(void()) main(), xnop: (const byte) NOP } }
+(const struct SysCall*) SYSCALLS[] = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
+(const struct SysCall*) SYSCALL_RESET[] = { { xjmp: (const byte) JMP, syscall: &(void()) main(), xnop: (const byte) NOP } }
(void()*) SysCall::syscall
(byte) SysCall::xjmp
(byte) SysCall::xnop
@@ -1132,12 +1132,12 @@ FINAL SYMBOL TABLE
(const byte) BLACK = (number) 0
(const byte*) COLS = (byte*) 55296
(const byte) JMP = (number) $4c
-(const byte*) MESSAGE = (string) "hello world!"
+(const byte*) MESSAGE[] = (string) "hello world!"
(const byte) NOP = (number) $ea
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const struct SysCall*) SYSCALLS = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
-(const struct SysCall*) SYSCALL_RESET = { { xjmp: (const byte) JMP, syscall: &(void()) main(), xnop: (const byte) NOP } }
+(const struct SysCall*) SYSCALLS[] = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
+(const struct SysCall*) SYSCALL_RESET[] = { { xjmp: (const byte) JMP, syscall: &(void()) main(), xnop: (const byte) NOP } }
(void()*) SysCall::syscall
(byte) SysCall::xjmp
(byte) SysCall::xnop
diff --git a/src/test/ref/complex/xmega65/xmega65.sym b/src/test/ref/complex/xmega65/xmega65.sym
index ffc49b79c..01d9bf1b4 100644
--- a/src/test/ref/complex/xmega65/xmega65.sym
+++ b/src/test/ref/complex/xmega65/xmega65.sym
@@ -5,12 +5,12 @@
(const byte) BLACK = (number) 0
(const byte*) COLS = (byte*) 55296
(const byte) JMP = (number) $4c
-(const byte*) MESSAGE = (string) "hello world!"
+(const byte*) MESSAGE[] = (string) "hello world!"
(const byte) NOP = (number) $ea
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const struct SysCall*) SYSCALLS = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
-(const struct SysCall*) SYSCALL_RESET = { { xjmp: (const byte) JMP, syscall: &(void()) main(), xnop: (const byte) NOP } }
+(const struct SysCall*) SYSCALLS[] = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
+(const struct SysCall*) SYSCALL_RESET[] = { { xjmp: (const byte) JMP, syscall: &(void()) main(), xnop: (const byte) NOP } }
(void()*) SysCall::syscall
(byte) SysCall::xjmp
(byte) SysCall::xnop
diff --git a/src/test/ref/complex/xmega65/xmega65logo.log b/src/test/ref/complex/xmega65/xmega65logo.log
index 83ca0a2ca..5f60f8889 100644
--- a/src/test/ref/complex/xmega65/xmega65logo.log
+++ b/src/test/ref/complex/xmega65/xmega65logo.log
@@ -46,7 +46,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) LOGO256 = kickasm {{ #import "xmega65graphics.asm"
+(const byte*) LOGO256[] = kickasm {{ #import "xmega65graphics.asm"
.var logo256 = LoadPicture("mega65-256.png")
.var palette256 = getPalette(logo256)
.print "width: "+logo256.width + " height: "+logo256.height + " colors: "+palette256.keys().size()
@@ -401,7 +401,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) LOGO256 = kickasm {{ #import "xmega65graphics.asm"
+(const byte*) LOGO256[] = kickasm {{ #import "xmega65graphics.asm"
.var logo256 = LoadPicture("mega65-256.png")
.var palette256 = getPalette(logo256)
.print "width: "+logo256.width + " height: "+logo256.height + " colors: "+palette256.keys().size()
diff --git a/src/test/ref/complex/xmega65/xmega65logo.sym b/src/test/ref/complex/xmega65/xmega65logo.sym
index 9186291e2..16c4ab337 100644
--- a/src/test/ref/complex/xmega65/xmega65logo.sym
+++ b/src/test/ref/complex/xmega65/xmega65logo.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) LOGO256 = kickasm {{ #import "xmega65graphics.asm"
+(const byte*) LOGO256[] = kickasm {{ #import "xmega65graphics.asm"
.var logo256 = LoadPicture("mega65-256.png")
.var palette256 = getPalette(logo256)
.print "width: "+logo256.width + " height: "+logo256.height + " colors: "+palette256.keys().size()
diff --git a/src/test/ref/const-signed-promotion.log b/src/test/ref/const-signed-promotion.log
index 5435e430c..2057a594f 100644
--- a/src/test/ref/const-signed-promotion.log
+++ b/src/test/ref/const-signed-promotion.log
@@ -50,7 +50,7 @@ SYMBOL TABLE SSA
(byte) main::i#1
(byte) main::i#2
(const signed word*) main::screen = (signed word*)(number) $400
-(const signed word*) world = { fill( 3, 0) }
+(const signed word*) world[(number) 3] = { fill( 3, 0) }
Adding number conversion cast (snumber) $190 in *((const signed word*) world + (byte~) main::$1) ← (number) $190
Adding number conversion cast (unumber) 0 in (number~) main::$2 ← (number) 0 * (const byte) SIZEOF_SIGNED_WORD
@@ -362,7 +362,7 @@ FINAL SYMBOL TABLE
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 11.0
(const signed word*) main::screen = (signed word*) 1024
-(const signed word*) world = { fill( 3, 0) }
+(const signed word*) world[(number) 3] = { fill( 3, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::$1 ]
diff --git a/src/test/ref/const-signed-promotion.sym b/src/test/ref/const-signed-promotion.sym
index 4a401deeb..ab9547cda 100644
--- a/src/test/ref/const-signed-promotion.sym
+++ b/src/test/ref/const-signed-promotion.sym
@@ -10,7 +10,7 @@
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 11.0
(const signed word*) main::screen = (signed word*) 1024
-(const signed word*) world = { fill( 3, 0) }
+(const signed word*) world[(number) 3] = { fill( 3, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::$1 ]
diff --git a/src/test/ref/constant-string-concat-0.log b/src/test/ref/constant-string-concat-0.log
index 91114c6f6..fa6f36466 100644
--- a/src/test/ref/constant-string-concat-0.log
+++ b/src/test/ref/constant-string-concat-0.log
@@ -48,7 +48,7 @@ SYMBOL TABLE SSA
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
-(const byte*) main::msg = (string) "camelot"
+(const byte*) main::msg[] = (string) "camelot"
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$0 ← *((const byte*) main::msg + (byte) main::i#2) != (number) 0
@@ -301,7 +301,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
-(const byte*) main::msg = (string) "camelot"
+(const byte*) main::msg[] = (string) "camelot"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/constant-string-concat-0.sym b/src/test/ref/constant-string-concat-0.sym
index 9e9f68403..0094f556e 100644
--- a/src/test/ref/constant-string-concat-0.sym
+++ b/src/test/ref/constant-string-concat-0.sym
@@ -9,6 +9,6 @@
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
-(const byte*) main::msg = (string) "camelot"
+(const byte*) main::msg[] = (string) "camelot"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/constant-string-concat.log b/src/test/ref/constant-string-concat.log
index c5a51c8d2..f60f43e8c 100644
--- a/src/test/ref/constant-string-concat.log
+++ b/src/test/ref/constant-string-concat.log
@@ -40,7 +40,7 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const byte*) main::s = (string) "camelot"
+(const byte*) main::s[] = (string) "camelot"
Simplifying constant pointer cast (byte*) 1024
Successful SSA optimization PassNCastSimplification
@@ -283,7 +283,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) main::s = (string) "camelot"
+(const byte*) main::s[] = (string) "camelot"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/constant-string-concat.sym b/src/test/ref/constant-string-concat.sym
index 3771cd5b7..403ca7084 100644
--- a/src/test/ref/constant-string-concat.sym
+++ b/src/test/ref/constant-string-concat.sym
@@ -8,6 +8,6 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) main::s = (string) "camelot"
+(const byte*) main::s[] = (string) "camelot"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/constants.log b/src/test/ref/constants.log
index 229180ec5..d2903c67a 100644
--- a/src/test/ref/constants.log
+++ b/src/test/ref/constants.log
@@ -541,9 +541,9 @@ SYMBOL TABLE SSA
(byte*) assert_byte::msg#1
(byte*) assert_byte::msg#2
(byte*) assert_byte::msg#3
-(const string) assert_byte::str = (string) " "
-(const string) assert_byte::str1 = (string) "fail!"
-(const string) assert_byte::str2 = (string) "ok"
+(const string) assert_byte::str[] = (string) " "
+(const string) assert_byte::str1[] = (string) "fail!"
+(const string) assert_byte::str2[] = (string) "ok"
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(bool~) assert_sbyte::$2
(label) assert_sbyte::@1
@@ -580,9 +580,9 @@ SYMBOL TABLE SSA
(byte*) assert_sbyte::msg#3
(byte*) assert_sbyte::msg#4
(byte*) assert_sbyte::msg#5
-(const string) assert_sbyte::str = (string) " "
-(const string) assert_sbyte::str1 = (string) "fail!"
-(const string) assert_sbyte::str2 = (string) "ok"
+(const string) assert_sbyte::str[] = (string) " "
+(const string) assert_sbyte::str1[] = (string) "fail!"
+(const string) assert_sbyte::str2[] = (string) "ok"
(void()) main()
(label) main::@1
(label) main::@2
@@ -829,9 +829,9 @@ SYMBOL TABLE SSA
(byte) test_bytes::bc#1
(byte) test_bytes::bd
(byte) test_bytes::bd#0
-(const string) test_bytes::msg = (string) "0=0"
-(const string) test_bytes::msg1 = (string) "0+2=2"
-(const string) test_bytes::msg2 = (string) "0+2-4=254"
+(const string) test_bytes::msg[] = (string) "0=0"
+(const string) test_bytes::msg1[] = (string) "0+2=2"
+(const string) test_bytes::msg2[] = (string) "0+2-4=254"
(void()) test_sbytes()
(number~) test_sbytes::$1
(number~) test_sbytes::$3
@@ -852,11 +852,11 @@ SYMBOL TABLE SSA
(signed byte) test_sbytes::be
(signed byte) test_sbytes::be#0
(const signed byte) test_sbytes::bf = (signed byte)(number) -$7f-(number) $7f
-(const string) test_sbytes::msg = (string) "0=0"
-(const string) test_sbytes::msg1 = (string) "0+2=2"
-(const string) test_sbytes::msg2 = (string) "0+2-4=-2"
-(const string) test_sbytes::msg3 = (string) "-(0+2-4)=2"
-(const string) test_sbytes::msg4 = (string) "-127-127=2"
+(const string) test_sbytes::msg[] = (string) "0=0"
+(const string) test_sbytes::msg1[] = (string) "0+2=2"
+(const string) test_sbytes::msg2[] = (string) "0+2-4=-2"
+(const string) test_sbytes::msg3[] = (string) "-(0+2-4)=2"
+(const string) test_sbytes::msg4[] = (string) "-127-127=2"
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#9)
@@ -3020,8 +3020,8 @@ FINAL SYMBOL TABLE
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(byte*) 1024
-(const string) msg = (string) "0=0"
-(const string) msg1 = (string) "0+2=2"
+(const string) msg[] = (string) "0=0"
+(const string) msg1[] = (string) "0+2=2"
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 11.0
(byte*) print_char_cursor#2 print_char_cursor zp[2]:2 2.230769230769231
@@ -3051,9 +3051,9 @@ FINAL SYMBOL TABLE
(byte*) print_str::str#10 str zp[2]:7 11.5
(byte*) print_str::str#11 str zp[2]:7 6.0
(byte*) print_str::str#5 str zp[2]:7 2.0
-(const string) str = (string) " "
-(const string) str1 = (string) "fail!"
-(const string) str2 = (string) "ok"
+(const string) str[] = (string) " "
+(const string) str1[] = (string) "fail!"
+(const string) str2[] = (string) "ok"
(void()) test_bytes()
(label) test_bytes::@1
(label) test_bytes::@2
@@ -3063,7 +3063,7 @@ FINAL SYMBOL TABLE
(const byte) test_bytes::bc#0 bc = (byte) 2
(byte) test_bytes::bd
(const byte) test_bytes::bd#0 bd = (byte)(signed byte)(const byte) test_bytes::bc#0-(signed byte) 4
-(const string) test_bytes::msg2 = (string) "0+2-4=254"
+(const string) test_bytes::msg2[] = (string) "0+2-4=254"
(void()) test_sbytes()
(label) test_sbytes::@1
(label) test_sbytes::@2
@@ -3078,9 +3078,9 @@ FINAL SYMBOL TABLE
(signed byte) test_sbytes::be
(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0
(const signed byte) test_sbytes::bf = (signed byte)(number) -$7f-(number) $7f
-(const string) test_sbytes::msg2 = (string) "0+2-4=-2"
-(const string) test_sbytes::msg3 = (string) "-(0+2-4)=2"
-(const string) test_sbytes::msg4 = (string) "-127-127=2"
+(const string) test_sbytes::msg2[] = (string) "0+2-4=-2"
+(const string) test_sbytes::msg3[] = (string) "-(0+2-4)=2"
+(const string) test_sbytes::msg4[] = (string) "-127-127=2"
reg byte x [ assert_sbyte::b#5 ]
zp[2]:2 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#85 print_char_cursor#1 print_char_cursor#91 print_char_cursor#92 ]
diff --git a/src/test/ref/constants.sym b/src/test/ref/constants.sym
index 31e1d4e63..bcbc3b735 100644
--- a/src/test/ref/constants.sym
+++ b/src/test/ref/constants.sym
@@ -54,8 +54,8 @@
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(byte*) 1024
-(const string) msg = (string) "0=0"
-(const string) msg1 = (string) "0+2=2"
+(const string) msg[] = (string) "0=0"
+(const string) msg1[] = (string) "0+2=2"
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:2 11.0
(byte*) print_char_cursor#2 print_char_cursor zp[2]:2 2.230769230769231
@@ -85,9 +85,9 @@
(byte*) print_str::str#10 str zp[2]:7 11.5
(byte*) print_str::str#11 str zp[2]:7 6.0
(byte*) print_str::str#5 str zp[2]:7 2.0
-(const string) str = (string) " "
-(const string) str1 = (string) "fail!"
-(const string) str2 = (string) "ok"
+(const string) str[] = (string) " "
+(const string) str1[] = (string) "fail!"
+(const string) str2[] = (string) "ok"
(void()) test_bytes()
(label) test_bytes::@1
(label) test_bytes::@2
@@ -97,7 +97,7 @@
(const byte) test_bytes::bc#0 bc = (byte) 2
(byte) test_bytes::bd
(const byte) test_bytes::bd#0 bd = (byte)(signed byte)(const byte) test_bytes::bc#0-(signed byte) 4
-(const string) test_bytes::msg2 = (string) "0+2-4=254"
+(const string) test_bytes::msg2[] = (string) "0+2-4=254"
(void()) test_sbytes()
(label) test_sbytes::@1
(label) test_sbytes::@2
@@ -112,9 +112,9 @@
(signed byte) test_sbytes::be
(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0
(const signed byte) test_sbytes::bf = (signed byte)(number) -$7f-(number) $7f
-(const string) test_sbytes::msg2 = (string) "0+2-4=-2"
-(const string) test_sbytes::msg3 = (string) "-(0+2-4)=2"
-(const string) test_sbytes::msg4 = (string) "-127-127=2"
+(const string) test_sbytes::msg2[] = (string) "0+2-4=-2"
+(const string) test_sbytes::msg3[] = (string) "-(0+2-4)=2"
+(const string) test_sbytes::msg4[] = (string) "-127-127=2"
reg byte x [ assert_sbyte::b#5 ]
zp[2]:2 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#85 print_char_cursor#1 print_char_cursor#91 print_char_cursor#92 ]
diff --git a/src/test/ref/cordic-atan2-16-ref.log b/src/test/ref/cordic-atan2-16-ref.log
index d3471b281..de88811c9 100644
--- a/src/test/ref/cordic-atan2-16-ref.log
+++ b/src/test/ref/cordic-atan2-16-ref.log
@@ -625,18 +625,18 @@ SYMBOL TABLE SSA
(label) @end
(const byte*) CHARSET = (byte*)(number) $2000
(const byte*) COLS = (byte*)(number) $d800
-(const word*) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
.if(i>351) { .byte round(((512-i)*(512-i))/256) }
}
}}
-(const byte*) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr2[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
.if(i>351) { .byte round(((i-511)*(i-511))/256) }
}
}}
(const signed byte*) pp = (signed byte*)(number) $f3
-(const signed byte*) pps = { fill( 8, 0) }
+(const signed byte*) pps[(number) 8] = { fill( 8, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0
(number~) print_byte_at::$2
@@ -1806,7 +1806,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(bool~) print_sbyte_at::$0
(byte~) print_sbyte_at::$1
@@ -1984,7 +1984,7 @@ SYMBOL TABLE SSA
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0
(signed byte) rotate_matrix::z#1
-(const signed byte*) rotation_matrix = { fill( 9, 0) }
+(const signed byte*) rotation_matrix[(number) 9] = { fill( 9, 0) }
(void()) sprites_init()
(byte*~) sprites_init::$0
(byte*~) sprites_init::$1
@@ -2063,18 +2063,18 @@ SYMBOL TABLE SSA
(signed byte) sy#9
(const signed byte) sz = (signed byte) 0
(const signed byte*) xp = (signed byte*)(number) $f4
-(const signed byte*) xps = { fill( 8, 0) }
+(const signed byte*) xps[(number) 8] = { fill( 8, 0) }
(const signed byte*) xr = (signed byte*)(number) $f0
-(const signed byte*) xrs = { fill( 8, 0) }
-(const signed byte*) xs = { (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 }
+(const signed byte*) xrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) xs[(number) 8] = { (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 }
(const signed byte*) yp = (signed byte*)(number) $f5
-(const signed byte*) yps = { fill( 8, 0) }
+(const signed byte*) yps[(number) 8] = { fill( 8, 0) }
(const signed byte*) yr = (signed byte*)(number) $f1
-(const signed byte*) yrs = { fill( 8, 0) }
-(const signed byte*) ys = { (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34 }
+(const signed byte*) yrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) ys[(number) 8] = { (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34 }
(const signed byte*) zr = (signed byte*)(number) $f2
-(const signed byte*) zrs = { fill( 8, 0) }
-(const signed byte*) zs = { (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 }
+(const signed byte*) zrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) zs[(number) 8] = { (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 }
Adding number conversion cast (unumber) $40 in
Adding number conversion cast (unumber) $40 in
@@ -9136,7 +9136,7 @@ FINAL SYMBOL TABLE
(const byte) GREEN = (number) 5
(const byte) LIGHT_BLUE = (number) $e
(const byte) LIGHT_GREY = (number) $f
-(const signed byte*) PERSP_Z = kickasm {{ {
+(const signed byte*) PERSP_Z[(number) $100] = kickasm {{ {
.var d = 256.0
.var z0 = 6.0
// These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
@@ -9155,7 +9155,7 @@ FINAL SYMBOL TABLE
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed byte*) SINH = kickasm {{ {
+(const signed byte*) SINH[(number) $140] = kickasm {{ {
.var min = -$2000
.var max = $2000
.var ampl = max-min;
@@ -9165,7 +9165,7 @@ FINAL SYMBOL TABLE
}
}
}}
-(const signed byte*) SINQ = kickasm {{ {
+(const signed byte*) SINQ[(number) $140] = kickasm {{ {
.var min = -$1000
.var max = $1000
.var ampl = max-min;
@@ -9403,18 +9403,18 @@ FINAL SYMBOL TABLE
(byte) debug_print_init::j
(byte) debug_print_init::j#1 reg byte y 151.5
(byte) debug_print_init::j#2 reg byte y 55.54999999999999
-(const string) debug_print_init::str = (string) "sx"
-(const string) debug_print_init::str1 = (string) "sy"
-(const string) debug_print_init::str10 = (string) "xp"
-(const string) debug_print_init::str11 = (string) "yp"
-(const string) debug_print_init::str2 = (string) "sz"
-(const string) debug_print_init::str3 = (string) "x"
-(const string) debug_print_init::str4 = (string) "y"
-(const string) debug_print_init::str5 = (string) "z"
-(const string) debug_print_init::str6 = (string) "xr"
-(const string) debug_print_init::str7 = (string) "yr"
-(const string) debug_print_init::str8 = (string) "zr"
-(const string) debug_print_init::str9 = (string) "pp"
+(const string) debug_print_init::str[] = (string) "sx"
+(const string) debug_print_init::str1[] = (string) "sy"
+(const string) debug_print_init::str10[] = (string) "xp"
+(const string) debug_print_init::str11[] = (string) "yp"
+(const string) debug_print_init::str2[] = (string) "sz"
+(const string) debug_print_init::str3[] = (string) "x"
+(const string) debug_print_init::str4[] = (string) "y"
+(const string) debug_print_init::str5[] = (string) "z"
+(const string) debug_print_init::str6[] = (string) "xr"
+(const string) debug_print_init::str7[] = (string) "yr"
+(const string) debug_print_init::str8[] = (string) "zr"
+(const string) debug_print_init::str9[] = (string) "pp"
(void()) main()
(label) main::@1
(label) main::@2
@@ -9435,20 +9435,20 @@ FINAL SYMBOL TABLE
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
-(const byte*) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr1[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((i*i)/256) }
.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
.if(i>351) { .byte round(((512-i)*(512-i))/256) }
}
}}
-(const byte*) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr2[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
.if(i>351) { .byte round(((i-511)*(i-511))/256) }
}
}}
(const signed byte*) pp = (signed byte*) 243
-(const signed byte*) pps = { fill( 8, 0) }
+(const signed byte*) pps[(number) 8] = { fill( 8, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte y 4.0
(byte~) print_byte_at::$2 reg byte x 2.0
@@ -9472,7 +9472,7 @@ FINAL SYMBOL TABLE
(byte) print_char_at::ch#4 reg byte y 6.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
@@ -9538,7 +9538,7 @@ FINAL SYMBOL TABLE
(signed byte) rotate_matrix::y#0 y zp[1]:6 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 z zp[1]:4 34.33333333333333
-(const signed byte*) rotation_matrix = { fill( 9, 0) }
+(const signed byte*) rotation_matrix[(number) 9] = { fill( 9, 0) }
(void()) sprites_init()
(label) sprites_init::@1
(label) sprites_init::@return
@@ -9558,18 +9558,18 @@ FINAL SYMBOL TABLE
(signed byte) sy#3 sy zp[1]:3 22.0
(const signed byte) sz = (signed byte) 0
(const signed byte*) xp = (signed byte*) 244
-(const signed byte*) xps = { fill( 8, 0) }
+(const signed byte*) xps[(number) 8] = { fill( 8, 0) }
(const signed byte*) xr = (signed byte*) 240
-(const signed byte*) xrs = { fill( 8, 0) }
-(const signed byte*) xs = { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
+(const signed byte*) xrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) xs[(number) 8] = { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
(const signed byte*) yp = (signed byte*) 245
-(const signed byte*) yps = { fill( 8, 0) }
+(const signed byte*) yps[(number) 8] = { fill( 8, 0) }
(const signed byte*) yr = (signed byte*) 241
-(const signed byte*) yrs = { fill( 8, 0) }
-(const signed byte*) ys = { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 }
+(const signed byte*) yrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) ys[(number) 8] = { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 }
(const signed byte*) zr = (signed byte*) 242
-(const signed byte*) zrs = { fill( 8, 0) }
-(const signed byte*) zs = { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
+(const signed byte*) zrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) zs[(number) 8] = { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
diff --git a/src/test/ref/examples/3d/3d.sym b/src/test/ref/examples/3d/3d.sym
index d0dde9a0d..529672c5d 100644
--- a/src/test/ref/examples/3d/3d.sym
+++ b/src/test/ref/examples/3d/3d.sym
@@ -7,7 +7,7 @@
(const byte) GREEN = (number) 5
(const byte) LIGHT_BLUE = (number) $e
(const byte) LIGHT_GREY = (number) $f
-(const signed byte*) PERSP_Z = kickasm {{ {
+(const signed byte*) PERSP_Z[(number) $100] = kickasm {{ {
.var d = 256.0
.var z0 = 6.0
// These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
@@ -26,7 +26,7 @@
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const signed byte*) SINH = kickasm {{ {
+(const signed byte*) SINH[(number) $140] = kickasm {{ {
.var min = -$2000
.var max = $2000
.var ampl = max-min;
@@ -36,7 +36,7 @@
}
}
}}
-(const signed byte*) SINQ = kickasm {{ {
+(const signed byte*) SINQ[(number) $140] = kickasm {{ {
.var min = -$1000
.var max = $1000
.var ampl = max-min;
@@ -274,18 +274,18 @@
(byte) debug_print_init::j
(byte) debug_print_init::j#1 reg byte y 151.5
(byte) debug_print_init::j#2 reg byte y 55.54999999999999
-(const string) debug_print_init::str = (string) "sx"
-(const string) debug_print_init::str1 = (string) "sy"
-(const string) debug_print_init::str10 = (string) "xp"
-(const string) debug_print_init::str11 = (string) "yp"
-(const string) debug_print_init::str2 = (string) "sz"
-(const string) debug_print_init::str3 = (string) "x"
-(const string) debug_print_init::str4 = (string) "y"
-(const string) debug_print_init::str5 = (string) "z"
-(const string) debug_print_init::str6 = (string) "xr"
-(const string) debug_print_init::str7 = (string) "yr"
-(const string) debug_print_init::str8 = (string) "zr"
-(const string) debug_print_init::str9 = (string) "pp"
+(const string) debug_print_init::str[] = (string) "sx"
+(const string) debug_print_init::str1[] = (string) "sy"
+(const string) debug_print_init::str10[] = (string) "xp"
+(const string) debug_print_init::str11[] = (string) "yp"
+(const string) debug_print_init::str2[] = (string) "sz"
+(const string) debug_print_init::str3[] = (string) "x"
+(const string) debug_print_init::str4[] = (string) "y"
+(const string) debug_print_init::str5[] = (string) "z"
+(const string) debug_print_init::str6[] = (string) "xr"
+(const string) debug_print_init::str7[] = (string) "yr"
+(const string) debug_print_init::str8[] = (string) "zr"
+(const string) debug_print_init::str9[] = (string) "pp"
(void()) main()
(label) main::@1
(label) main::@2
@@ -306,20 +306,20 @@
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
-(const byte*) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr1[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((i*i)/256) }
.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
.if(i>351) { .byte round(((512-i)*(512-i))/256) }
}
}}
-(const byte*) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr2[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
.if(i>351) { .byte round(((i-511)*(i-511))/256) }
}
}}
(const signed byte*) pp = (signed byte*) 243
-(const signed byte*) pps = { fill( 8, 0) }
+(const signed byte*) pps[(number) 8] = { fill( 8, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte y 4.0
(byte~) print_byte_at::$2 reg byte x 2.0
@@ -343,7 +343,7 @@
(byte) print_char_at::ch#4 reg byte y 6.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
@@ -409,7 +409,7 @@
(signed byte) rotate_matrix::y#0 y zp[1]:6 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 z zp[1]:4 34.33333333333333
-(const signed byte*) rotation_matrix = { fill( 9, 0) }
+(const signed byte*) rotation_matrix[(number) 9] = { fill( 9, 0) }
(void()) sprites_init()
(label) sprites_init::@1
(label) sprites_init::@return
@@ -429,18 +429,18 @@
(signed byte) sy#3 sy zp[1]:3 22.0
(const signed byte) sz = (signed byte) 0
(const signed byte*) xp = (signed byte*) 244
-(const signed byte*) xps = { fill( 8, 0) }
+(const signed byte*) xps[(number) 8] = { fill( 8, 0) }
(const signed byte*) xr = (signed byte*) 240
-(const signed byte*) xrs = { fill( 8, 0) }
-(const signed byte*) xs = { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
+(const signed byte*) xrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) xs[(number) 8] = { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
(const signed byte*) yp = (signed byte*) 245
-(const signed byte*) yps = { fill( 8, 0) }
+(const signed byte*) yps[(number) 8] = { fill( 8, 0) }
(const signed byte*) yr = (signed byte*) 241
-(const signed byte*) yrs = { fill( 8, 0) }
-(const signed byte*) ys = { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 }
+(const signed byte*) yrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) ys[(number) 8] = { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 }
(const signed byte*) zr = (signed byte*) 242
-(const signed byte*) zrs = { fill( 8, 0) }
-(const signed byte*) zs = { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
+(const signed byte*) zrs[(number) 8] = { fill( 8, 0) }
+(const signed byte*) zs[(number) 8] = { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
diff --git a/src/test/ref/examples/3d/perspective.log b/src/test/ref/examples/3d/perspective.log
index 5affccb42..1918c4d40 100644
--- a/src/test/ref/examples/3d/perspective.log
+++ b/src/test/ref/examples/3d/perspective.log
@@ -526,7 +526,7 @@ SYMBOL TABLE SSA
(label) @45
(label) @begin
(label) @end
-(const signed byte*) PERSP_Z = kickasm {{ {
+(const signed byte*) PERSP_Z[(number) $100] = kickasm {{ {
.var d = 256.0
.var z0 = 5.0
.for(var z=0;z<$100;z++) {
@@ -559,12 +559,12 @@ SYMBOL TABLE SSA
(label) do_perspective::@8
(label) do_perspective::@9
(label) do_perspective::@return
-(const string) do_perspective::str = (string) "("
-(const string) do_perspective::str1 = (string) ","
-(const string) do_perspective::str2 = (string) ","
-(const string) do_perspective::str3 = (string) ") -> ("
-(const string) do_perspective::str4 = (string) ","
-(const string) do_perspective::str5 = (string) ")"
+(const string) do_perspective::str[] = (string) "("
+(const string) do_perspective::str1[] = (string) ","
+(const string) do_perspective::str2[] = (string) ","
+(const string) do_perspective::str3[] = (string) ") -> ("
+(const string) do_perspective::str4[] = (string) ","
+(const string) do_perspective::str5[] = (string) ")"
(signed byte) do_perspective::x
(signed byte) do_perspective::x#0
(signed byte) do_perspective::x#1
@@ -669,8 +669,8 @@ SYMBOL TABLE SSA
(signed word) mulf_init::sqr#2
(byte) mulf_init::val
(byte) mulf_init::val#0
-(const byte*) mulf_sqr1 = { fill( $200, 0) }
-(const byte*) mulf_sqr2 = { fill( $200, 0) }
+(const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) }
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
(label) perspective::@return
(signed byte) perspective::x
@@ -783,7 +783,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -3324,7 +3324,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const signed byte*) PERSP_Z = kickasm {{ {
+(const signed byte*) PERSP_Z[(number) $100] = kickasm {{ {
.var d = 256.0
.var z0 = 5.0
.for(var z=0;z<$100;z++) {
@@ -3354,10 +3354,10 @@ FINAL SYMBOL TABLE
(label) do_perspective::@8
(label) do_perspective::@9
(label) do_perspective::@return
-(const string) do_perspective::str = (string) "("
-(const string) do_perspective::str1 = (string) ","
-(const string) do_perspective::str3 = (string) ") -> ("
-(const string) do_perspective::str5 = (string) ")"
+(const string) do_perspective::str[] = (string) "("
+(const string) do_perspective::str1[] = (string) ","
+(const string) do_perspective::str3[] = (string) ") -> ("
+(const string) do_perspective::str5[] = (string) ")"
(signed byte) do_perspective::x
(const signed byte) do_perspective::x#0 x = (signed byte) $39
(signed byte) do_perspective::y
@@ -3401,8 +3401,8 @@ FINAL SYMBOL TABLE
(signed word) mulf_init::sqr#2 sqr zp[2]:2 2.5384615384615383
(byte) mulf_init::val
(byte) mulf_init::val#0 val zp[1]:6 9.0
-(const byte*) mulf_sqr1 = { fill( $200, 0) }
-(const byte*) mulf_sqr2 = { fill( $200, 0) }
+(const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) }
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
(label) perspective::@return
(signed byte) perspective::x
@@ -3433,7 +3433,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#74 print_char_cursor zp[2]:4 12.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5
(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 22.0
diff --git a/src/test/ref/examples/3d/perspective.sym b/src/test/ref/examples/3d/perspective.sym
index ae3cd0895..d962da882 100644
--- a/src/test/ref/examples/3d/perspective.sym
+++ b/src/test/ref/examples/3d/perspective.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const signed byte*) PERSP_Z = kickasm {{ {
+(const signed byte*) PERSP_Z[(number) $100] = kickasm {{ {
.var d = 256.0
.var z0 = 5.0
.for(var z=0;z<$100;z++) {
@@ -31,10 +31,10 @@
(label) do_perspective::@8
(label) do_perspective::@9
(label) do_perspective::@return
-(const string) do_perspective::str = (string) "("
-(const string) do_perspective::str1 = (string) ","
-(const string) do_perspective::str3 = (string) ") -> ("
-(const string) do_perspective::str5 = (string) ")"
+(const string) do_perspective::str[] = (string) "("
+(const string) do_perspective::str1[] = (string) ","
+(const string) do_perspective::str3[] = (string) ") -> ("
+(const string) do_perspective::str5[] = (string) ")"
(signed byte) do_perspective::x
(const signed byte) do_perspective::x#0 x = (signed byte) $39
(signed byte) do_perspective::y
@@ -78,8 +78,8 @@
(signed word) mulf_init::sqr#2 sqr zp[2]:2 2.5384615384615383
(byte) mulf_init::val
(byte) mulf_init::val#0 val zp[1]:6 9.0
-(const byte*) mulf_sqr1 = { fill( $200, 0) }
-(const byte*) mulf_sqr2 = { fill( $200, 0) }
+(const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) }
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
(label) perspective::@return
(signed byte) perspective::x
@@ -110,7 +110,7 @@
(byte*) print_char_cursor#74 print_char_cursor zp[2]:4 12.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 16.5
(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 22.0
diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log
index 6c876ce56..c8766b0e6 100644
--- a/src/test/ref/examples/bresenham/bitmap-bresenham.log
+++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log
@@ -1180,11 +1180,11 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) init_screen()
(bool~) init_screen::$0
(label) init_screen::@1
@@ -1210,8 +1210,8 @@ SYMBOL TABLE SSA
(byte) lines::l#3
(byte) lines::l#4
(const byte) lines_cnt = (byte) 8
-(const byte*) lines_x = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c }
-(const byte*) lines_y = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a }
+(const byte*) lines_x[] = { (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c }
+(const byte*) lines_y[] = { (byte)(number) $a, (byte)(number) $28, (byte)(number) $3c, (byte)(number) $50, (byte)(number) $6e, (byte)(number) $50, (byte)(number) $3c, (byte)(number) $28, (byte)(number) $a }
(void()) main()
(label) main::@1
(label) main::@3
@@ -5450,11 +5450,11 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#2 reg byte y 2002.0
(byte) bitmap_plot::y#3 reg byte y 2002.0
(byte) bitmap_plot::y#4 reg byte y 2004.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) init_screen()
(label) init_screen::@1
(label) init_screen::@2
@@ -5471,8 +5471,8 @@ FINAL SYMBOL TABLE
(byte) lines::l#1 l zp[1]:6 202.0
(byte) lines::l#2 l zp[1]:6 101.0
(const byte) lines_cnt = (byte) 8
-(const byte*) lines_x = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c }
-(const byte*) lines_y = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a }
+(const byte*) lines_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c }
+(const byte*) lines_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a }
(void()) main()
(label) main::@1
(label) main::@2
diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.sym b/src/test/ref/examples/bresenham/bitmap-bresenham.sym
index f2998b165..20daca14e 100644
--- a/src/test/ref/examples/bresenham/bitmap-bresenham.sym
+++ b/src/test/ref/examples/bresenham/bitmap-bresenham.sym
@@ -260,11 +260,11 @@
(byte) bitmap_plot::y#2 reg byte y 2002.0
(byte) bitmap_plot::y#3 reg byte y 2002.0
(byte) bitmap_plot::y#4 reg byte y 2004.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_xhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_xlo = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(void()) init_screen()
(label) init_screen::@1
(label) init_screen::@2
@@ -281,8 +281,8 @@
(byte) lines::l#1 l zp[1]:6 202.0
(byte) lines::l#2 l zp[1]:6 101.0
(const byte) lines_cnt = (byte) 8
-(const byte*) lines_x = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c }
-(const byte*) lines_y = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a }
+(const byte*) lines_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c }
+(const byte*) lines_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a }
(void()) main()
(label) main::@1
(label) main::@2
diff --git a/src/test/ref/examples/chargen/chargen-analysis.log b/src/test/ref/examples/chargen/chargen-analysis.log
index cbf28b042..9098d4389 100644
--- a/src/test/ref/examples/chargen/chargen-analysis.log
+++ b/src/test/ref/examples/chargen/chargen-analysis.log
@@ -563,7 +563,7 @@ SYMBOL TABLE SSA
(const byte) KEY_Z = (number) $c
(const byte*) PROCPORT = (byte*)(number) 1
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f }
+(const byte*) keyboard_char_keycodes[] = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f }
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -611,7 +611,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -626,7 +626,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) main()
(byte*~) main::$0
(byte*~) main::$11
@@ -766,10 +766,10 @@ SYMBOL TABLE SSA
(byte) main::shift#7
(byte) main::shift#8
(byte) main::shift#9
-(const string) main::str = (string) "f1"
-(const string) main::str1 = (string) "f3"
-(const string) main::str2 = (string) "f5"
-(const string) main::str3 = (string) "f7"
+(const string) main::str[] = (string) "f1"
+(const string) main::str1[] = (string) "f3"
+(const string) main::str2[] = (string) "f5"
+(const string) main::str3[] = (string) "f7"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(bool~) mul8u::$0
(number~) mul8u::$1
@@ -4379,7 +4379,7 @@ FINAL SYMBOL TABLE
(const byte) KEY_Z = (number) $c
(const byte*) PROCPORT = (byte*) 1
(const byte*) SCREEN = (byte*) 1024
-(const byte*) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
+(const byte*) keyboard_char_keycodes[] = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -4406,7 +4406,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -4415,7 +4415,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$15 reg byte a 22.0
(byte~) main::$18 reg byte a 22.0
@@ -4475,10 +4475,10 @@ FINAL SYMBOL TABLE
(byte*) main::sc#2 sc zp[2]:6 14.666666666666666
(byte) main::shift
(byte) main::shift#9 shift zp[1]:4 5.315789473684211
-(const string) main::str = (string) "f1"
-(const string) main::str1 = (string) "f3"
-(const string) main::str2 = (string) "f5"
-(const string) main::str3 = (string) "f7"
+(const string) main::str[] = (string) "f1"
+(const string) main::str1[] = (string) "f3"
+(const string) main::str2[] = (string) "f5"
+(const string) main::str3[] = (string) "f7"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
diff --git a/src/test/ref/examples/chargen/chargen-analysis.sym b/src/test/ref/examples/chargen/chargen-analysis.sym
index a24c62558..0cc95a930 100644
--- a/src/test/ref/examples/chargen/chargen-analysis.sym
+++ b/src/test/ref/examples/chargen/chargen-analysis.sym
@@ -61,7 +61,7 @@
(const byte) KEY_Z = (number) $c
(const byte*) PROCPORT = (byte*) 1
(const byte*) SCREEN = (byte*) 1024
-(const byte*) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
+(const byte*) keyboard_char_keycodes[] = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -88,7 +88,7 @@
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -97,7 +97,7 @@
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$15 reg byte a 22.0
(byte~) main::$18 reg byte a 22.0
@@ -157,10 +157,10 @@
(byte*) main::sc#2 sc zp[2]:6 14.666666666666666
(byte) main::shift
(byte) main::shift#9 shift zp[1]:4 5.315789473684211
-(const string) main::str = (string) "f1"
-(const string) main::str1 = (string) "f3"
-(const string) main::str2 = (string) "f5"
-(const string) main::str3 = (string) "f7"
+(const string) main::str[] = (string) "f1"
+(const string) main::str1[] = (string) "f3"
+(const string) main::str2[] = (string) "f5"
+(const string) main::str3[] = (string) "f7"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.log b/src/test/ref/examples/fastmultiply/fastmultiply8.log
index cefad6cd9..6435fee5d 100644
--- a/src/test/ref/examples/fastmultiply/fastmultiply8.log
+++ b/src/test/ref/examples/fastmultiply/fastmultiply8.log
@@ -512,13 +512,13 @@ SYMBOL TABLE SSA
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
-(const byte*) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr1[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((i*i)/256) }
.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
.if(i>351) { .byte round(((512-i)*(512-i))/256) }
}
}}
-(const byte*) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr2[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
.if(i>351) { .byte round(((i-511)*(i-511))/256) }
@@ -556,7 +556,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(bool~) print_sbyte_at::$0
(byte~) print_sbyte_at::$1
@@ -596,7 +596,7 @@ SYMBOL TABLE SSA
(byte*) print_screen#2
(byte*) print_screen#3
(byte*) print_screen#4
-(const signed byte*) vals = { (signed byte)(number) -$5f, (signed byte)(number) -$40, (signed byte)(number) -$20, (signed byte)(number) -$10, (signed byte)(number) 0, (signed byte)(number) $10, (signed byte)(number) $20, (signed byte)(number) $40, (signed byte)(number) $5f }
+(const signed byte*) vals[] = { (signed byte)(number) -$5f, (signed byte)(number) -$40, (signed byte)(number) -$20, (signed byte)(number) -$10, (signed byte)(number) 0, (signed byte)(number) $10, (signed byte)(number) $20, (signed byte)(number) $40, (signed byte)(number) $5f }
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (snumber) 0 in (bool~) print_sbyte_at::$0 ← (signed byte) print_sbyte_at::b#4 < (number) 0
@@ -2727,13 +2727,13 @@ FINAL SYMBOL TABLE
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
-(const byte*) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr1[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((i*i)/256) }
.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
.if(i>351) { .byte round(((512-i)*(512-i))/256) }
}
}}
-(const byte*) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr2[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
.if(i>351) { .byte round(((i-511)*(i-511))/256) }
@@ -2762,7 +2762,7 @@ FINAL SYMBOL TABLE
(byte) print_char_at::ch#4 ch zp[1]:9 6.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
@@ -2783,7 +2783,7 @@ FINAL SYMBOL TABLE
(signed byte) print_sbyte_at::b#6 b zp[1]:8 4.0
(byte*) print_screen
(const byte*) print_screen#0 print_screen = (byte*) 1024
-(const signed byte*) vals = { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f }
+(const signed byte*) vals[] = { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f }
reg byte x [ main::k#2 main::k#1 ]
zp[1]:2 [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.sym b/src/test/ref/examples/fastmultiply/fastmultiply8.sym
index caca46f17..da7e370c8 100644
--- a/src/test/ref/examples/fastmultiply/fastmultiply8.sym
+++ b/src/test/ref/examples/fastmultiply/fastmultiply8.sym
@@ -77,13 +77,13 @@
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
-(const byte*) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr1[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((i*i)/256) }
.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
.if(i>351) { .byte round(((512-i)*(512-i))/256) }
}
}}
-(const byte*) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
+(const byte*) mulf_sqr2[(number) $200] = kickasm {{ .for(var i=0;i<$200;i++) {
.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
.if(i>351) { .byte round(((i-511)*(i-511))/256) }
@@ -112,7 +112,7 @@
(byte) print_char_at::ch#4 ch zp[1]:9 6.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
@@ -133,7 +133,7 @@
(signed byte) print_sbyte_at::b#6 b zp[1]:8 4.0
(byte*) print_screen
(const byte*) print_screen#0 print_screen = (byte*) 1024
-(const signed byte*) vals = { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f }
+(const signed byte*) vals[] = { (signed byte) -$5f, (signed byte) -$40, (signed byte) -$20, (signed byte) -$10, (signed byte) 0, (signed byte) $10, (signed byte) $20, (signed byte) $40, (signed byte) $5f }
reg byte x [ main::k#2 main::k#1 ]
zp[1]:2 [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/examples/fire/fire.log b/src/test/ref/examples/fire/fire.log
index 87d73fecd..9400b5589 100644
--- a/src/test/ref/examples/fire/fire.log
+++ b/src/test/ref/examples/fire/fire.log
@@ -630,7 +630,7 @@ SYMBOL TABLE SSA
(byte) makecharset::bc#7
(byte) makecharset::bc#8
(byte) makecharset::bc#9
-(const byte*) makecharset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte) makecharset::c
(byte) makecharset::c#0
(byte) makecharset::c#1
@@ -3393,7 +3393,7 @@ FINAL SYMBOL TABLE
(byte) makecharset::bc#3 reg byte x 275.5
(byte) makecharset::bc#6 reg byte x 101.0
(byte) makecharset::bc#7 reg byte x 1501.5
-(const byte*) makecharset::bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte) makecharset::c
(byte) makecharset::c#1 c zp[1]:6 22.0
(byte) makecharset::c#2 c zp[1]:6 49.238095238095234
diff --git a/src/test/ref/examples/fire/fire.sym b/src/test/ref/examples/fire/fire.sym
index b93ff781a..b22abd006 100644
--- a/src/test/ref/examples/fire/fire.sym
+++ b/src/test/ref/examples/fire/fire.sym
@@ -111,7 +111,7 @@
(byte) makecharset::bc#3 reg byte x 275.5
(byte) makecharset::bc#6 reg byte x 101.0
(byte) makecharset::bc#7 reg byte x 1501.5
-(const byte*) makecharset::bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte) makecharset::c
(byte) makecharset::c#1 c zp[1]:6 22.0
(byte) makecharset::c#2 c zp[1]:6 49.238095238095234
diff --git a/src/test/ref/examples/helloworld/helloworld.log b/src/test/ref/examples/helloworld/helloworld.log
index 4c28226c0..42a841a71 100644
--- a/src/test/ref/examples/helloworld/helloworld.log
+++ b/src/test/ref/examples/helloworld/helloworld.log
@@ -161,7 +161,7 @@ SYMBOL TABLE SSA
(label) main::@1
(label) main::@2
(label) main::@return
-(const string) main::str = (string) "hello world!"
+(const string) main::str[] = (string) "hello world!"
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
@@ -751,7 +751,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@1
(label) main::@return
-(const string) main::str = (string) "hello world!"
+(const string) main::str[] = (string) "hello world!"
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0
(byte*) print_char_cursor#10 print_char_cursor zp[2]:4 4.4
diff --git a/src/test/ref/examples/helloworld/helloworld.sym b/src/test/ref/examples/helloworld/helloworld.sym
index 8f9f5901b..f28dd9764 100644
--- a/src/test/ref/examples/helloworld/helloworld.sym
+++ b/src/test/ref/examples/helloworld/helloworld.sym
@@ -8,7 +8,7 @@
(void()) main()
(label) main::@1
(label) main::@return
-(const string) main::str = (string) "hello world!"
+(const string) main::str[] = (string) "hello world!"
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp[2]:4 11.0
(byte*) print_char_cursor#10 print_char_cursor zp[2]:4 4.4
diff --git a/src/test/ref/examples/linking/linking.log b/src/test/ref/examples/linking/linking.log
index 905317eb0..082e92ef0 100644
--- a/src/test/ref/examples/linking/linking.log
+++ b/src/test/ref/examples/linking/linking.log
@@ -83,7 +83,7 @@ SYMBOL TABLE SSA
(label) @end
(const byte*) BGCOL = (byte*)(number) $d021
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) base = { fill( $100, 0) }
+(const byte*) base[(number) $100] = { fill( $100, 0) }
(void()) fillscreen((byte) fillscreen::c)
(byte*~) fillscreen::$0
(bool~) fillscreen::$1
@@ -627,7 +627,7 @@ FINAL SYMBOL TABLE
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) SCREEN = (byte*) 1024
-(const byte*) base = { fill( $100, 0) }
+(const byte*) base[(number) $100] = { fill( $100, 0) }
(void()) fillscreen((byte) fillscreen::c)
(byte~) fillscreen::$2 reg byte a 202.0
(label) fillscreen::@1
diff --git a/src/test/ref/examples/linking/linking.sym b/src/test/ref/examples/linking/linking.sym
index 8a14ee664..1fc0e85c6 100644
--- a/src/test/ref/examples/linking/linking.sym
+++ b/src/test/ref/examples/linking/linking.sym
@@ -3,7 +3,7 @@
(label) @end
(const byte*) BGCOL = (byte*) 53281
(const byte*) SCREEN = (byte*) 1024
-(const byte*) base = { fill( $100, 0) }
+(const byte*) base[(number) $100] = { fill( $100, 0) }
(void()) fillscreen((byte) fillscreen::c)
(byte~) fillscreen::$2 reg byte a 202.0
(label) fillscreen::@1
diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log
index 04e3f18f8..ea1407277 100644
--- a/src/test/ref/examples/multiplexer/simple-multiplexer.log
+++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log
@@ -603,8 +603,8 @@ SYMBOL TABLE SSA
(const byte*) D011 = (byte*)(number) $d011
(const byte) GREEN = (number) 5
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(byte*) PLEX_SCREEN_PTR#0
(byte*) PLEX_SCREEN_PTR#1
@@ -651,9 +651,9 @@ SYMBOL TABLE SSA
(byte*) PLEX_SCREEN_PTR#7
(byte*) PLEX_SCREEN_PTR#8
(byte*) PLEX_SCREEN_PTR#9
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
(const byte) SIZEOF_WORD = (byte) 2
@@ -666,7 +666,7 @@ SYMBOL TABLE SSA
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RST8 = (number) $80
-(const byte*) YSIN = kickasm {{ .var min = 50
+(const byte*) YSIN[(number) $100] = kickasm {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
@@ -3673,13 +3673,13 @@ FINAL SYMBOL TABLE
(const byte*) D011 = (byte*) 53265
(const byte) GREEN = (number) 5
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(const byte*) PLEX_SCREEN_PTR#1 PLEX_SCREEN_PTR = (const byte*) SCREEN+(word) $3f8
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte*) SPRITE = (byte*) 8192
@@ -3691,7 +3691,7 @@ FINAL SYMBOL TABLE
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RST8 = (number) $80
-(const byte*) YSIN = kickasm {{ .var min = 50
+(const byte*) YSIN[(number) $100] = kickasm {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.sym b/src/test/ref/examples/multiplexer/simple-multiplexer.sym
index a826b5839..9f2ccdbcd 100644
--- a/src/test/ref/examples/multiplexer/simple-multiplexer.sym
+++ b/src/test/ref/examples/multiplexer/simple-multiplexer.sym
@@ -7,13 +7,13 @@
(const byte*) D011 = (byte*) 53265
(const byte) GREEN = (number) 5
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(const byte*) PLEX_SCREEN_PTR#1 PLEX_SCREEN_PTR = (const byte*) SCREEN+(word) $3f8
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte*) SPRITE = (byte*) 8192
@@ -25,7 +25,7 @@
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) VIC_RST8 = (number) $80
-(const byte*) YSIN = kickasm {{ .var min = 50
+(const byte*) YSIN[(number) $100] = kickasm {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
diff --git a/src/test/ref/examples/nmisamples/nmisamples.log b/src/test/ref/examples/nmisamples/nmisamples.log
index 131458177..15cd8f8df 100644
--- a/src/test/ref/examples/nmisamples/nmisamples.log
+++ b/src/test/ref/examples/nmisamples/nmisamples.log
@@ -89,7 +89,7 @@ SYMBOL TABLE SSA
(const byte*) CIA2_TIMER_A_CONTROL = (byte*)(number) $dd0e
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const void()**) KERNEL_NMI = (void()**)(number) $318
-(const byte*) SAMPLE = kickasm {{ .import binary "moments_sample.bin" }}
+(const byte*) SAMPLE[(const word) SAMPLE_SIZE] = kickasm {{ .import binary "moments_sample.bin" }}
(const word) SAMPLE_SIZE = (number) $6100
(const byte*) SID_VOLUME = (byte*)(number) $d418
(void()) main()
@@ -739,7 +739,7 @@ FINAL SYMBOL TABLE
(const byte*) CIA2_TIMER_A_CONTROL = (byte*) 56590
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const void()**) KERNEL_NMI = (void()**) 792
-(const byte*) SAMPLE = kickasm {{ .import binary "moments_sample.bin" }}
+(const byte*) SAMPLE[(const word) SAMPLE_SIZE] = kickasm {{ .import binary "moments_sample.bin" }}
(const word) SAMPLE_SIZE = (number) $6100
(const byte*) SID_VOLUME = (byte*) 54296
(void()) main()
diff --git a/src/test/ref/examples/nmisamples/nmisamples.sym b/src/test/ref/examples/nmisamples/nmisamples.sym
index f6ce3eb1c..9781ed52f 100644
--- a/src/test/ref/examples/nmisamples/nmisamples.sym
+++ b/src/test/ref/examples/nmisamples/nmisamples.sym
@@ -8,7 +8,7 @@
(const byte*) CIA2_TIMER_A_CONTROL = (byte*) 56590
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
(const void()**) KERNEL_NMI = (void()**) 792
-(const byte*) SAMPLE = kickasm {{ .import binary "moments_sample.bin" }}
+(const byte*) SAMPLE[(const word) SAMPLE_SIZE] = kickasm {{ .import binary "moments_sample.bin" }}
(const word) SAMPLE_SIZE = (number) $6100
(const byte*) SID_VOLUME = (byte*) 54296
(void()) main()
diff --git a/src/test/ref/examples/plasma/plasma-unroll.log b/src/test/ref/examples/plasma/plasma-unroll.log
index d02bc2273..eb786edde 100644
--- a/src/test/ref/examples/plasma/plasma-unroll.log
+++ b/src/test/ref/examples/plasma/plasma-unroll.log
@@ -728,7 +728,7 @@ SYMBOL TABLE SSA
(const byte*) SID_VOICE3_CONTROL = (byte*)(number) $d412
(const word*) SID_VOICE3_FREQ = (word*)(number) $d40e
(const byte*) SID_VOICE3_OSC = (byte*)(number) $d41b
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*sin(toRadians(360*i/256)))
}}
(byte) c1A
@@ -947,8 +947,8 @@ SYMBOL TABLE SSA
(byte) doplasma::val#1
(byte) doplasma::val#2
(byte) doplasma::val#3
-(const byte*) doplasma::xbuf = { fill( $28, 0) }
-(const byte*) doplasma::ybuf = { fill( $19, 0) }
+(const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) }
+(const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) }
(byte) doplasma::yprev
(byte) doplasma::yprev#0
(byte) doplasma::yprev#1
@@ -1033,7 +1033,7 @@ SYMBOL TABLE SSA
(byte) makecharset::b#5
(byte) makecharset::b#6
(byte) makecharset::b#7
-(const byte*) makecharset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(word) makecharset::c
(word) makecharset::c#0
(word) makecharset::c#1
@@ -5579,7 +5579,7 @@ FINAL SYMBOL TABLE
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
(const byte*) SID_VOICE3_OSC = (byte*) 54299
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*sin(toRadians(360*i/256)))
}}
(byte) c1A
@@ -5686,8 +5686,8 @@ FINAL SYMBOL TABLE
(byte) doplasma::val#5 reg byte a 151.5
(byte) doplasma::val#51 reg byte a 202.0
(byte) doplasma::val#7 reg byte a 151.5
-(const byte*) doplasma::xbuf = { fill( $28, 0) }
-(const byte*) doplasma::ybuf = { fill( $19, 0) }
+(const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) }
+(const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) }
(byte) doplasma::yprev
(byte) doplasma::yprev#2 reg byte x 67.33333333333333
(byte) doplasma::yprev#4 reg byte x 202.0
@@ -5733,7 +5733,7 @@ FINAL SYMBOL TABLE
(byte) makecharset::b#1 reg byte y 2002.0
(byte) makecharset::b#2 reg byte y 282.1818181818182
(byte) makecharset::b#6 reg byte y 1501.5
-(const byte*) makecharset::bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) makecharset::c
(word) makecharset::c#1 c zp[2]:9 22.0
(word) makecharset::c#2 c zp[2]:9 5.777777777777778
diff --git a/src/test/ref/examples/plasma/plasma-unroll.sym b/src/test/ref/examples/plasma/plasma-unroll.sym
index f0f71c1f4..70e18a6e4 100644
--- a/src/test/ref/examples/plasma/plasma-unroll.sym
+++ b/src/test/ref/examples/plasma/plasma-unroll.sym
@@ -17,7 +17,7 @@
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
(const byte*) SID_VOICE3_OSC = (byte*) 54299
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*sin(toRadians(360*i/256)))
}}
(byte) c1A
@@ -124,8 +124,8 @@
(byte) doplasma::val#5 reg byte a 151.5
(byte) doplasma::val#51 reg byte a 202.0
(byte) doplasma::val#7 reg byte a 151.5
-(const byte*) doplasma::xbuf = { fill( $28, 0) }
-(const byte*) doplasma::ybuf = { fill( $19, 0) }
+(const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) }
+(const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) }
(byte) doplasma::yprev
(byte) doplasma::yprev#2 reg byte x 67.33333333333333
(byte) doplasma::yprev#4 reg byte x 202.0
@@ -171,7 +171,7 @@
(byte) makecharset::b#1 reg byte y 2002.0
(byte) makecharset::b#2 reg byte y 282.1818181818182
(byte) makecharset::b#6 reg byte y 1501.5
-(const byte*) makecharset::bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) makecharset::c
(word) makecharset::c#1 c zp[2]:9 22.0
(word) makecharset::c#2 c zp[2]:9 5.777777777777778
diff --git a/src/test/ref/examples/plasma/plasma.log b/src/test/ref/examples/plasma/plasma.log
index d472d86db..e075adfd8 100644
--- a/src/test/ref/examples/plasma/plasma.log
+++ b/src/test/ref/examples/plasma/plasma.log
@@ -778,7 +778,7 @@ SYMBOL TABLE SSA
(const byte*) SID_VOICE3_CONTROL = (byte*)(number) $d412
(const word*) SID_VOICE3_FREQ = (word*)(number) $d40e
(const byte*) SID_VOICE3_OSC = (byte*)(number) $d41b
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*sin(2*PI*i/256))
}}
(byte) c1A
@@ -1012,8 +1012,8 @@ SYMBOL TABLE SSA
(byte*) doplasma::screen#7
(byte*) doplasma::screen#8
(byte*) doplasma::screen#9
-(const byte*) doplasma::xbuf = { fill( $28, 0) }
-(const byte*) doplasma::ybuf = { fill( $19, 0) }
+(const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) }
+(const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) }
(void()) main()
(bool~) main::$1
(byte~) main::$3
@@ -1116,7 +1116,7 @@ SYMBOL TABLE SSA
(byte) makecharset::b#5
(byte) makecharset::b#6
(byte) makecharset::b#7
-(const byte*) makecharset::bittab = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(word) makecharset::c
(word) makecharset::c#0
(word) makecharset::c#1
@@ -4246,7 +4246,7 @@ FINAL SYMBOL TABLE
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
(const byte*) SID_VOICE3_OSC = (byte*) 54299
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*sin(2*PI*i/256))
}}
(byte) c1A
@@ -4312,8 +4312,8 @@ FINAL SYMBOL TABLE
(byte*) doplasma::screen#13 screen zp[2]:9 0.08695652173913043
(byte*) doplasma::screen#2 screen zp[2]:9 101.0
(byte*) doplasma::screen#6 screen zp[2]:9 172.14285714285714
-(const byte*) doplasma::xbuf = { fill( $28, 0) }
-(const byte*) doplasma::ybuf = { fill( $19, 0) }
+(const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) }
+(const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) }
(void()) main()
(label) main::@1
(label) main::@2
@@ -4360,7 +4360,7 @@ FINAL SYMBOL TABLE
(byte) makecharset::b#1 reg byte y 2002.0
(byte) makecharset::b#2 reg byte y 282.1818181818182
(byte) makecharset::b#6 reg byte y 1501.5
-(const byte*) makecharset::bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) makecharset::c
(word) makecharset::c#1 c zp[2]:12 22.0
(word) makecharset::c#2 c zp[2]:12 5.777777777777778
diff --git a/src/test/ref/examples/plasma/plasma.sym b/src/test/ref/examples/plasma/plasma.sym
index d539230d8..c2e6a4006 100644
--- a/src/test/ref/examples/plasma/plasma.sym
+++ b/src/test/ref/examples/plasma/plasma.sym
@@ -18,7 +18,7 @@
(const byte*) SID_VOICE3_CONTROL = (byte*) 54290
(const word*) SID_VOICE3_FREQ = (word*) 54286
(const byte*) SID_VOICE3_OSC = (byte*) 54299
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*sin(2*PI*i/256))
}}
(byte) c1A
@@ -84,8 +84,8 @@
(byte*) doplasma::screen#13 screen zp[2]:9 0.08695652173913043
(byte*) doplasma::screen#2 screen zp[2]:9 101.0
(byte*) doplasma::screen#6 screen zp[2]:9 172.14285714285714
-(const byte*) doplasma::xbuf = { fill( $28, 0) }
-(const byte*) doplasma::ybuf = { fill( $19, 0) }
+(const byte*) doplasma::xbuf[(number) $28] = { fill( $28, 0) }
+(const byte*) doplasma::ybuf[(number) $19] = { fill( $19, 0) }
(void()) main()
(label) main::@1
(label) main::@2
@@ -132,7 +132,7 @@
(byte) makecharset::b#1 reg byte y 2002.0
(byte) makecharset::b#2 reg byte y 282.1818181818182
(byte) makecharset::b#6 reg byte y 1501.5
-(const byte*) makecharset::bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) makecharset::bittab[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) makecharset::c
(word) makecharset::c#1 c zp[2]:12 22.0
(word) makecharset::c#2 c zp[2]:12 5.777777777777778
diff --git a/src/test/ref/examples/rasterbars/raster-bars.log b/src/test/ref/examples/rasterbars/raster-bars.log
index ec17e005d..dd2dc162f 100644
--- a/src/test/ref/examples/rasterbars/raster-bars.log
+++ b/src/test/ref/examples/rasterbars/raster-bars.log
@@ -90,7 +90,7 @@ SYMBOL TABLE SSA
(byte) raster::i#0
(byte) raster::i#1
(byte) raster::i#2
-(const byte*) rastercols = { (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) $ff }
+(const byte*) rastercols[] = { (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) 1, (byte)(number) $f, (byte)(number) 1, (byte)(number) $f, (byte)(number) $f, (byte)(number) $c, (byte)(number) $f, (byte)(number) $c, (byte)(number) $c, (byte)(number) $b, (byte)(number) $c, (byte)(number) $b, (byte)(number) $b, (byte)(number) 0, (byte)(number) $b, (byte)(number) 0, (byte)(number) $ff }
Adding number conversion cast (unumber) $a in (bool~) main::$0 ← *((const byte*) RASTER) != (number) $a
Adding number conversion cast (unumber) $b in (bool~) main::$1 ← *((const byte*) RASTER) != (number) $b
@@ -591,7 +591,7 @@ FINAL SYMBOL TABLE
(byte) raster::i
(byte) raster::i#1 reg byte x 75.75
(byte) raster::i#2 reg byte x 67.33333333333333
-(const byte*) rastercols = { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff }
+(const byte*) rastercols[] = { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff }
reg byte a [ raster::col#2 raster::col#0 raster::col#1 ]
reg byte x [ raster::i#2 raster::i#1 ]
diff --git a/src/test/ref/examples/rasterbars/raster-bars.sym b/src/test/ref/examples/rasterbars/raster-bars.sym
index 7136e9556..d02cfc82e 100644
--- a/src/test/ref/examples/rasterbars/raster-bars.sym
+++ b/src/test/ref/examples/rasterbars/raster-bars.sym
@@ -18,7 +18,7 @@
(byte) raster::i
(byte) raster::i#1 reg byte x 75.75
(byte) raster::i#2 reg byte x 67.33333333333333
-(const byte*) rastercols = { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff }
+(const byte*) rastercols[] = { (byte) $b, (byte) 0, (byte) $b, (byte) $b, (byte) $c, (byte) $b, (byte) $c, (byte) $c, (byte) $f, (byte) $c, (byte) $f, (byte) $f, (byte) 1, (byte) $f, (byte) 1, (byte) 1, (byte) $f, (byte) 1, (byte) $f, (byte) $f, (byte) $c, (byte) $f, (byte) $c, (byte) $c, (byte) $b, (byte) $c, (byte) $b, (byte) $b, (byte) 0, (byte) $b, (byte) 0, (byte) $ff }
reg byte a [ raster::col#2 raster::col#0 raster::col#1 ]
reg byte x [ raster::i#2 raster::i#1 ]
diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log
index da2312c58..14b05e6bf 100644
--- a/src/test/ref/examples/rotate/rotate.log
+++ b/src/test/ref/examples/rotate/rotate.log
@@ -693,7 +693,7 @@ SYMBOL TABLE SSA
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte*) SPRITE = (byte*)(number) $3000
@@ -1084,10 +1084,10 @@ SYMBOL TABLE SSA
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(byte) mulf_init::x_255#5
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0
(number~) print_byte_at::$2
@@ -1130,7 +1130,7 @@ SYMBOL TABLE SSA
(dword) print_dword_at::dw#0
(dword) print_dword_at::dw#1
(dword) print_dword_at::dw#2
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(byte~) print_word_at::$0
(byte~) print_word_at::$2
@@ -1148,8 +1148,8 @@ SYMBOL TABLE SSA
(word) print_word_at::w#1
(word) print_word_at::w#2
(word) print_word_at::w#3
-(const signed byte*) xs = { (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) $46, (signed byte)(number) $46 }
-(const signed byte*) ys = { (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46 }
+(const signed byte*) xs[(number) 8] = { (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) $46, (signed byte)(number) $46 }
+(const signed byte*) ys[(number) 8] = { (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) $46, (signed byte)(number) -$46, (signed byte)(number) 0, (signed byte)(number) $46 }
Fixing inline constructor with mulf8u_prepared::$0 ← (byte)*(mulf8u_prepared::memB) w= (byte)*(mulf8u_prepared::resL)
Successful SSA optimization Pass2FixInlineConstructors
@@ -5013,7 +5013,7 @@ FINAL SYMBOL TABLE
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte*) SPRITE = (byte*) 12288
@@ -5188,10 +5188,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte a 4.0
(byte~) print_byte_at::$2 reg byte y 2.0
@@ -5221,7 +5221,7 @@ FINAL SYMBOL TABLE
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp[4]:19 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
@@ -5231,8 +5231,8 @@ FINAL SYMBOL TABLE
(word) print_word_at::w#0 w zp[2]:3 4.0
(word) print_word_at::w#1 w zp[2]:3 4.0
(word) print_word_at::w#2 w zp[2]:3 2.0
-(const signed byte*) xs = { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 }
-(const signed byte*) ys = { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 }
+(const signed byte*) xs[(number) 8] = { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 }
+(const signed byte*) ys[(number) 8] = { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 }
zp[1]:2 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 anim::i#10 anim::i#1 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
diff --git a/src/test/ref/examples/rotate/rotate.sym b/src/test/ref/examples/rotate/rotate.sym
index e29659bbf..78b298fc3 100644
--- a/src/test/ref/examples/rotate/rotate.sym
+++ b/src/test/ref/examples/rotate/rotate.sym
@@ -17,7 +17,7 @@
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
+(const byte*) SIN[(number) $140] = kickasm {{ .for(var i=0;i<$140;i++)
.byte >round($7fff*sin(i*2*PI/256))
}}
(const byte*) SPRITE = (byte*) 12288
@@ -192,10 +192,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte a 4.0
(byte~) print_byte_at::$2 reg byte y 2.0
@@ -225,7 +225,7 @@
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp[4]:19 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
@@ -235,8 +235,8 @@
(word) print_word_at::w#0 w zp[2]:3 4.0
(word) print_word_at::w#1 w zp[2]:3 4.0
(word) print_word_at::w#2 w zp[2]:3 2.0
-(const signed byte*) xs = { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 }
-(const signed byte*) ys = { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 }
+(const signed byte*) xs[(number) 8] = { (signed byte) -$46, (signed byte) -$46, (signed byte) -$46, (signed byte) 0, (signed byte) 0, (signed byte) $46, (signed byte) $46, (signed byte) $46 }
+(const signed byte*) ys[(number) 8] = { (signed byte) -$46, (signed byte) 0, (signed byte) $46, (signed byte) -$46, (signed byte) $46, (signed byte) -$46, (signed byte) 0, (signed byte) $46 }
zp[1]:2 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 anim::i#10 anim::i#1 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
diff --git a/src/test/ref/examples/scroll/scroll.log b/src/test/ref/examples/scroll/scroll.log
index 6956a50e1..a3f27a87c 100644
--- a/src/test/ref/examples/scroll/scroll.log
+++ b/src/test/ref/examples/scroll/scroll.log
@@ -136,7 +136,7 @@ SYMBOL TABLE SSA
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
(const byte*) SCROLL = (byte*)(number) $d016
-(const byte*) TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- "
+(const byte*) TEXT[] = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- "
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
(byte*~) fillscreen::$0
(bool~) fillscreen::$1
@@ -1014,7 +1014,7 @@ FINAL SYMBOL TABLE
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte*) SCROLL = (byte*) 53270
-(const byte*) TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- "
+(const byte*) TEXT[] = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- "
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
(label) fillscreen::@1
(label) fillscreen::@2
diff --git a/src/test/ref/examples/scroll/scroll.sym b/src/test/ref/examples/scroll/scroll.sym
index 53620cfd0..d03870a39 100644
--- a/src/test/ref/examples/scroll/scroll.sym
+++ b/src/test/ref/examples/scroll/scroll.sym
@@ -5,7 +5,7 @@
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte*) SCROLL = (byte*) 53270
-(const byte*) TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- "
+(const byte*) TEXT[] = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- "
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
(label) fillscreen::@1
(label) fillscreen::@2
diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log
index 027005c77..818431933 100644
--- a/src/test/ref/examples/scrolllogo/scrolllogo.log
+++ b/src/test/ref/examples/scrolllogo/scrolllogo.log
@@ -1611,7 +1611,7 @@ SYMBOL TABLE SSA
(dword) sin16s_gen2::x#3
(dword) sin16s_gen2::x#4
(dword) sin16s_gen2::x#5
-(const signed word*) xsin = { fill( XSIN_SIZE, 0) }
+(const signed word*) xsin[(const word) XSIN_SIZE] = { fill( XSIN_SIZE, 0) }
(word) xsin_idx
(word) xsin_idx#0
(word) xsin_idx#1
@@ -8368,7 +8368,7 @@ FINAL SYMBOL TABLE
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:4 11.0
(dword) sin16s_gen2::x#2 x zp[4]:4 2.75
-(const signed word*) xsin = { fill( XSIN_SIZE, 0) }
+(const signed word*) xsin[(const word) XSIN_SIZE] = { fill( XSIN_SIZE, 0) }
(word) xsin_idx
(word) xsin_idx#11 xsin_idx zp[2]:35 4.125
(word) xsin_idx#19 xsin_idx zp[2]:35 11.0
diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.sym b/src/test/ref/examples/scrolllogo/scrolllogo.sym
index ac2fb2400..4ade86706 100644
--- a/src/test/ref/examples/scrolllogo/scrolllogo.sym
+++ b/src/test/ref/examples/scrolllogo/scrolllogo.sym
@@ -331,7 +331,7 @@
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:4 11.0
(dword) sin16s_gen2::x#2 x zp[4]:4 2.75
-(const signed word*) xsin = { fill( XSIN_SIZE, 0) }
+(const signed word*) xsin[(const word) XSIN_SIZE] = { fill( XSIN_SIZE, 0) }
(word) xsin_idx
(word) xsin_idx#11 xsin_idx zp[2]:35 4.125
(word) xsin_idx#19 xsin_idx zp[2]:35 11.0
diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log
index 408acbaae..42087eec9 100644
--- a/src/test/ref/examples/sinplotter/sine-plotter.log
+++ b/src/test/ref/examples/sinplotter/sine-plotter.log
@@ -1158,9 +1158,9 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
(byte) bitmap_plot::y#2
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
@@ -1636,7 +1636,7 @@ SYMBOL TABLE SSA
(byte) render_sine::ypos#0
(byte) render_sine::ypos2
(byte) render_sine::ypos2#0
-(const signed word*) sin = { fill( $200, 0) }
+(const signed word*) sin[(number) $200] = { fill( $200, 0) }
(signed word()) sin16s((dword) sin16s::x)
(bool~) sin16s::$0
(bool~) sin16s::$1
@@ -1801,7 +1801,7 @@ SYMBOL TABLE SSA
(dword) sin16s_gen2::x#3
(dword) sin16s_gen2::x#4
(dword) sin16s_gen2::x#5
-(const signed word*) sin2 = kickasm {{ .for(var i=0; i<512; i++) {
+(const signed word*) sin2[(number) $200] = kickasm {{ .for(var i=0; i<512; i++) {
.word sin(toRadians([i*360]/512))*320
}
}}
@@ -7788,9 +7788,9 @@ FINAL SYMBOL TABLE
(byte) bitmap_plot::y#0 reg byte x 22.0
(byte) bitmap_plot::y#1 reg byte x 22.0
(byte) bitmap_plot::y#2 reg byte x 26.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
@@ -7980,7 +7980,7 @@ FINAL SYMBOL TABLE
(byte) render_sine::ypos#0 reg byte x 11.0
(byte) render_sine::ypos2
(byte) render_sine::ypos2#0 reg byte x 11.0
-(const signed word*) sin = { fill( $200, 0) }
+(const signed word*) sin[(number) $200] = { fill( $200, 0) }
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$4 zp[4]:26 4.0
(label) sin16s::@1
@@ -8055,7 +8055,7 @@ FINAL SYMBOL TABLE
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:2 11.0
(dword) sin16s_gen2::x#2 x zp[4]:2 2.75
-(const signed word*) sin2 = kickasm {{ .for(var i=0; i<512; i++) {
+(const signed word*) sin2[(number) $200] = kickasm {{ .for(var i=0; i<512; i++) {
.word sin(toRadians([i*360]/512))*320
}
}}
diff --git a/src/test/ref/examples/sinplotter/sine-plotter.sym b/src/test/ref/examples/sinplotter/sine-plotter.sym
index 81a27f77c..bdf44d7ef 100644
--- a/src/test/ref/examples/sinplotter/sine-plotter.sym
+++ b/src/test/ref/examples/sinplotter/sine-plotter.sym
@@ -74,9 +74,9 @@
(byte) bitmap_plot::y#0 reg byte x 22.0
(byte) bitmap_plot::y#1 reg byte x 22.0
(byte) bitmap_plot::y#2 reg byte x 26.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
(byte*) bitmap_screen
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
@@ -266,7 +266,7 @@
(byte) render_sine::ypos#0 reg byte x 11.0
(byte) render_sine::ypos2
(byte) render_sine::ypos2#0 reg byte x 11.0
-(const signed word*) sin = { fill( $200, 0) }
+(const signed word*) sin[(number) $200] = { fill( $200, 0) }
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$4 zp[4]:26 4.0
(label) sin16s::@1
@@ -341,7 +341,7 @@
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp[4]:2 11.0
(dword) sin16s_gen2::x#2 x zp[4]:2 2.75
-(const signed word*) sin2 = kickasm {{ .for(var i=0; i<512; i++) {
+(const signed word*) sin2[(number) $200] = kickasm {{ .for(var i=0; i<512; i++) {
.word sin(toRadians([i*360]/512))*320
}
}}
diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.log b/src/test/ref/examples/sinsprites/sinus-sprites.log
index 272038269..e8e646662 100644
--- a/src/test/ref/examples/sinsprites/sinus-sprites.log
+++ b/src/test/ref/examples/sinsprites/sinus-sprites.log
@@ -1314,9 +1314,9 @@ SYMBOL TABLE SSA
(label) gen_sintab::@9
(label) gen_sintab::@return
(const byte*) gen_sintab::f_2pi = (byte*)(number) $e2e5
-(const byte*) gen_sintab::f_amp = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) gen_sintab::f_i = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
-(const byte*) gen_sintab::f_min = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) gen_sintab::f_amp[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) gen_sintab::f_i[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) gen_sintab::f_min[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(byte) gen_sintab::i
(byte) gen_sintab::i#0
(byte) gen_sintab::i#1
@@ -1402,7 +1402,7 @@ SYMBOL TABLE SSA
(label) gen_sprites::@1
(label) gen_sprites::@3
(label) gen_sprites::@return
-(const byte*) gen_sprites::cml = (string) "camelot"z
+(const byte*) gen_sprites::cml[] = (string) "camelot"z
(byte) gen_sprites::i
(byte) gen_sprites::i#0
(byte) gen_sprites::i#1
@@ -1632,7 +1632,7 @@ SYMBOL TABLE SSA
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte)(number) $20, (byte)(number) $65, (byte)(number) $74, (byte)(number) $75, (byte)(number) $61, (byte)(number) $f6, (byte)(number) $e7, (byte)(number) $ea, (byte)(number) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
@@ -1732,8 +1732,8 @@ SYMBOL TABLE SSA
(byte) sin_idx_y#9
(const byte) sinlen_x = (number) $dd
(const byte) sinlen_y = (number) $c5
-(const byte*) sintab_x = { fill( $dd, 0) }
-(const byte*) sintab_y = { fill( $c5, 0) }
+(const byte*) sintab_x[(number) $dd] = { fill( $dd, 0) }
+(const byte*) sintab_y[(number) $c5] = { fill( $c5, 0) }
(const byte*) sprites = (byte*)(number) $2000
(void()) subFACfromARG()
(label) subFACfromARG::@return
@@ -7299,9 +7299,9 @@ FINAL SYMBOL TABLE
(label) gen_sintab::@9
(label) gen_sintab::@return
(const byte*) gen_sintab::f_2pi = (byte*) 58085
-(const byte*) gen_sintab::f_amp = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) gen_sintab::f_i = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) gen_sintab::f_min = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) gen_sintab::f_amp[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) gen_sintab::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) gen_sintab::f_min[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte) gen_sintab::i
(byte) gen_sintab::i#1 i zp[1]:9 22.0
(byte) gen_sintab::i#10 i zp[1]:9 1.76
@@ -7317,7 +7317,7 @@ FINAL SYMBOL TABLE
(label) gen_sprites::@1
(label) gen_sprites::@2
(label) gen_sprites::@return
-(const byte*) gen_sprites::cml = (string) "camelot"z
+(const byte*) gen_sprites::cml[] = (string) "camelot"z
(byte) gen_sprites::i
(byte) gen_sprites::i#1 i zp[1]:11 16.5
(byte) gen_sprites::i#2 i zp[1]:11 6.6000000000000005
@@ -7389,7 +7389,7 @@ FINAL SYMBOL TABLE
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
@@ -7430,8 +7430,8 @@ FINAL SYMBOL TABLE
(byte) sin_idx_y#3 sin_idx_y zp[1]:8 2.0
(const byte) sinlen_x = (number) $dd
(const byte) sinlen_y = (number) $c5
-(const byte*) sintab_x = { fill( $dd, 0) }
-(const byte*) sintab_y = { fill( $c5, 0) }
+(const byte*) sintab_x[(number) $dd] = { fill( $dd, 0) }
+(const byte*) sintab_y[(number) $c5] = { fill( $c5, 0) }
(const byte*) sprites = (byte*) 8192
(void()) subFACfromARG()
(label) subFACfromARG::@return
diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.sym b/src/test/ref/examples/sinsprites/sinus-sprites.sym
index 7020be934..e691fe958 100644
--- a/src/test/ref/examples/sinsprites/sinus-sprites.sym
+++ b/src/test/ref/examples/sinsprites/sinus-sprites.sym
@@ -158,9 +158,9 @@
(label) gen_sintab::@9
(label) gen_sintab::@return
(const byte*) gen_sintab::f_2pi = (byte*) 58085
-(const byte*) gen_sintab::f_amp = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) gen_sintab::f_i = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
-(const byte*) gen_sintab::f_min = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) gen_sintab::f_amp[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) gen_sintab::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) gen_sintab::f_min[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte) gen_sintab::i
(byte) gen_sintab::i#1 i zp[1]:9 22.0
(byte) gen_sintab::i#10 i zp[1]:9 1.76
@@ -176,7 +176,7 @@
(label) gen_sprites::@1
(label) gen_sprites::@2
(label) gen_sprites::@return
-(const byte*) gen_sprites::cml = (string) "camelot"z
+(const byte*) gen_sprites::cml[] = (string) "camelot"z
(byte) gen_sprites::i
(byte) gen_sprites::i#1 i zp[1]:11 16.5
(byte) gen_sprites::i#2 i zp[1]:11 6.6000000000000005
@@ -248,7 +248,7 @@
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
-(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
+(const byte*) progress_inc::progress_chars[] = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
@@ -289,8 +289,8 @@
(byte) sin_idx_y#3 sin_idx_y zp[1]:8 2.0
(const byte) sinlen_x = (number) $dd
(const byte) sinlen_y = (number) $c5
-(const byte*) sintab_x = { fill( $dd, 0) }
-(const byte*) sintab_y = { fill( $c5, 0) }
+(const byte*) sintab_x[(number) $dd] = { fill( $dd, 0) }
+(const byte*) sintab_y[(number) $c5] = { fill( $c5, 0) }
(const byte*) sprites = (byte*) 8192
(void()) subFACfromARG()
(label) subFACfromARG::@return
diff --git a/src/test/ref/examples/zpcode/zpcode.log b/src/test/ref/examples/zpcode/zpcode.log
index 4554a3593..10c52c5be 100644
--- a/src/test/ref/examples/zpcode/zpcode.log
+++ b/src/test/ref/examples/zpcode/zpcode.log
@@ -129,7 +129,7 @@ SYMBOL TABLE SSA
(byte) main::i#2
(byte) main::i#3
(const byte*) main::zpCode = (byte*)&(void()) zpLoop()
-(const byte*) zpCodeData = kickasm {{ .segmentout [segments="ZpCode"]
+(const byte*) zpCodeData[] = kickasm {{ .segmentout [segments="ZpCode"]
}}
(void()) zpLoop()
(bool~) zpLoop::$1
@@ -737,7 +737,7 @@ FINAL SYMBOL TABLE
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
(const byte*) main::zpCode = (byte*)&(void()) zpLoop()
-(const byte*) zpCodeData = kickasm {{ .segmentout [segments="ZpCode"]
+(const byte*) zpCodeData[] = kickasm {{ .segmentout [segments="ZpCode"]
}}
(void()) zpLoop()
(label) zpLoop::@1
diff --git a/src/test/ref/examples/zpcode/zpcode.sym b/src/test/ref/examples/zpcode/zpcode.sym
index 3c846c2c2..8545cbb80 100644
--- a/src/test/ref/examples/zpcode/zpcode.sym
+++ b/src/test/ref/examples/zpcode/zpcode.sym
@@ -20,7 +20,7 @@
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
(const byte*) main::zpCode = (byte*)&(void()) zpLoop()
-(const byte*) zpCodeData = kickasm {{ .segmentout [segments="ZpCode"]
+(const byte*) zpCodeData[] = kickasm {{ .segmentout [segments="ZpCode"]
}}
(void()) zpLoop()
(label) zpLoop::@1
diff --git a/src/test/ref/fastmultiply-127.log b/src/test/ref/fastmultiply-127.log
index dd0744f2e..f744c67f8 100644
--- a/src/test/ref/fastmultiply-127.log
+++ b/src/test/ref/fastmultiply-127.log
@@ -844,8 +844,8 @@ SYMBOL TABLE SSA
(label) main::@8
(label) main::@9
(label) main::@return
-(const string) main::str = (string) "unsigned"
-(const string) main::str1 = (string) "signed"
+(const string) main::str[] = (string) "unsigned"
+(const string) main::str1[] = (string) "signed"
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
@@ -888,10 +888,10 @@ SYMBOL TABLE SSA
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
-(const byte*) mulf127_sqr1_hi = kickasm {{ .fill 512, >round((i/127*i/127)*127/4) }}
-(const byte*) mulf127_sqr1_lo = kickasm {{ .fill 512, round(((i-255)/127*(i-255)/127)*127/4) }}
-(const byte*) mulf127_sqr2_lo = kickasm {{ .fill 512, round((i/127*i/127)*127/4) }}
+(const byte*) mulf127_sqr1_lo[(number) $200] = kickasm {{ .fill 512, round(((i-255)/127*(i-255)/127)*127/4) }}
+(const byte*) mulf127_sqr2_lo[(number) $200] = kickasm {{ .fill 512, round((i/127*i/127)*127/4) }}
-(const byte*) mulf127_sqr1_lo = kickasm {{ .fill 512, round(((i-255)/127*(i-255)/127)*127/4) }}
-(const byte*) mulf127_sqr2_lo = kickasm {{ .fill 512, round((i/127*i/127)*127/4) }}
+(const byte*) mulf127_sqr1_lo[(number) $200] = kickasm {{ .fill 512, round(((i-255)/127*(i-255)/127)*127/4) }}
+(const byte*) mulf127_sqr2_lo[(number) $200] = kickasm {{ .fill 512, round((i/127*i/127)*127/4) }}
-(const byte*) mulf127_sqr1_lo = kickasm {{ .fill 512, round(((i-255)/127*(i-255)/127)*127/4) }}
-(const byte*) mulf127_sqr2_lo = kickasm {{ .fill 512, round((i/127*i/127)*127/4) }}
+(const byte*) mulf127_sqr1_lo[(number) $200] = kickasm {{ .fill 512, round(((i-255)/127*(i-255)/127)*127/4) }}
+(const byte*) mulf127_sqr2_lo[(number) $200] = kickasm {{ .fill 512, (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#2)
@@ -1344,7 +1344,7 @@ FINAL SYMBOL TABLE
(byte*) print_str::str
(byte*) print_str::str#0 str zp[2]:2 202.0
(byte*) print_str::str#2 str zp[2]:2 101.0
-(const byte*) txt = (string) "camelot"
+(const byte*) txt[] = (string) "camelot"
reg byte x [ main::i#2 main::i#1 ]
zp[2]:2 [ print_str::str#2 print_str::str#0 ]
diff --git a/src/test/ref/incrementinarray.sym b/src/test/ref/incrementinarray.sym
index 9f61e4a39..13d1fb47a 100644
--- a/src/test/ref/incrementinarray.sym
+++ b/src/test/ref/incrementinarray.sym
@@ -52,7 +52,7 @@
(byte*) print_str::str
(byte*) print_str::str#0 str zp[2]:2 202.0
(byte*) print_str::str#2 str zp[2]:2 101.0
-(const byte*) txt = (string) "camelot"
+(const byte*) txt[] = (string) "camelot"
reg byte x [ main::i#2 main::i#1 ]
zp[2]:2 [ print_str::str#2 print_str::str#0 ]
diff --git a/src/test/ref/initializer-0.log b/src/test/ref/initializer-0.log
index 25c49cfc0..eefc73384 100644
--- a/src/test/ref/initializer-0.log
+++ b/src/test/ref/initializer-0.log
@@ -33,7 +33,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) chars = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 }
+(const byte*) chars[] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 }
(void()) main()
(bool~) main::$0
(label) main::@1
@@ -319,7 +319,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) chars = { (byte) 1, (byte) 2, (byte) 3 }
+(const byte*) chars[] = { (byte) 1, (byte) 2, (byte) 3 }
(void()) main()
(label) main::@1
(label) main::@return
diff --git a/src/test/ref/initializer-0.sym b/src/test/ref/initializer-0.sym
index 213b74e71..d21bcd169 100644
--- a/src/test/ref/initializer-0.sym
+++ b/src/test/ref/initializer-0.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) chars = { (byte) 1, (byte) 2, (byte) 3 }
+(const byte*) chars[] = { (byte) 1, (byte) 2, (byte) 3 }
(void()) main()
(label) main::@1
(label) main::@return
diff --git a/src/test/ref/initializer-1.log b/src/test/ref/initializer-1.log
index fafc2ef8a..d82631be6 100644
--- a/src/test/ref/initializer-1.log
+++ b/src/test/ref/initializer-1.log
@@ -60,7 +60,7 @@ SYMBOL TABLE SSA
(byte) main::idx#1
(byte) main::idx#2
(byte) main::idx#3
-(const word*) words = { (word)(number) 1, (word)(number) 2, (word)(number) 3 }
+(const word*) words[] = { (word)(number) 1, (word)(number) 2, (word)(number) 3 }
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
@@ -433,7 +433,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#1 reg byte x 11.0
(byte) main::idx#2 reg byte x 7.333333333333333
(byte) main::idx#3 reg byte x 8.25
-(const word*) words = { (word) 1, (word) 2, (word) 3 }
+(const word*) words[] = { (word) 1, (word) 2, (word) 3 }
zp[1]:2 [ main::i#2 main::i#1 ]
reg byte x [ main::idx#3 main::idx#2 ]
diff --git a/src/test/ref/initializer-1.sym b/src/test/ref/initializer-1.sym
index 411cb3a66..249f0ff5c 100644
--- a/src/test/ref/initializer-1.sym
+++ b/src/test/ref/initializer-1.sym
@@ -15,7 +15,7 @@
(byte) main::idx#1 reg byte x 11.0
(byte) main::idx#2 reg byte x 7.333333333333333
(byte) main::idx#3 reg byte x 8.25
-(const word*) words = { (word) 1, (word) 2, (word) 3 }
+(const word*) words[] = { (word) 1, (word) 2, (word) 3 }
zp[1]:2 [ main::i#2 main::i#1 ]
reg byte x [ main::idx#3 main::idx#2 ]
diff --git a/src/test/ref/initializer-2.log b/src/test/ref/initializer-2.log
index 474ec88fd..aefb18074 100644
--- a/src/test/ref/initializer-2.log
+++ b/src/test/ref/initializer-2.log
@@ -66,7 +66,7 @@ SYMBOL TABLE SSA
(byte) main::idx#1
(byte) main::idx#2
(byte) main::idx#3
-(const struct Point*) points = { { x: (byte)(number) 1, y: (byte)(number) 2 }, { x: (byte)(number) 3, y: (byte)(number) 4 }, { x: (byte)(number) 5, y: (byte)(number) 6 } }
+(const struct Point*) points[] = { { x: (byte)(number) 1, y: (byte)(number) 2 }, { x: (byte)(number) 3, y: (byte)(number) 4 }, { x: (byte)(number) 5, y: (byte)(number) 6 } }
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
@@ -433,7 +433,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#1 reg byte y 16.5
(byte) main::idx#2 reg byte y 7.333333333333333
(byte) main::idx#3 reg byte y 11.0
-(const struct Point*) points = { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } }
+(const struct Point*) points[] = { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } }
zp[1]:2 [ main::i#2 main::i#1 ]
reg byte y [ main::idx#3 main::idx#2 ]
diff --git a/src/test/ref/initializer-2.sym b/src/test/ref/initializer-2.sym
index 391a10224..463896880 100644
--- a/src/test/ref/initializer-2.sym
+++ b/src/test/ref/initializer-2.sym
@@ -16,7 +16,7 @@
(byte) main::idx#1 reg byte y 16.5
(byte) main::idx#2 reg byte y 7.333333333333333
(byte) main::idx#3 reg byte y 11.0
-(const struct Point*) points = { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } }
+(const struct Point*) points[] = { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } }
zp[1]:2 [ main::i#2 main::i#1 ]
reg byte y [ main::idx#3 main::idx#2 ]
diff --git a/src/test/ref/initializer-3.log b/src/test/ref/initializer-3.log
index c8b25275d..9e2110bf9 100644
--- a/src/test/ref/initializer-3.log
+++ b/src/test/ref/initializer-3.log
@@ -79,7 +79,7 @@ SYMBOL TABLE SSA
(byte) main::idx#2
(byte) main::idx#3
(byte) main::idx#4
-(const struct Point*) points = { { x: (byte)(number) 1, y: (signed word)(number) 2 }, { x: (byte)(number) 3, y: (signed word)(number) 4 }, { x: (byte)(number) 5, y: (signed word)(number) 6 } }
+(const struct Point*) points[] = { { x: (byte)(number) 1, y: (signed word)(number) 2 }, { x: (byte)(number) 3, y: (signed word)(number) 4 }, { x: (byte)(number) 5, y: (signed word)(number) 6 } }
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
@@ -548,7 +548,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#2 idx zp[1]:2 11.0
(byte) main::idx#3 idx zp[1]:2 7.333333333333333
(byte) main::idx#4 idx zp[1]:2 8.25
-(const struct Point*) points = { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } }
+(const struct Point*) points[] = { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } }
reg byte x [ main::i#2 main::i#1 ]
zp[1]:2 [ main::idx#4 main::idx#3 main::idx#1 main::idx#2 ]
diff --git a/src/test/ref/initializer-3.sym b/src/test/ref/initializer-3.sym
index 895b11680..088b572d4 100644
--- a/src/test/ref/initializer-3.sym
+++ b/src/test/ref/initializer-3.sym
@@ -20,7 +20,7 @@
(byte) main::idx#2 idx zp[1]:2 11.0
(byte) main::idx#3 idx zp[1]:2 7.333333333333333
(byte) main::idx#4 idx zp[1]:2 8.25
-(const struct Point*) points = { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } }
+(const struct Point*) points[] = { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } }
reg byte x [ main::i#2 main::i#1 ]
zp[1]:2 [ main::idx#4 main::idx#3 main::idx#1 main::idx#2 ]
diff --git a/src/test/ref/inline-asm-label.log b/src/test/ref/inline-asm-label.log
index b78172581..366e288c6 100644
--- a/src/test/ref/inline-asm-label.log
+++ b/src/test/ref/inline-asm-label.log
@@ -25,7 +25,7 @@ SYMBOL TABLE SSA
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
(label) main::@return
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
Simplifying constant pointer cast (byte*) 1024
Successful SSA optimization PassNCastSimplification
@@ -190,7 +190,7 @@ FINAL SYMBOL TABLE
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@return
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-asm-label.sym b/src/test/ref/inline-asm-label.sym
index 24f1307d4..f2a49d9e2 100644
--- a/src/test/ref/inline-asm-label.sym
+++ b/src/test/ref/inline-asm-label.sym
@@ -4,5 +4,5 @@
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@return
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-asm-refout-const.log b/src/test/ref/inline-asm-refout-const.log
index 3b48bf5de..bb5f93769 100644
--- a/src/test/ref/inline-asm-refout-const.log
+++ b/src/test/ref/inline-asm-refout-const.log
@@ -25,7 +25,7 @@ SYMBOL TABLE SSA
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
(label) main::@return
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
Simplifying constant pointer cast (byte*) 1024
Successful SSA optimization PassNCastSimplification
@@ -190,7 +190,7 @@ FINAL SYMBOL TABLE
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@return
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-asm-refout-const.sym b/src/test/ref/inline-asm-refout-const.sym
index 24f1307d4..f2a49d9e2 100644
--- a/src/test/ref/inline-asm-refout-const.sym
+++ b/src/test/ref/inline-asm-refout-const.sym
@@ -4,5 +4,5 @@
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@return
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-asm-refout.log b/src/test/ref/inline-asm-refout.log
index 678571de9..cfed4211e 100644
--- a/src/test/ref/inline-asm-refout.log
+++ b/src/test/ref/inline-asm-refout.log
@@ -26,7 +26,7 @@ SYMBOL TABLE SSA
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*)(number) $400
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN+(number) $28) ← *((const byte*) table + (number) 0)
Adding number conversion cast (unumber) $28 in *((const byte*) main::SCREEN+(number) $28) ← *((const byte*) table + (unumber)(number) 0)
@@ -209,7 +209,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-asm-refout.sym b/src/test/ref/inline-asm-refout.sym
index dd031290b..ab097acb6 100644
--- a/src/test/ref/inline-asm-refout.sym
+++ b/src/test/ref/inline-asm-refout.sym
@@ -4,5 +4,5 @@
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-kasm-refout.log b/src/test/ref/inline-kasm-refout.log
index d82e5ab56..36096fe04 100644
--- a/src/test/ref/inline-kasm-refout.log
+++ b/src/test/ref/inline-kasm-refout.log
@@ -32,7 +32,7 @@ SYMBOL TABLE SSA
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*)(number) $400
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
Simplifying constant pointer cast (byte*) 1024
Successful SSA optimization PassNCastSimplification
@@ -205,7 +205,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-kasm-refout.sym b/src/test/ref/inline-kasm-refout.sym
index dd031290b..ab097acb6 100644
--- a/src/test/ref/inline-kasm-refout.sym
+++ b/src/test/ref/inline-kasm-refout.sym
@@ -4,5 +4,5 @@
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) table = (string) "cml!"z
+(const byte*) table[] = (string) "cml!"z
diff --git a/src/test/ref/inline-string-2.log b/src/test/ref/inline-string-2.log
index 17b0feb04..9818a9298 100644
--- a/src/test/ref/inline-string-2.log
+++ b/src/test/ref/inline-string-2.log
@@ -123,8 +123,8 @@ SYMBOL TABLE SSA
(byte*) print::msg#4
(void()) print_msg((byte) print_msg::idx)
(bool~) print_msg::$0
-(const string) print_msg::$2 = (string) "Hello "
-(const string) print_msg::$3 = (string) "World!"
+(const string) print_msg::$2[] = (string) "Hello "
+(const string) print_msg::$3[] = (string) "World!"
(label) print_msg::@1
(label) print_msg::@2
(label) print_msg::@3
diff --git a/src/test/ref/inline-string-3.log b/src/test/ref/inline-string-3.log
index 57a28d21d..c572a72e1 100644
--- a/src/test/ref/inline-string-3.log
+++ b/src/test/ref/inline-string-3.log
@@ -31,7 +31,7 @@ SYMBOL TABLE SSA
(label) main::@return
(const byte*) main::PTR = (byte*)(number) $9ffe
(const byte*) main::SCREEN = (byte*)(number) $400
-(const byte*) main::STRING = (string) "camelot"z
+(const byte*) main::STRING[] = (string) "camelot"z
(byte*) main::ptr
(byte*) main::ptr#0
@@ -254,7 +254,7 @@ FINAL SYMBOL TABLE
(label) main::@return
(const byte*) main::PTR = (byte*) 40958
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) main::STRING = (string) "camelot"z
+(const byte*) main::STRING[] = (string) "camelot"z
(byte*) main::ptr
(word) main::ptr#0 ptr zp[2]:2 2.0
diff --git a/src/test/ref/inline-string-3.sym b/src/test/ref/inline-string-3.sym
index 01142d4ce..bf25497e6 100644
--- a/src/test/ref/inline-string-3.sym
+++ b/src/test/ref/inline-string-3.sym
@@ -5,7 +5,7 @@
(label) main::@return
(const byte*) main::PTR = (byte*) 40958
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) main::STRING = (string) "camelot"z
+(const byte*) main::STRING[] = (string) "camelot"z
(byte*) main::ptr
(word) main::ptr#0 ptr zp[2]:2 2.0
diff --git a/src/test/ref/inline-string-4.log b/src/test/ref/inline-string-4.log
index 9c6ff2570..1375d07f4 100644
--- a/src/test/ref/inline-string-4.log
+++ b/src/test/ref/inline-string-4.log
@@ -40,7 +40,7 @@ SYMBOL TABLE SSA
(label) main::@1
(label) main::@return
(const dword) main::dw = (dword)(const byte*) main::msg
-(const byte*) main::msg = (string) "camelot"
+(const byte*) main::msg[] = (string) "camelot"
(void()) output((dword) output::dw)
(label) output::@return
(dword) output::dw
@@ -269,7 +269,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@return
(const dword) main::dw = (dword)(const byte*) main::msg
-(const byte*) main::msg = (string) "camelot"
+(const byte*) main::msg[] = (string) "camelot"
(void()) output((dword) output::dw)
(label) output::@return
(dword) output::dw
diff --git a/src/test/ref/inline-string-4.sym b/src/test/ref/inline-string-4.sym
index b27739812..3733334a1 100644
--- a/src/test/ref/inline-string-4.sym
+++ b/src/test/ref/inline-string-4.sym
@@ -4,7 +4,7 @@
(void()) main()
(label) main::@return
(const dword) main::dw = (dword)(const byte*) main::msg
-(const byte*) main::msg = (string) "camelot"
+(const byte*) main::msg[] = (string) "camelot"
(void()) output((dword) output::dw)
(label) output::@return
(dword) output::dw
diff --git a/src/test/ref/inline-string.log b/src/test/ref/inline-string.log
index d3ef33be4..5f2c63fe8 100644
--- a/src/test/ref/inline-string.log
+++ b/src/test/ref/inline-string.log
@@ -83,9 +83,9 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@3
(label) main::@return
-(const string) main::msg = (string) "message 3 "
-(const byte*) main::msg2 = (string) "message 2 "
-(const byte*) msg1 = (string) "message 1 "
+(const string) main::msg[] = (string) "message 3 "
+(const byte*) main::msg2[] = (string) "message 2 "
+(const byte*) msg1[] = (string) "message 1 "
(void()) print((byte*) print::msg)
(bool~) print::$0
(label) print::@1
@@ -571,9 +571,9 @@ FINAL SYMBOL TABLE
(label) main::@1
(label) main::@2
(label) main::@return
-(const string) main::msg = (string) "message 3 "
-(const byte*) main::msg2 = (string) "message 2 "
-(const byte*) msg1 = (string) "message 1 "
+(const string) main::msg[] = (string) "message 3 "
+(const byte*) main::msg2[] = (string) "message 2 "
+(const byte*) msg1[] = (string) "message 1 "
(void()) print((byte*) print::msg)
(label) print::@1
(label) print::@2
diff --git a/src/test/ref/inline-string.sym b/src/test/ref/inline-string.sym
index 5677d9f87..ca572fa6b 100644
--- a/src/test/ref/inline-string.sym
+++ b/src/test/ref/inline-string.sym
@@ -5,9 +5,9 @@
(label) main::@1
(label) main::@2
(label) main::@return
-(const string) main::msg = (string) "message 3 "
-(const byte*) main::msg2 = (string) "message 2 "
-(const byte*) msg1 = (string) "message 1 "
+(const string) main::msg[] = (string) "message 3 "
+(const byte*) main::msg2[] = (string) "message 2 "
+(const byte*) msg1[] = (string) "message 1 "
(void()) print((byte*) print::msg)
(label) print::@1
(label) print::@2
diff --git a/src/test/ref/inline-word.log b/src/test/ref/inline-word.log
index a25159a7a..07fd98523 100644
--- a/src/test/ref/inline-word.log
+++ b/src/test/ref/inline-word.log
@@ -59,7 +59,7 @@ SYMBOL TABLE SSA
(byte) main::h#2
(byte) main::h#3
(byte) main::h#4
-(const byte*) main::his = { >(const byte*) SCREEN, >(const byte*) SCREEN+(number) $100, >(const byte*) SCREEN+(number) $200 }
+(const byte*) main::his[] = { >(const byte*) SCREEN, >(const byte*) SCREEN+(number) $100, >(const byte*) SCREEN+(number) $200 }
(byte) main::l
(byte) main::l#0
(byte) main::l#1
@@ -439,7 +439,7 @@ FINAL SYMBOL TABLE
(byte) main::h
(byte) main::h#1 h zp[1]:2 16.5
(byte) main::h#4 h zp[1]:2 20.499999999999996
-(const byte*) main::his = { >(const byte*) SCREEN, >(const byte*) SCREEN+(word) $100, >(const byte*) SCREEN+(word) $200 }
+(const byte*) main::his[] = { >(const byte*) SCREEN, >(const byte*) SCREEN+(word) $100, >(const byte*) SCREEN+(word) $200 }
(byte) main::l
(byte) main::l#1 reg byte x 151.5
(byte) main::l#2 reg byte x 101.0
diff --git a/src/test/ref/inline-word.sym b/src/test/ref/inline-word.sym
index 76e5acaf3..b41af5788 100644
--- a/src/test/ref/inline-word.sym
+++ b/src/test/ref/inline-word.sym
@@ -10,7 +10,7 @@
(byte) main::h
(byte) main::h#1 h zp[1]:2 16.5
(byte) main::h#4 h zp[1]:2 20.499999999999996
-(const byte*) main::his = { >(const byte*) SCREEN, >(const byte*) SCREEN+(word) $100, >(const byte*) SCREEN+(word) $200 }
+(const byte*) main::his[] = { >(const byte*) SCREEN, >(const byte*) SCREEN+(word) $100, >(const byte*) SCREEN+(word) $200 }
(byte) main::l
(byte) main::l#1 reg byte x 151.5
(byte) main::l#2 reg byte x 101.0
diff --git a/src/test/ref/inlinearrayproblem.log b/src/test/ref/inlinearrayproblem.log
index d1dde5848..b4f9e7b3b 100644
--- a/src/test/ref/inlinearrayproblem.log
+++ b/src/test/ref/inlinearrayproblem.log
@@ -39,12 +39,12 @@ SYMBOL TABLE SSA
(bool~) main::$0
(label) main::@1
(label) main::@return
-(const byte*) main::data = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 }
+(const byte*) main::data[] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3 }
(byte) main::i
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const byte*) main::txt = (string) "qwe"z
+(const byte*) main::txt[] = (string) "qwe"z
Simplifying constant integer cast 1
Simplifying constant integer cast 2
@@ -302,11 +302,11 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@1
(label) main::@return
-(const byte*) main::data = { (byte) 1, (byte) 2, (byte) 3 }
+(const byte*) main::data[] = { (byte) 1, (byte) 2, (byte) 3 }
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) main::txt = (string) "qwe"z
+(const byte*) main::txt[] = (string) "qwe"z
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/inlinearrayproblem.sym b/src/test/ref/inlinearrayproblem.sym
index 31c8d145d..716f2fe7a 100644
--- a/src/test/ref/inlinearrayproblem.sym
+++ b/src/test/ref/inlinearrayproblem.sym
@@ -6,10 +6,10 @@
(void()) main()
(label) main::@1
(label) main::@return
-(const byte*) main::data = { (byte) 1, (byte) 2, (byte) 3 }
+(const byte*) main::data[] = { (byte) 1, (byte) 2, (byte) 3 }
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) main::txt = (string) "qwe"z
+(const byte*) main::txt[] = (string) "qwe"z
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/inmem-const-array.log b/src/test/ref/inmem-const-array.log
index 405fbf9e9..199c4420c 100644
--- a/src/test/ref/inmem-const-array.log
+++ b/src/test/ref/inmem-const-array.log
@@ -59,7 +59,7 @@ SYMBOL TABLE SSA
(label) main::@3
(label) main::@return
(const byte*) main::cols = (byte*)(number) $d800
-(const byte*) main::colseq = { (const byte) WHITE, (const byte) RED, (const byte) GREEN }
+(const byte*) main::colseq[] = { (const byte) WHITE, (const byte) RED, (const byte) GREEN }
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@@ -445,7 +445,7 @@ FINAL SYMBOL TABLE
(label) main::@3
(label) main::@return
(const byte*) main::cols = (byte*) 55296
-(const byte*) main::colseq = { (const byte) WHITE, (const byte) RED, (const byte) GREEN }
+(const byte*) main::colseq[] = { (const byte) WHITE, (const byte) RED, (const byte) GREEN }
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 6.285714285714286
diff --git a/src/test/ref/inmem-const-array.sym b/src/test/ref/inmem-const-array.sym
index f4981e26b..11c47ad73 100644
--- a/src/test/ref/inmem-const-array.sym
+++ b/src/test/ref/inmem-const-array.sym
@@ -10,7 +10,7 @@
(label) main::@3
(label) main::@return
(const byte*) main::cols = (byte*) 55296
-(const byte*) main::colseq = { (const byte) WHITE, (const byte) RED, (const byte) GREEN }
+(const byte*) main::colseq[] = { (const byte) WHITE, (const byte) RED, (const byte) GREEN }
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 6.285714285714286
diff --git a/src/test/ref/inmemarray.log b/src/test/ref/inmemarray.log
index 769c4fc2f..7a123182e 100644
--- a/src/test/ref/inmemarray.log
+++ b/src/test/ref/inmemarray.log
@@ -46,7 +46,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) TXT = { (byte)(number) 3, (byte)(number) 1, (byte)(number) $d, (byte)(number) 5, (byte)(number) $c, (byte)(number) $f, (byte)(number) $14, (byte)(number) $20 }
+(const byte*) TXT[] = { (byte)(number) 3, (byte)(number) 1, (byte)(number) $d, (byte)(number) 5, (byte)(number) $c, (byte)(number) $f, (byte)(number) $14, (byte)(number) $20 }
(void()) main()
(bool~) main::$0
(bool~) main::$1
@@ -420,7 +420,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) TXT = { (byte) 3, (byte) 1, (byte) $d, (byte) 5, (byte) $c, (byte) $f, (byte) $14, (byte) $20 }
+(const byte*) TXT[] = { (byte) 3, (byte) 1, (byte) $d, (byte) 5, (byte) $c, (byte) $f, (byte) $14, (byte) $20 }
(void()) main()
(label) main::@1
(label) main::@2
diff --git a/src/test/ref/inmemarray.sym b/src/test/ref/inmemarray.sym
index 23a6870d2..ffbce0f9d 100644
--- a/src/test/ref/inmemarray.sym
+++ b/src/test/ref/inmemarray.sym
@@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) TXT = { (byte) 3, (byte) 1, (byte) $d, (byte) 5, (byte) $c, (byte) $f, (byte) $14, (byte) $20 }
+(const byte*) TXT[] = { (byte) 3, (byte) 1, (byte) $d, (byte) 5, (byte) $c, (byte) $f, (byte) $14, (byte) $20 }
(void()) main()
(label) main::@1
(label) main::@2
diff --git a/src/test/ref/inmemstring.log b/src/test/ref/inmemstring.log
index 2427e75be..dd946f3e7 100644
--- a/src/test/ref/inmemstring.log
+++ b/src/test/ref/inmemstring.log
@@ -47,7 +47,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) TEXT = (string) "camelot "z
+(const byte*) TEXT[] = (string) "camelot "z
(void()) main()
(bool~) main::$0
(bool~) main::$1
@@ -441,7 +441,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) TEXT = (string) "camelot "z
+(const byte*) TEXT[] = (string) "camelot "z
(void()) main()
(label) main::@1
(label) main::@2
diff --git a/src/test/ref/inmemstring.sym b/src/test/ref/inmemstring.sym
index 9ff93e35e..620fc150f 100644
--- a/src/test/ref/inmemstring.sym
+++ b/src/test/ref/inmemstring.sym
@@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) TEXT = (string) "camelot "z
+(const byte*) TEXT[] = (string) "camelot "z
(void()) main()
(label) main::@1
(label) main::@2
diff --git a/src/test/ref/inner-increment-problem.log b/src/test/ref/inner-increment-problem.log
index 4fa11cec7..2be43e4ea 100644
--- a/src/test/ref/inner-increment-problem.log
+++ b/src/test/ref/inner-increment-problem.log
@@ -38,7 +38,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const word*) CHAR_COUNTS = { fill( $100, 0) }
+(const word*) CHAR_COUNTS[(number) $100] = { fill( $100, 0) }
(const byte) SIZEOF_WORD = (byte) 2
(void()) main()
(bool~) main::$1
@@ -408,7 +408,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const word*) CHAR_COUNTS = { fill( $100, 0) }
+(const word*) CHAR_COUNTS[(number) $100] = { fill( $100, 0) }
(void()) main()
(byte~) main::$3 reg byte x 11.0
(byte~) main::$4 reg byte a 22.0
diff --git a/src/test/ref/inner-increment-problem.sym b/src/test/ref/inner-increment-problem.sym
index 374d4ddd4..9319c66b0 100644
--- a/src/test/ref/inner-increment-problem.sym
+++ b/src/test/ref/inner-increment-problem.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const word*) CHAR_COUNTS = { fill( $100, 0) }
+(const word*) CHAR_COUNTS[(number) $100] = { fill( $100, 0) }
(void()) main()
(byte~) main::$3 reg byte x 11.0
(byte~) main::$4 reg byte a 22.0
diff --git a/src/test/ref/irq-idx-problem.log b/src/test/ref/irq-idx-problem.log
index 56abbfc2b..27e53db03 100644
--- a/src/test/ref/irq-idx-problem.log
+++ b/src/test/ref/irq-idx-problem.log
@@ -103,9 +103,9 @@ SYMBOL TABLE SSA
(label) @end
(const byte*) CIA1_INTERRUPT = (byte*)(number) $dc0d
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
-(const byte*) IRQ_CHANGE_IDX = { (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT }
+(const byte*) IRQ_CHANGE_IDX[] = { (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT, (byte)(number) $20, (byte)(number) $21, (const byte) IRQ_CHANGE_NEXT }
(const byte) IRQ_CHANGE_NEXT = (number) $7f
-(const byte*) IRQ_CHANGE_VAL = { (byte)(number) $b, (byte)(number) $b, (byte)(number) $63, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) 7, (byte)(number) 7, (byte)(number) $83, (byte)(number) 0, (byte)(number) 0, (byte)(number) $60 }
+(const byte*) IRQ_CHANGE_VAL[] = { (byte)(number) $b, (byte)(number) $b, (byte)(number) $63, (byte)(number) 0, (byte)(number) 0, (byte)(number) $80, (byte)(number) 7, (byte)(number) 7, (byte)(number) $83, (byte)(number) 0, (byte)(number) 0, (byte)(number) $60 }
(const byte*) IRQ_ENABLE = (byte*)(number) $d01a
(const byte) IRQ_RASTER = (number) 1
(const byte*) IRQ_STATUS = (byte*)(number) $d019
@@ -788,9 +788,9 @@ FINAL SYMBOL TABLE
(label) @end
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
-(const byte*) IRQ_CHANGE_IDX = { (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT }
+(const byte*) IRQ_CHANGE_IDX[] = { (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT }
(const byte) IRQ_CHANGE_NEXT = (number) $7f
-(const byte*) IRQ_CHANGE_VAL = { (byte) $b, (byte) $b, (byte) $63, (byte) 0, (byte) 0, (byte) $80, (byte) 7, (byte) 7, (byte) $83, (byte) 0, (byte) 0, (byte) $60 }
+(const byte*) IRQ_CHANGE_VAL[] = { (byte) $b, (byte) $b, (byte) $63, (byte) 0, (byte) 0, (byte) $80, (byte) 7, (byte) 7, (byte) $83, (byte) 0, (byte) 0, (byte) $60 }
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte*) IRQ_STATUS = (byte*) 53273
diff --git a/src/test/ref/irq-idx-problem.sym b/src/test/ref/irq-idx-problem.sym
index 91f8b1b02..e073e0416 100644
--- a/src/test/ref/irq-idx-problem.sym
+++ b/src/test/ref/irq-idx-problem.sym
@@ -4,9 +4,9 @@
(label) @end
(const byte*) CIA1_INTERRUPT = (byte*) 56333
(const byte) CIA_INTERRUPT_CLEAR = (number) $7f
-(const byte*) IRQ_CHANGE_IDX = { (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT }
+(const byte*) IRQ_CHANGE_IDX[] = { (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT, (byte) $20, (byte) $21, (const byte) IRQ_CHANGE_NEXT }
(const byte) IRQ_CHANGE_NEXT = (number) $7f
-(const byte*) IRQ_CHANGE_VAL = { (byte) $b, (byte) $b, (byte) $63, (byte) 0, (byte) 0, (byte) $80, (byte) 7, (byte) 7, (byte) $83, (byte) 0, (byte) 0, (byte) $60 }
+(const byte*) IRQ_CHANGE_VAL[] = { (byte) $b, (byte) $b, (byte) $63, (byte) 0, (byte) 0, (byte) $80, (byte) 7, (byte) 7, (byte) $83, (byte) 0, (byte) 0, (byte) $60 }
(const byte*) IRQ_ENABLE = (byte*) 53274
(const byte) IRQ_RASTER = (number) 1
(const byte*) IRQ_STATUS = (byte*) 53273
diff --git a/src/test/ref/iterarray.log b/src/test/ref/iterarray.log
index 839e84741..9a63af193 100644
--- a/src/test/ref/iterarray.log
+++ b/src/test/ref/iterarray.log
@@ -40,7 +40,7 @@ SYMBOL TABLE SSA
(bool~) main::$3
(label) main::@1
(label) main::@return
-(const byte*) main::buf = (byte*)(number) $1100
+(const byte*) main::buf[(number) $10] = (byte*)(number) $1100
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@@ -312,7 +312,7 @@ FINAL SYMBOL TABLE
(byte~) main::$1 reg byte a 22.0
(label) main::@1
(label) main::@return
-(const byte*) main::buf = (byte*) 4352
+(const byte*) main::buf[(number) $10] = (byte*) 4352
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666
diff --git a/src/test/ref/iterarray.sym b/src/test/ref/iterarray.sym
index 8b6f783c1..3d097d8b3 100644
--- a/src/test/ref/iterarray.sym
+++ b/src/test/ref/iterarray.sym
@@ -5,7 +5,7 @@
(byte~) main::$1 reg byte a 22.0
(label) main::@1
(label) main::@return
-(const byte*) main::buf = (byte*) 4352
+(const byte*) main::buf[(number) $10] = (byte*) 4352
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666
diff --git a/src/test/ref/kc-ka-string-encoding.log b/src/test/ref/kc-ka-string-encoding.log
index 502181236..59acf9506 100644
--- a/src/test/ref/kc-ka-string-encoding.log
+++ b/src/test/ref/kc-ka-string-encoding.log
@@ -36,7 +36,7 @@ SYMBOL TABLE SSA
(signed word) main::return#1
(signed word) main::return#2
(signed word) main::return#3
-(const byte*) strTemp = (string) "v=X"pm
+(const byte*) strTemp[] = (string) "v=X"pm
Adding number conversion cast (unumber) 2 in *((const byte*) strTemp + (number) 2) ← (byte) 'e'pm
Adding number conversion cast (unumber) 0 in *((const byte*) strTemp + (number) 3) ← (number) 0
@@ -250,7 +250,7 @@ FINAL SYMBOL TABLE
(signed word()) main()
(label) main::@return
(signed word) main::return
-(const byte*) strTemp = (string) "v=X"pm
+(const byte*) strTemp[] = (string) "v=X"pm
diff --git a/src/test/ref/kc-ka-string-encoding.sym b/src/test/ref/kc-ka-string-encoding.sym
index 9fdb6ff25..1aaf620b2 100644
--- a/src/test/ref/kc-ka-string-encoding.sym
+++ b/src/test/ref/kc-ka-string-encoding.sym
@@ -4,5 +4,5 @@
(signed word()) main()
(label) main::@return
(signed word) main::return
-(const byte*) strTemp = (string) "v=X"pm
+(const byte*) strTemp[] = (string) "v=X"pm
diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log
index e05b7afa4..7cad6ab67 100644
--- a/src/test/ref/keyboard-glitch.log
+++ b/src/test/ref/keyboard-glitch.log
@@ -229,7 +229,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -244,7 +244,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) main()
(label) main::@1
(label) main::@2
@@ -1315,7 +1315,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#4 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -1324,7 +1324,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(label) main::@1
(void()) menu()
diff --git a/src/test/ref/keyboard-glitch.sym b/src/test/ref/keyboard-glitch.sym
index 1226a0b49..656cbb272 100644
--- a/src/test/ref/keyboard-glitch.sym
+++ b/src/test/ref/keyboard-glitch.sym
@@ -28,7 +28,7 @@
(byte) keyboard_key_pressed::return#4 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -37,7 +37,7 @@
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(label) main::@1
(void()) menu()
diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log
index f040781a8..8b32120ab 100644
--- a/src/test/ref/line-anim.log
+++ b/src/test/ref/line-anim.log
@@ -761,10 +761,10 @@ SYMBOL TABLE SSA
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
-(const byte*) delay = { fill( SIZE, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
+(const byte*) delay[(const byte) SIZE] = { fill( SIZE, 0) }
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(bool~) divr16s::$0
(bool~) divr16s::$1
@@ -1145,14 +1145,14 @@ SYMBOL TABLE SSA
(byte) screen_fill::y#2
(byte) screen_fill::y#3
(byte) screen_fill::y#4
-(const signed byte*) x_add = { fill( SIZE, 0) }
-(const word*) x_cur = { fill( SIZE, 0) }
-(const word*) x_end = { (word)(number) $14, (word)(number) $a, (word)(number) $14, (word)(number) $14 }
-(const word*) x_start = { (word)(number) $a, (word)(number) $14, (word)(number) $1e, (word)(number) $1e }
-(const signed byte*) y_add = { fill( SIZE, 0) }
-(const word*) y_cur = { fill( SIZE, 0) }
-(const byte*) y_end = { (byte)(number) $14, (byte)(number) $14, (byte)(number) $a, (byte)(number) $14 }
-(const byte*) y_start = { (byte)(number) $a, (byte)(number) $a, (byte)(number) $a, (byte)(number) $14 }
+(const signed byte*) x_add[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) x_cur[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) x_end[(const byte) SIZE] = { (word)(number) $14, (word)(number) $a, (word)(number) $14, (word)(number) $14 }
+(const word*) x_start[(const byte) SIZE] = { (word)(number) $a, (word)(number) $14, (word)(number) $1e, (word)(number) $1e }
+(const signed byte*) y_add[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) y_cur[(const byte) SIZE] = { fill( SIZE, 0) }
+(const byte*) y_end[(const byte) SIZE] = { (byte)(number) $14, (byte)(number) $14, (byte)(number) $a, (byte)(number) $14 }
+(const byte*) y_start[(const byte) SIZE] = { (byte)(number) $a, (byte)(number) $a, (byte)(number) $a, (byte)(number) $14 }
Fixing inline constructor with bitmap_clear::$3 ← (byte)*(bitmap_plot_yhi + 0) w= (byte)*(bitmap_plot_ylo + 0)
Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#1) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#1)
@@ -5115,10 +5115,10 @@ FINAL SYMBOL TABLE
(word) bitmap_plot::x#0 x zp[2]:10 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 15.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
-(const byte*) delay = { fill( SIZE, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
+(const byte*) delay[(const byte) SIZE] = { fill( SIZE, 0) }
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(label) divr16s::@1
(label) divr16s::@10
@@ -5278,14 +5278,14 @@ FINAL SYMBOL TABLE
(byte) screen_fill::y
(byte) screen_fill::y#1 y zp[1]:18 16.5
(byte) screen_fill::y#4 y zp[1]:18 3.6666666666666665
-(const signed byte*) x_add = { fill( SIZE, 0) }
-(const word*) x_cur = { fill( SIZE, 0) }
-(const word*) x_end = { (word) $14, (word) $a, (word) $14, (word) $14 }
-(const word*) x_start = { (word) $a, (word) $14, (word) $1e, (word) $1e }
-(const signed byte*) y_add = { fill( SIZE, 0) }
-(const word*) y_cur = { fill( SIZE, 0) }
-(const byte*) y_end = { (byte) $14, (byte) $14, (byte) $a, (byte) $14 }
-(const byte*) y_start = { (byte) $a, (byte) $a, (byte) $a, (byte) $14 }
+(const signed byte*) x_add[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) x_cur[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) x_end[(const byte) SIZE] = { (word) $14, (word) $a, (word) $14, (word) $14 }
+(const word*) x_start[(const byte) SIZE] = { (word) $a, (word) $14, (word) $1e, (word) $1e }
+(const signed byte*) y_add[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) y_cur[(const byte) SIZE] = { fill( SIZE, 0) }
+(const byte*) y_end[(const byte) SIZE] = { (byte) $14, (byte) $14, (byte) $a, (byte) $14 }
+(const byte*) y_start[(const byte) SIZE] = { (byte) $a, (byte) $a, (byte) $a, (byte) $14 }
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
zp[2]:2 [ divr16u::dividend#2 divr16u::dividend#0 point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 ]
diff --git a/src/test/ref/line-anim.sym b/src/test/ref/line-anim.sym
index 1e6bcc895..b78327dde 100644
--- a/src/test/ref/line-anim.sym
+++ b/src/test/ref/line-anim.sym
@@ -73,10 +73,10 @@
(word) bitmap_plot::x#0 x zp[2]:10 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 15.0
-(const byte*) bitmap_plot_bit = { fill( $100, 0) }
-(const byte*) bitmap_plot_yhi = { fill( $100, 0) }
-(const byte*) bitmap_plot_ylo = { fill( $100, 0) }
-(const byte*) delay = { fill( SIZE, 0) }
+(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
+(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
+(const byte*) delay[(const byte) SIZE] = { fill( SIZE, 0) }
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(label) divr16s::@1
(label) divr16s::@10
@@ -236,14 +236,14 @@
(byte) screen_fill::y
(byte) screen_fill::y#1 y zp[1]:18 16.5
(byte) screen_fill::y#4 y zp[1]:18 3.6666666666666665
-(const signed byte*) x_add = { fill( SIZE, 0) }
-(const word*) x_cur = { fill( SIZE, 0) }
-(const word*) x_end = { (word) $14, (word) $a, (word) $14, (word) $14 }
-(const word*) x_start = { (word) $a, (word) $14, (word) $1e, (word) $1e }
-(const signed byte*) y_add = { fill( SIZE, 0) }
-(const word*) y_cur = { fill( SIZE, 0) }
-(const byte*) y_end = { (byte) $14, (byte) $14, (byte) $a, (byte) $14 }
-(const byte*) y_start = { (byte) $a, (byte) $a, (byte) $a, (byte) $14 }
+(const signed byte*) x_add[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) x_cur[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) x_end[(const byte) SIZE] = { (word) $14, (word) $a, (word) $14, (word) $14 }
+(const word*) x_start[(const byte) SIZE] = { (word) $a, (word) $14, (word) $1e, (word) $1e }
+(const signed byte*) y_add[(const byte) SIZE] = { fill( SIZE, 0) }
+(const word*) y_cur[(const byte) SIZE] = { fill( SIZE, 0) }
+(const byte*) y_end[(const byte) SIZE] = { (byte) $14, (byte) $14, (byte) $a, (byte) $14 }
+(const byte*) y_start[(const byte) SIZE] = { (byte) $a, (byte) $a, (byte) $a, (byte) $14 }
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
zp[2]:2 [ divr16u::dividend#2 divr16u::dividend#0 point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_return#0 ]
diff --git a/src/test/ref/linegen.log b/src/test/ref/linegen.log
index 80749522c..b7b6b3704 100644
--- a/src/test/ref/linegen.log
+++ b/src/test/ref/linegen.log
@@ -912,18 +912,18 @@ SYMBOL TABLE SSA
(byte) main::i#7
(byte) main::i#8
(byte) main::i#9
-(const word*) main::lintab1 = { fill( $14, 0) }
-(const word*) main::lintab2 = { fill( $14, 0) }
-(const word*) main::lintab3 = { fill( $14, 0) }
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
-(const string) main::str2 = (string) " "
-(const string) main::str3 = (string) " "
-(const string) main::str4 = (string) " "
-(const string) main::str5 = (string) " "
-(const string) main::str6 = (string) " "
-(const string) main::str7 = (string) " "
-(const string) main::str8 = (string) " "
+(const word*) main::lintab1[(number) $14] = { fill( $14, 0) }
+(const word*) main::lintab2[(number) $14] = { fill( $14, 0) }
+(const word*) main::lintab3[(number) $14] = { fill( $14, 0) }
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
+(const string) main::str2[] = (string) " "
+(const string) main::str3[] = (string) " "
+(const string) main::str4[] = (string) " "
+(const string) main::str5[] = (string) " "
+(const string) main::str6[] = (string) " "
+(const string) main::str7[] = (string) " "
+(const string) main::str8[] = (string) " "
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
@@ -1079,7 +1079,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -4894,11 +4894,11 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#10 reg byte x 3.5
-(const word*) main::lintab1 = { fill( $14, 0) }
-(const word*) main::lintab2 = { fill( $14, 0) }
-(const word*) main::lintab3 = { fill( $14, 0) }
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const word*) main::lintab1[(number) $14] = { fill( $14, 0) }
+(const word*) main::lintab2[(number) $14] = { fill( $14, 0) }
+(const word*) main::lintab3[(number) $14] = { fill( $14, 0) }
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -4942,7 +4942,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#98 print_char_cursor zp[2]:3 4.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:11 8.225
(byte*) print_line_cursor#11 print_line_cursor zp[2]:11 204.0
diff --git a/src/test/ref/linegen.sym b/src/test/ref/linegen.sym
index a5941f1a3..85f96a02d 100644
--- a/src/test/ref/linegen.sym
+++ b/src/test/ref/linegen.sym
@@ -109,11 +109,11 @@
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#10 reg byte x 3.5
-(const word*) main::lintab1 = { fill( $14, 0) }
-(const word*) main::lintab2 = { fill( $14, 0) }
-(const word*) main::lintab3 = { fill( $14, 0) }
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const word*) main::lintab1[(number) $14] = { fill( $14, 0) }
+(const word*) main::lintab2[(number) $14] = { fill( $14, 0) }
+(const word*) main::lintab3[(number) $14] = { fill( $14, 0) }
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -157,7 +157,7 @@
(byte*) print_char_cursor#98 print_char_cursor zp[2]:3 4.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:11 8.225
(byte*) print_line_cursor#11 print_line_cursor zp[2]:11 204.0
diff --git a/src/test/ref/literal-strings.log b/src/test/ref/literal-strings.log
index cf6597a6b..c9c9499a4 100644
--- a/src/test/ref/literal-strings.log
+++ b/src/test/ref/literal-strings.log
@@ -40,8 +40,8 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const byte*) msg = (string) "cml"
-(const byte*) msgz = (string) "cml"z
+(const byte*) msg[] = (string) "cml"
+(const byte*) msgz[] = (string) "cml"z
Adding number conversion cast (unumber) $28 in *((const byte*) SCREEN+(number) $28 + (byte) main::i#2) ← *((const byte*) msgz + (byte) main::i#2)
Successful SSA optimization PassNAddNumberTypeConversions
@@ -301,8 +301,8 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) msg = (string) "cml"
-(const byte*) msgz = (string) "cml"z
+(const byte*) msg[] = (string) "cml"
+(const byte*) msgz[] = (string) "cml"z
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/literal-strings.sym b/src/test/ref/literal-strings.sym
index e7448fd26..4947c6a14 100644
--- a/src/test/ref/literal-strings.sym
+++ b/src/test/ref/literal-strings.sym
@@ -8,7 +8,7 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) msg = (string) "cml"
-(const byte*) msgz = (string) "cml"z
+(const byte*) msg[] = (string) "cml"
+(const byte*) msgz[] = (string) "cml"z
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/literal-word-pointer-0.log b/src/test/ref/literal-word-pointer-0.log
index af3cd24bc..9b67e1ec4 100644
--- a/src/test/ref/literal-word-pointer-0.log
+++ b/src/test/ref/literal-word-pointer-0.log
@@ -39,7 +39,7 @@ SYMBOL TABLE SSA
(void()) main()
(label) main::@1
(label) main::@return
-(const string) main::str = (string) "qwe"
+(const string) main::str[] = (string) "qwe"
(void()) print((byte*) print::str)
(byte*~) print::$0
(label) print::@return
@@ -260,7 +260,7 @@ FINAL SYMBOL TABLE
(label) @end
(void()) main()
(label) main::@return
-(const string) main::str = (string) "qwe"
+(const string) main::str[] = (string) "qwe"
(void()) print((byte*) print::str)
(label) print::@return
(byte*) print::str
diff --git a/src/test/ref/literal-word-pointer-0.sym b/src/test/ref/literal-word-pointer-0.sym
index a14bc5f33..8cb291f1b 100644
--- a/src/test/ref/literal-word-pointer-0.sym
+++ b/src/test/ref/literal-word-pointer-0.sym
@@ -3,7 +3,7 @@
(label) @end
(void()) main()
(label) main::@return
-(const string) main::str = (string) "qwe"
+(const string) main::str[] = (string) "qwe"
(void()) print((byte*) print::str)
(label) print::@return
(byte*) print::str
diff --git a/src/test/ref/literals.log b/src/test/ref/literals.log
index 01ad7a4b5..8b2ffda8e 100644
--- a/src/test/ref/literals.log
+++ b/src/test/ref/literals.log
@@ -51,8 +51,8 @@ SYMBOL TABLE SSA
(byte) main::i#1
(byte) main::i#2
(const byte) num = (byte) 1
-(const byte*) nums = { (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5 }
-(const byte*) str = (string) "bcde"
+(const byte*) nums[] = { (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5 }
+(const byte*) str[] = (string) "bcde"
Adding number conversion cast (unumber) 0 in *((const byte*) SCREEN + (number) 0) ← (const byte) ch
Adding number conversion cast (unumber) 2 in *((const byte*) SCREEN + (number) 2) ← (const byte) num
@@ -351,8 +351,8 @@ FINAL SYMBOL TABLE
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
(const byte) num = (byte) 1
-(const byte*) nums = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 }
-(const byte*) str = (string) "bcde"
+(const byte*) nums[] = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 }
+(const byte*) str[] = (string) "bcde"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/literals.sym b/src/test/ref/literals.sym
index 4e5d06224..3706329de 100644
--- a/src/test/ref/literals.sym
+++ b/src/test/ref/literals.sym
@@ -10,7 +10,7 @@
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
(const byte) num = (byte) 1
-(const byte*) nums = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 }
-(const byte*) str = (string) "bcde"
+(const byte*) nums[] = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 }
+(const byte*) str[] = (string) "bcde"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/local-string.log b/src/test/ref/local-string.log
index fdfe5feca..44c1900c3 100644
--- a/src/test/ref/local-string.log
+++ b/src/test/ref/local-string.log
@@ -48,7 +48,7 @@ SYMBOL TABLE SSA
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
-(const byte*) main::msg = (string) "message 2 "
+(const byte*) main::msg[] = (string) "message 2 "
(const byte*) main::screen = (byte*)(number) $400
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
@@ -301,7 +301,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
-(const byte*) main::msg = (string) "message 2 "
+(const byte*) main::msg[] = (string) "message 2 "
(const byte*) main::screen = (byte*) 1024
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/local-string.sym b/src/test/ref/local-string.sym
index 79899f126..2fbdfe9dc 100644
--- a/src/test/ref/local-string.sym
+++ b/src/test/ref/local-string.sym
@@ -8,7 +8,7 @@
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 18.333333333333332
-(const byte*) main::msg = (string) "message 2 "
+(const byte*) main::msg[] = (string) "message 2 "
(const byte*) main::screen = (byte*) 1024
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/loop-break-continue.log b/src/test/ref/loop-break-continue.log
index 59620fd92..5a5fa6f87 100644
--- a/src/test/ref/loop-break-continue.log
+++ b/src/test/ref/loop-break-continue.log
@@ -81,7 +81,7 @@ SYMBOL TABLE SSA
(byte*) main::screen#3
(byte*) main::screen#4
(byte*) main::screen#5
-(const byte*) main::str = (string) "hello brave new world"
+(const byte*) main::str[] = (string) "hello brave new world"
Adding number conversion cast (unumber) 0 in (bool~) main::$0 ← *((const byte*) main::str + (byte) main::i#2) == (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
@@ -455,7 +455,7 @@ FINAL SYMBOL TABLE
(byte*) main::screen#1 screen zp[2]:2 22.0
(byte*) main::screen#2 screen zp[2]:2 11.0
(byte*) main::screen#5 screen zp[2]:2 11.0
-(const byte*) main::str = (string) "hello brave new world"
+(const byte*) main::str[] = (string) "hello brave new world"
reg byte x [ main::i#2 main::i#1 ]
zp[2]:2 [ main::screen#2 main::screen#5 main::screen#1 ]
diff --git a/src/test/ref/loop-break-continue.sym b/src/test/ref/loop-break-continue.sym
index 1cf4edeb5..4bbb4dacd 100644
--- a/src/test/ref/loop-break-continue.sym
+++ b/src/test/ref/loop-break-continue.sym
@@ -14,7 +14,7 @@
(byte*) main::screen#1 screen zp[2]:2 22.0
(byte*) main::screen#2 screen zp[2]:2 11.0
(byte*) main::screen#5 screen zp[2]:2 11.0
-(const byte*) main::str = (string) "hello brave new world"
+(const byte*) main::str[] = (string) "hello brave new world"
reg byte x [ main::i#2 main::i#1 ]
zp[2]:2 [ main::screen#2 main::screen#5 main::screen#1 ]
diff --git a/src/test/ref/loop-for-continue.log b/src/test/ref/loop-for-continue.log
index 3210c0309..6d40937de 100644
--- a/src/test/ref/loop-for-continue.log
+++ b/src/test/ref/loop-for-continue.log
@@ -54,7 +54,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello brave new world!"
+(const byte*) MESSAGE[] = (string) "hello brave new world!"
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
(bool~) main::$0
@@ -412,7 +412,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello brave new world!"
+(const byte*) MESSAGE[] = (string) "hello brave new world!"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@1
diff --git a/src/test/ref/loop-for-continue.sym b/src/test/ref/loop-for-continue.sym
index 9fc5d1972..87fe07fc8 100644
--- a/src/test/ref/loop-for-continue.sym
+++ b/src/test/ref/loop-for-continue.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello brave new world!"
+(const byte*) MESSAGE[] = (string) "hello brave new world!"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@1
diff --git a/src/test/ref/loop-for-empty-body.log b/src/test/ref/loop-for-empty-body.log
index 0420c1e89..d147300bc 100644
--- a/src/test/ref/loop-for-empty-body.log
+++ b/src/test/ref/loop-for-empty-body.log
@@ -53,7 +53,7 @@ SYMBOL TABLE SSA
(byte) main::b#2
(byte) main::b#3
(byte) main::b#4
-(const byte*) str = (string) "Hello!"
+(const byte*) str[] = (string) "Hello!"
Adding number conversion cast (unumber) 0 in (byte) main::b#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$1 ← *((const byte*) str + (byte) main::b#2) != (number) 0
@@ -337,7 +337,7 @@ FINAL SYMBOL TABLE
(byte) main::b
(byte) main::b#1 reg byte x 22.0
(byte) main::b#2 reg byte x 17.5
-(const byte*) str = (string) "Hello!"
+(const byte*) str[] = (string) "Hello!"
reg byte x [ main::b#2 main::b#1 ]
reg byte x [ main::$0 ]
diff --git a/src/test/ref/loop-for-empty-body.sym b/src/test/ref/loop-for-empty-body.sym
index 3d730a433..aabdd7fd5 100644
--- a/src/test/ref/loop-for-empty-body.sym
+++ b/src/test/ref/loop-for-empty-body.sym
@@ -11,7 +11,7 @@
(byte) main::b
(byte) main::b#1 reg byte x 22.0
(byte) main::b#2 reg byte x 17.5
-(const byte*) str = (string) "Hello!"
+(const byte*) str[] = (string) "Hello!"
reg byte x [ main::b#2 main::b#1 ]
reg byte x [ main::$0 ]
diff --git a/src/test/ref/loophead-problem-2.log b/src/test/ref/loophead-problem-2.log
index b1c57c646..a6020b5a6 100644
--- a/src/test/ref/loophead-problem-2.log
+++ b/src/test/ref/loophead-problem-2.log
@@ -89,7 +89,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
-(const signed word*) ball_y = { (signed word)(number) $32, (signed word)(number) $64, (signed word)(number) -$c8, (signed word)(number) $c, (signed word)(number) -$64, (signed word)(number) $4b, (signed word)(number) 0, (signed word)(number) -$79 }
+(const signed word*) ball_y[(number) 8] = { (signed word)(number) $32, (signed word)(number) $64, (signed word)(number) -$c8, (signed word)(number) $c, (signed word)(number) -$64, (signed word)(number) $4b, (signed word)(number) 0, (signed word)(number) -$79 }
(void()) main()
(byte~) main::$0
(byte~) main::$1
@@ -743,7 +743,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const signed word*) ball_y = { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 }
+(const signed word*) ball_y[(number) 8] = { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 }
(void()) main()
(byte~) main::$1 reg byte a 4.0
(byte~) main::$2 reg byte a 4.0
diff --git a/src/test/ref/loophead-problem-2.sym b/src/test/ref/loophead-problem-2.sym
index a3d057ce6..3c619aafd 100644
--- a/src/test/ref/loophead-problem-2.sym
+++ b/src/test/ref/loophead-problem-2.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const signed word*) ball_y = { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 }
+(const signed word*) ball_y[(number) 8] = { (signed word) $32, (signed word) $64, (signed word) -$c8, (signed word) $c, (signed word) -$64, (signed word) $4b, (signed word) 0, (signed word) -$79 }
(void()) main()
(byte~) main::$1 reg byte a 4.0
(byte~) main::$2 reg byte a 4.0
diff --git a/src/test/ref/mem-alignment.log b/src/test/ref/mem-alignment.log
index dea34b894..29b3f88fb 100644
--- a/src/test/ref/mem-alignment.log
+++ b/src/test/ref/mem-alignment.log
@@ -43,7 +43,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) bs = { fill( $100, 0) }
+(const byte*) bs[(number) $100] = { fill( $100, 0) }
(void()) main()
(bool~) main::$0
(bool~) main::$1
@@ -51,7 +51,7 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) main::cs = { fill( $100, 0) }
+(const byte*) main::cs[(number) $100] = { fill( $100, 0) }
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@@ -409,12 +409,12 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) bs = { fill( $100, 0) }
+(const byte*) bs[(number) $100] = { fill( $100, 0) }
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
-(const byte*) main::cs = { fill( $100, 0) }
+(const byte*) main::cs[(number) $100] = { fill( $100, 0) }
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
diff --git a/src/test/ref/mem-alignment.sym b/src/test/ref/mem-alignment.sym
index 7d6305ffc..5f98e360a 100644
--- a/src/test/ref/mem-alignment.sym
+++ b/src/test/ref/mem-alignment.sym
@@ -1,12 +1,12 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) bs = { fill( $100, 0) }
+(const byte*) bs[(number) $100] = { fill( $100, 0) }
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
-(const byte*) main::cs = { fill( $100, 0) }
+(const byte*) main::cs[(number) $100] = { fill( $100, 0) }
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
diff --git a/src/test/ref/memcpy-1.log b/src/test/ref/memcpy-1.log
index 619266e3b..12aae7226 100644
--- a/src/test/ref/memcpy-1.log
+++ b/src/test/ref/memcpy-1.log
@@ -114,13 +114,13 @@ SYMBOL TABLE SSA
(label) @6
(label) @begin
(label) @end
-(const byte*) CAMELOT = (string) "camelot"
+(const byte*) CAMELOT[] = (string) "camelot"
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
(bool~) main::$2
(bool~) main::$3
-(const string) main::$4 = (string) "reigns"
-(const string) main::$5 = (string) "rules"
+(const string) main::$4[] = (string) "reigns"
+(const string) main::$5[] = (string) "rules"
(label) main::@1
(label) main::@2
(label) main::@3
@@ -1085,10 +1085,10 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) CAMELOT = (string) "camelot"
+(const byte*) CAMELOT[] = (string) "camelot"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
-(const string) main::$5 = (string) "rules"
+(const string) main::$5[] = (string) "rules"
(label) main::@1
(label) main::@2
(label) main::@3
diff --git a/src/test/ref/memcpy-1.sym b/src/test/ref/memcpy-1.sym
index c32c865df..1e17add36 100644
--- a/src/test/ref/memcpy-1.sym
+++ b/src/test/ref/memcpy-1.sym
@@ -1,10 +1,10 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) CAMELOT = (string) "camelot"
+(const byte*) CAMELOT[] = (string) "camelot"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
-(const string) main::$5 = (string) "rules"
+(const string) main::$5[] = (string) "rules"
(label) main::@1
(label) main::@2
(label) main::@3
diff --git a/src/test/ref/min-fmul-16.log b/src/test/ref/min-fmul-16.log
index d5c7626f7..591be2575 100644
--- a/src/test/ref/min-fmul-16.log
+++ b/src/test/ref/min-fmul-16.log
@@ -522,10 +522,10 @@ SYMBOL TABLE SSA
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(byte) mulf_init::x_255#5
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0
(number~) print_byte::$2
@@ -598,7 +598,7 @@ SYMBOL TABLE SSA
(dword) print_dword::dw#0
(dword) print_dword::dw#1
(dword) print_dword::dw#2
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -2783,10 +2783,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 4.0
@@ -2813,7 +2813,7 @@ FINAL SYMBOL TABLE
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:14 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_screen
(void()) print_set_screen((byte*) print_set_screen::screen)
diff --git a/src/test/ref/min-fmul-16.sym b/src/test/ref/min-fmul-16.sym
index ca0ce4d6b..a30e7439f 100644
--- a/src/test/ref/min-fmul-16.sym
+++ b/src/test/ref/min-fmul-16.sym
@@ -73,10 +73,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 4.0
@@ -103,7 +103,7 @@
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:14 5.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_screen
(void()) print_set_screen((byte*) print_set_screen::screen)
diff --git a/src/test/ref/mixed-array-0.log b/src/test/ref/mixed-array-0.log
index 418f05da6..c92f0f011 100644
--- a/src/test/ref/mixed-array-0.log
+++ b/src/test/ref/mixed-array-0.log
@@ -28,7 +28,7 @@ SYMBOL TABLE SSA
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*)(number) $400
-(const byte*) main::msg = { (byte) 1, (byte)(number) 2, (byte)(number) 3 }
+(const byte*) main::msg[] = { (byte) 1, (byte)(number) 2, (byte)(number) 3 }
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((const byte*) main::msg + (number) 0)
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((const byte*) main::msg + (unumber)(number) 0)
@@ -229,7 +229,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) main::msg = { (byte) 1, (byte) 2, (byte) 3 }
+(const byte*) main::msg[] = { (byte) 1, (byte) 2, (byte) 3 }
diff --git a/src/test/ref/mixed-array-0.sym b/src/test/ref/mixed-array-0.sym
index 9e04a037f..7d7cf791a 100644
--- a/src/test/ref/mixed-array-0.sym
+++ b/src/test/ref/mixed-array-0.sym
@@ -4,5 +4,5 @@
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const byte*) main::msg = { (byte) 1, (byte) 2, (byte) 3 }
+(const byte*) main::msg[] = { (byte) 1, (byte) 2, (byte) 3 }
diff --git a/src/test/ref/mixed-array-1.log b/src/test/ref/mixed-array-1.log
index 51d46e591..2d5eda114 100644
--- a/src/test/ref/mixed-array-1.log
+++ b/src/test/ref/mixed-array-1.log
@@ -28,7 +28,7 @@ SYMBOL TABLE SSA
(void()) main()
(label) main::@return
(const signed byte*) main::SCREEN = (signed byte*)(number) $400
-(const signed byte*) main::msg = { (signed byte)(number) -1, (signed byte)(number) 0, (signed byte)(number) 1 }
+(const signed byte*) main::msg[] = { (signed byte)(number) -1, (signed byte)(number) 0, (signed byte)(number) 1 }
Adding number conversion cast (unumber) 0 in *((const signed byte*) main::SCREEN + (number) 0) ← *((const signed byte*) main::msg + (number) 0)
Adding number conversion cast (unumber) 0 in *((const signed byte*) main::SCREEN + (number) 0) ← *((const signed byte*) main::msg + (unumber)(number) 0)
@@ -230,7 +230,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@return
(const signed byte*) main::SCREEN = (signed byte*) 1024
-(const signed byte*) main::msg = { (signed byte) -1, (signed byte) 0, (signed byte) 1 }
+(const signed byte*) main::msg[] = { (signed byte) -1, (signed byte) 0, (signed byte) 1 }
diff --git a/src/test/ref/mixed-array-1.sym b/src/test/ref/mixed-array-1.sym
index 683661622..3e1a0868f 100644
--- a/src/test/ref/mixed-array-1.sym
+++ b/src/test/ref/mixed-array-1.sym
@@ -4,5 +4,5 @@
(void()) main()
(label) main::@return
(const signed byte*) main::SCREEN = (signed byte*) 1024
-(const signed byte*) main::msg = { (signed byte) -1, (signed byte) 0, (signed byte) 1 }
+(const signed byte*) main::msg[] = { (signed byte) -1, (signed byte) 0, (signed byte) 1 }
diff --git a/src/test/ref/modglobal.log b/src/test/ref/modglobal.log
index 5c3e240b3..83f9e7870 100644
--- a/src/test/ref/modglobal.log
+++ b/src/test/ref/modglobal.log
@@ -95,7 +95,7 @@ SYMBOL TABLE SSA
(label) @3
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*)(number) $400
+(const byte*) SCREEN[(number) $100] = (byte*)(number) $400
(byte) cnt
(byte) cnt#0
(byte) cnt#1
@@ -628,7 +628,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*) 1024
+(const byte*) SCREEN[(number) $100] = (byte*) 1024
(byte) cnt
(byte) cnt#11 reg byte a 4.0
(byte) cnt#12 cnt zp[1]:2 0.6666666666666666
diff --git a/src/test/ref/modglobal.sym b/src/test/ref/modglobal.sym
index 31000647b..adee46800 100644
--- a/src/test/ref/modglobal.sym
+++ b/src/test/ref/modglobal.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*) 1024
+(const byte*) SCREEN[(number) $100] = (byte*) 1024
(byte) cnt
(byte) cnt#11 reg byte a 4.0
(byte) cnt#12 cnt zp[1]:2 0.6666666666666666
diff --git a/src/test/ref/modglobalmin.log b/src/test/ref/modglobalmin.log
index 7f0f3512f..f2bc6cb00 100644
--- a/src/test/ref/modglobalmin.log
+++ b/src/test/ref/modglobalmin.log
@@ -54,7 +54,7 @@ SYMBOL TABLE SSA
(label) @3
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*)(number) $400
+(const byte*) SCREEN[(number) $100] = (byte*)(number) $400
(byte) cnt
(byte) cnt#0
(byte) cnt#1
@@ -392,7 +392,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*) 1024
+(const byte*) SCREEN[(number) $100] = (byte*) 1024
(byte) cnt
(byte) cnt#11 reg byte x 4.0
(byte) cnt#12 reg byte x 4.0
diff --git a/src/test/ref/modglobalmin.sym b/src/test/ref/modglobalmin.sym
index 7e7e73cc4..76b5f9cde 100644
--- a/src/test/ref/modglobalmin.sym
+++ b/src/test/ref/modglobalmin.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) SCREEN = (byte*) 1024
+(const byte*) SCREEN[(number) $100] = (byte*) 1024
(byte) cnt
(byte) cnt#11 reg byte x 4.0
(byte) cnt#12 reg byte x 4.0
diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log
index e4522115d..bb40be5f5 100644
--- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log
+++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log
@@ -634,8 +634,8 @@ SYMBOL TABLE SSA
(const byte*) IRQ_STATUS = (byte*)(number) $d019
(const void()**) KERNEL_IRQ = (void()**)(number) $314
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(byte*) PLEX_SCREEN_PTR#0
(byte*) PLEX_SCREEN_PTR#1
@@ -673,9 +673,9 @@ SYMBOL TABLE SSA
(byte*) PLEX_SCREEN_PTR#7
(byte*) PLEX_SCREEN_PTR#8
(byte*) PLEX_SCREEN_PTR#9
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*)(number) $d012
(const byte) RED = (number) 2
(const byte*) SCREEN = (byte*)(number) $400
@@ -690,7 +690,7 @@ SYMBOL TABLE SSA
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
-(const byte*) YSIN = kickasm {{ .var min = 50
+(const byte*) YSIN[(number) $100] = kickasm {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
@@ -4095,13 +4095,13 @@ FINAL SYMBOL TABLE
(const byte*) IRQ_STATUS = (byte*) 53273
(const void()**) KERNEL_IRQ = (void()**) 788
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(const byte*) PLEX_SCREEN_PTR#0 PLEX_SCREEN_PTR = (byte*)(number) $400+(number) $3f8
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*) 53266
(const byte) RED = (number) 2
(const byte*) SPRITE = (byte*) 8192
@@ -4114,7 +4114,7 @@ FINAL SYMBOL TABLE
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
-(const byte*) YSIN = kickasm {{ .var min = 50
+(const byte*) YSIN[(number) $100] = kickasm {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym
index b51c4fc9f..3af052b08 100644
--- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym
+++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.sym
@@ -15,13 +15,13 @@
(const byte*) IRQ_STATUS = (byte*) 53273
(const void()**) KERNEL_IRQ = (void()**) 788
(const byte) PLEX_COUNT = (number) $20
-(const byte*) PLEX_FREE_YPOS = { fill( 8, 0) }
-(const byte*) PLEX_PTR = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_FREE_YPOS[(number) 8] = { fill( 8, 0) }
+(const byte*) PLEX_PTR[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(byte*) PLEX_SCREEN_PTR
(const byte*) PLEX_SCREEN_PTR#0 PLEX_SCREEN_PTR = (byte*)(number) $400+(number) $3f8
-(const byte*) PLEX_SORTED_IDX = { fill( PLEX_COUNT, 0) }
-(const word*) PLEX_XPOS = { fill( PLEX_COUNT, 0) }
-(const byte*) PLEX_YPOS = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_SORTED_IDX[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const word*) PLEX_XPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
+(const byte*) PLEX_YPOS[(const byte) PLEX_COUNT] = { fill( PLEX_COUNT, 0) }
(const byte*) RASTER = (byte*) 53266
(const byte) RED = (number) 2
(const byte*) SPRITE = (byte*) 8192
@@ -34,7 +34,7 @@
(const byte) VIC_DEN = (number) $10
(const byte) VIC_RSEL = (number) 8
(const byte) WHITE = (number) 1
-(const byte*) YSIN = kickasm {{ .var min = 50
+(const byte*) YSIN[(number) $100] = kickasm {{ .var min = 50
.var max = 250-21
.var ampl = max-min;
.for(var i=0;i<256;i++)
diff --git a/src/test/ref/nes-array.log b/src/test/ref/nes-array.log
index 055b365a8..7a38c3c91 100644
--- a/src/test/ref/nes-array.log
+++ b/src/test/ref/nes-array.log
@@ -106,7 +106,7 @@ SYMBOL TABLE SSA
(signed word) main::y2
(signed word) main::y2#0
(signed word) main::y2#1
-(const signed word*) wow = { (signed word)(number) $cafe, (signed word)(number) $babe, (signed word)(number) $1234, (signed word)(number) $5678 }
+(const signed word*) wow[(number) 4] = { (signed word)(number) $cafe, (signed word)(number) $babe, (signed word)(number) $1234, (signed word)(number) $5678 }
Adding number conversion cast (snumber) $1234 in (signed word) main::y1#0 ← (number) $1234
Adding number conversion cast (snumber) $1234 in (signed word) main::y2#0 ← (number) $1234
@@ -631,7 +631,7 @@ FINAL SYMBOL TABLE
(signed word) main::y1#0 y1 zp[2]:4 20.0
(signed word) main::y2
(signed word) main::y2#0 y2 zp[2]:6 20.0
-(const signed word*) wow = { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 }
+(const signed word*) wow[(number) 4] = { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 }
reg byte x [ foo::x#2 ]
zp[2]:2 [ foo::y#2 foo::return#0 foo::return#2 main::$0 foo::return#3 main::$1 ]
diff --git a/src/test/ref/nes-array.sym b/src/test/ref/nes-array.sym
index 3737375e6..09bacaa5e 100644
--- a/src/test/ref/nes-array.sym
+++ b/src/test/ref/nes-array.sym
@@ -25,7 +25,7 @@
(signed word) main::y1#0 y1 zp[2]:4 20.0
(signed word) main::y2
(signed word) main::y2#0 y2 zp[2]:6 20.0
-(const signed word*) wow = { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 }
+(const signed word*) wow[(number) 4] = { (signed word) $cafe, (signed word) $babe, (signed word) $1234, (signed word) $5678 }
reg byte x [ foo::x#2 ]
zp[2]:2 [ foo::y#2 foo::return#0 foo::return#2 main::$0 foo::return#3 main::$1 ]
diff --git a/src/test/ref/norom-charset.log b/src/test/ref/norom-charset.log
index a59e19400..1dccaef94 100644
--- a/src/test/ref/norom-charset.log
+++ b/src/test/ref/norom-charset.log
@@ -129,7 +129,7 @@ SYMBOL TABLE SSA
(const byte*) SCREEN = (byte*)(number) $400
(const byte) SIZEOF_WORD = (byte) 2
(const byte*) VIC_MEMORY = (byte*)(number) $d018
-(const word*) charset_spec_row = { (word)(number) $f7da, (word)(number) $f7de, (word)(number) $f24e, (word)(number) $d6de }
+(const word*) charset_spec_row[] = { (word)(number) $f7da, (word)(number) $f7de, (word)(number) $f24e, (word)(number) $d6de }
(void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec)
(byte~) gen_char3::$0
(number~) gen_char3::$1
@@ -1046,7 +1046,7 @@ FINAL SYMBOL TABLE
(const byte*) CHARSET = (byte*) 12288
(const byte*) SCREEN = (byte*) 1024
(const byte*) VIC_MEMORY = (byte*) 53272
-(const word*) charset_spec_row = { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de }
+(const word*) charset_spec_row[] = { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de }
(void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec)
(byte~) gen_char3::$0 reg byte a 2002.0
(byte~) gen_char3::$1 reg byte a 2002.0
diff --git a/src/test/ref/norom-charset.sym b/src/test/ref/norom-charset.sym
index 5dade7cd4..af458f4b5 100644
--- a/src/test/ref/norom-charset.sym
+++ b/src/test/ref/norom-charset.sym
@@ -4,7 +4,7 @@
(const byte*) CHARSET = (byte*) 12288
(const byte*) SCREEN = (byte*) 1024
(const byte*) VIC_MEMORY = (byte*) 53272
-(const word*) charset_spec_row = { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de }
+(const word*) charset_spec_row[] = { (word) $f7da, (word) $f7de, (word) $f24e, (word) $d6de }
(void()) gen_char3((byte*) gen_char3::dst , (word) gen_char3::spec)
(byte~) gen_char3::$0 reg byte a 2002.0
(byte~) gen_char3::$1 reg byte a 2002.0
diff --git a/src/test/ref/optimize-unsigned-comparisons.log b/src/test/ref/optimize-unsigned-comparisons.log
index 80ab9b317..085ba5a0e 100644
--- a/src/test/ref/optimize-unsigned-comparisons.log
+++ b/src/test/ref/optimize-unsigned-comparisons.log
@@ -51,7 +51,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) ball_active = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1 }
+(const byte*) ball_active[(number) 8] = { (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 0, (byte)(number) 1, (byte)(number) 1, (byte)(number) 1 }
(void()) main()
(bool~) main::$0
(bool~) main::$1
diff --git a/src/test/ref/plasma-center.log b/src/test/ref/plasma-center.log
index f677af6a9..0b668403c 100644
--- a/src/test/ref/plasma-center.log
+++ b/src/test/ref/plasma-center.log
@@ -1528,7 +1528,7 @@ SYMBOL TABLE SSA
(const byte) BLACK = (number) 0
(const byte*) CHARSET = (byte*)(number) $2000
(const byte*) COLS = (byte*)(number) $d800
-(const word*) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#10)
@@ -4788,7 +4788,7 @@ FINAL SYMBOL TABLE
(label) main::@7
(label) main::@8
(label) main::@9
-(const string) main::str = (string) "ddr port ddr2 $00 $01 $a000 $d000 $e000"
+(const string) main::str[] = (string) "ddr port ddr2 $00 $01 $a000 $d000 $e000"
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -4836,7 +4836,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#66 print_char_cursor zp[2]:4 0.8695652173913042
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:8 0.4111111111111111
(byte*) print_line_cursor#34 print_line_cursor zp[2]:8 24.0
@@ -4877,10 +4877,10 @@ FINAL SYMBOL TABLE
(byte) testProcport::ddr2#23 ddr2 zp[1]:3 0.25
(byte) testProcport::port
(byte) testProcport::port#23 port zp[1]:2 0.3333333333333333
-(const string) testProcport::str = (string) " "
-(const string) testProcport::str1 = (string) " "
-(const string) testProcport::str3 = (string) " "
-(const string) testProcport::str5 = (string) " "
+(const string) testProcport::str[] = (string) " "
+(const string) testProcport::str1[] = (string) " "
+(const string) testProcport::str3[] = (string) " "
+(const string) testProcport::str5[] = (string) " "
reg byte x [ testProcport::ddr#23 ]
zp[1]:2 [ testProcport::port#23 ]
diff --git a/src/test/ref/processor-port-test.sym b/src/test/ref/processor-port-test.sym
index c2146de84..91e0ed2c1 100644
--- a/src/test/ref/processor-port-test.sym
+++ b/src/test/ref/processor-port-test.sym
@@ -45,7 +45,7 @@
(label) main::@7
(label) main::@8
(label) main::@9
-(const string) main::str = (string) "ddr port ddr2 $00 $01 $a000 $d000 $e000"
+(const string) main::str[] = (string) "ddr port ddr2 $00 $01 $a000 $d000 $e000"
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -93,7 +93,7 @@
(byte*) print_char_cursor#66 print_char_cursor zp[2]:4 0.8695652173913042
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:8 0.4111111111111111
(byte*) print_line_cursor#34 print_line_cursor zp[2]:8 24.0
@@ -134,10 +134,10 @@
(byte) testProcport::ddr2#23 ddr2 zp[1]:3 0.25
(byte) testProcport::port
(byte) testProcport::port#23 port zp[1]:2 0.3333333333333333
-(const string) testProcport::str = (string) " "
-(const string) testProcport::str1 = (string) " "
-(const string) testProcport::str3 = (string) " "
-(const string) testProcport::str5 = (string) " "
+(const string) testProcport::str[] = (string) " "
+(const string) testProcport::str1[] = (string) " "
+(const string) testProcport::str3[] = (string) " "
+(const string) testProcport::str5[] = (string) " "
reg byte x [ testProcport::ddr#23 ]
zp[1]:2 [ testProcport::port#23 ]
diff --git a/src/test/ref/ptrtest.log b/src/test/ref/ptrtest.log
index 17907ddd7..ed88278e4 100644
--- a/src/test/ref/ptrtest.log
+++ b/src/test/ref/ptrtest.log
@@ -154,7 +154,7 @@ SYMBOL TABLE SSA
(label) lvalue::@1
(label) lvalue::@2
(label) lvalue::@return
-(const byte*) lvalue::SCREEN = (byte*)(number) $400
+(const byte*) lvalue::SCREEN[(number) $400] = (byte*)(number) $400
(byte) lvalue::i
(byte) lvalue::i#0
(byte) lvalue::i#1
@@ -188,7 +188,7 @@ SYMBOL TABLE SSA
(label) rvalue::@2
(label) rvalue::@3
(label) rvalue::@return
-(const byte*) rvalue::SCREEN = (byte*)(number) $400
+(const byte*) rvalue::SCREEN[(number) $400] = (byte*)(number) $400
(byte) rvalue::b
(byte) rvalue::b#0
(byte) rvalue::b#1
@@ -1135,7 +1135,7 @@ FINAL SYMBOL TABLE
(label) lvalue::@1
(label) lvalue::@2
(label) lvalue::@return
-(const byte*) lvalue::SCREEN = (byte*) 1024
+(const byte*) lvalue::SCREEN[(number) $400] = (byte*) 1024
(byte) lvalue::i
(byte) lvalue::i#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666
@@ -1160,7 +1160,7 @@ FINAL SYMBOL TABLE
(label) rvalue::@2
(label) rvalue::@3
(label) rvalue::@return
-(const byte*) rvalue::SCREEN = (byte*) 1024
+(const byte*) rvalue::SCREEN[(number) $400] = (byte*) 1024
(byte) rvalue::b
(byte) rvalue::b#1 reg byte a 4.0
(byte) rvalue::b#2 reg byte a 11.0
diff --git a/src/test/ref/ptrtest.sym b/src/test/ref/ptrtest.sym
index 34310dba0..05ea75455 100644
--- a/src/test/ref/ptrtest.sym
+++ b/src/test/ref/ptrtest.sym
@@ -5,7 +5,7 @@
(label) lvalue::@1
(label) lvalue::@2
(label) lvalue::@return
-(const byte*) lvalue::SCREEN = (byte*) 1024
+(const byte*) lvalue::SCREEN[(number) $400] = (byte*) 1024
(byte) lvalue::i
(byte) lvalue::i#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666
@@ -30,7 +30,7 @@
(label) rvalue::@2
(label) rvalue::@3
(label) rvalue::@return
-(const byte*) rvalue::SCREEN = (byte*) 1024
+(const byte*) rvalue::SCREEN[(number) $400] = (byte*) 1024
(byte) rvalue::b
(byte) rvalue::b#1 reg byte a 4.0
(byte) rvalue::b#2 reg byte a 11.0
diff --git a/src/test/ref/ptrtestmin.log b/src/test/ref/ptrtestmin.log
index 85f4baf97..58384eaee 100644
--- a/src/test/ref/ptrtestmin.log
+++ b/src/test/ref/ptrtestmin.log
@@ -47,7 +47,7 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) main::SCREEN = (byte*)(number) $400
+(const byte*) main::SCREEN[(number) $400] = (byte*)(number) $400
(byte) main::b
(byte) main::b#0
(byte) main::b#1
@@ -345,7 +345,7 @@ FINAL SYMBOL TABLE
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) main::SCREEN = (byte*) 1024
+(const byte*) main::SCREEN[(number) $400] = (byte*) 1024
(byte) main::b
(byte) main::b#1 reg byte a 11.0
(byte) main::b#2 reg byte a 6.5
diff --git a/src/test/ref/ptrtestmin.sym b/src/test/ref/ptrtestmin.sym
index 92d37b9ff..9f3733d92 100644
--- a/src/test/ref/ptrtestmin.sym
+++ b/src/test/ref/ptrtestmin.sym
@@ -6,7 +6,7 @@
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) main::SCREEN = (byte*) 1024
+(const byte*) main::SCREEN[(number) $400] = (byte*) 1024
(byte) main::b
(byte) main::b#1 reg byte a 11.0
(byte) main::b#2 reg byte a 6.5
diff --git a/src/test/ref/sandbox.log b/src/test/ref/sandbox.log
index fdfa7e881..a4a08b3d3 100644
--- a/src/test/ref/sandbox.log
+++ b/src/test/ref/sandbox.log
@@ -1500,8 +1500,8 @@ SYMBOL TABLE SSA
(signed word) main::return#1
(signed word) main::return#2
(signed word) main::return#3
-(const string) main::str = (string) "200 DIV16U: %5d,%4d IN %04d FRAMESm"
-(const string) main::str1 = (string) "200 DIV10 : %5d,%4d IN %04d FRAMESm"
+(const string) main::str[] = (string) "200 DIV16U: %5d,%4d IN %04d FRAMESm"
+(const string) main::str1[] = (string) "200 DIV10 : %5d,%4d IN %04d FRAMESm"
(word) main::u
(word) main::u#0
(word) main::u#1
@@ -1966,7 +1966,7 @@ SYMBOL TABLE SSA
(byte) myprintf::bTrailing#7
(byte) myprintf::bTrailing#8
(byte) myprintf::bTrailing#9
-(const byte*) myprintf::buf6 = { fill( 6, 0) }
+(const byte*) myprintf::buf6[(number) 6] = { fill( 6, 0) }
(byte) myprintf::digit
(byte) myprintf::digit#0
(byte) myprintf::digit#1
@@ -2283,7 +2283,7 @@ SYMBOL TABLE SSA
(word) myprintf::w3#7
(word) myprintf::w3#8
(word) myprintf::w3#9
-(const byte*) strTemp = { fill( $64, 0) }
+(const byte*) strTemp[(number) $64] = { fill( $64, 0) }
(void()) utoa((word) utoa::value , (byte*) utoa::dst)
(bool~) utoa::$0
(bool~) utoa::$1
@@ -8225,8 +8225,8 @@ FINAL SYMBOL TABLE
(label) main::@9
(label) main::@return
(signed word) main::return
-(const string) main::str = (string) "200 DIV16U: %5d,%4d IN %04d FRAMESm"
-(const string) main::str1 = (string) "200 DIV10 : %5d,%4d IN %04d FRAMESm"
+(const string) main::str[] = (string) "200 DIV16U: %5d,%4d IN %04d FRAMESm"
+(const string) main::str1[] = (string) "200 DIV10 : %5d,%4d IN %04d FRAMESm"
(word) main::u
(word) main::u#15 u zp[2]:2 6.380952380952381
(word) main::u#17 u zp[2]:2 6.380952380952381
@@ -8343,7 +8343,7 @@ FINAL SYMBOL TABLE
(byte) myprintf::bTrailing
(byte) myprintf::bTrailing#11 bTrailing zp[1]:10 10.246376811594203
(byte) myprintf::bTrailing#24 bTrailing zp[1]:10 252.5
-(const byte*) myprintf::buf6 = { fill( 6, 0) }
+(const byte*) myprintf::buf6[(number) 6] = { fill( 6, 0) }
(byte) myprintf::digit
(byte) myprintf::digit#2 reg byte x 2002.0
(byte) myprintf::digit#3 reg byte x 1001.0
@@ -8372,7 +8372,7 @@ FINAL SYMBOL TABLE
(word) myprintf::w3#0 w3 zp[2]:23 7.333333333333333
(word) myprintf::w3#1 w3 zp[2]:23 7.333333333333333
(word) myprintf::w3#8 w3 zp[2]:23 1.5569620253164556
-(const byte*) strTemp = { fill( $64, 0) }
+(const byte*) strTemp[(number) $64] = { fill( $64, 0) }
(void()) utoa((word) utoa::value , (byte*) utoa::dst)
(byte~) utoa::$16 reg byte a 4.0
(byte~) utoa::$17 reg byte a 4.0
diff --git a/src/test/ref/sandbox.sym b/src/test/ref/sandbox.sym
index ab0f797bf..1bd0c045b 100644
--- a/src/test/ref/sandbox.sym
+++ b/src/test/ref/sandbox.sym
@@ -112,8 +112,8 @@
(label) main::@9
(label) main::@return
(signed word) main::return
-(const string) main::str = (string) "200 DIV16U: %5d,%4d IN %04d FRAMESm"
-(const string) main::str1 = (string) "200 DIV10 : %5d,%4d IN %04d FRAMESm"
+(const string) main::str[] = (string) "200 DIV16U: %5d,%4d IN %04d FRAMESm"
+(const string) main::str1[] = (string) "200 DIV10 : %5d,%4d IN %04d FRAMESm"
(word) main::u
(word) main::u#15 u zp[2]:2 6.380952380952381
(word) main::u#17 u zp[2]:2 6.380952380952381
@@ -230,7 +230,7 @@
(byte) myprintf::bTrailing
(byte) myprintf::bTrailing#11 bTrailing zp[1]:10 10.246376811594203
(byte) myprintf::bTrailing#24 bTrailing zp[1]:10 252.5
-(const byte*) myprintf::buf6 = { fill( 6, 0) }
+(const byte*) myprintf::buf6[(number) 6] = { fill( 6, 0) }
(byte) myprintf::digit
(byte) myprintf::digit#2 reg byte x 2002.0
(byte) myprintf::digit#3 reg byte x 1001.0
@@ -259,7 +259,7 @@
(word) myprintf::w3#0 w3 zp[2]:23 7.333333333333333
(word) myprintf::w3#1 w3 zp[2]:23 7.333333333333333
(word) myprintf::w3#8 w3 zp[2]:23 1.5569620253164556
-(const byte*) strTemp = { fill( $64, 0) }
+(const byte*) strTemp[(number) $64] = { fill( $64, 0) }
(void()) utoa((word) utoa::value , (byte*) utoa::dst)
(byte~) utoa::$16 reg byte a 4.0
(byte~) utoa::$17 reg byte a 4.0
diff --git a/src/test/ref/screen-center-angle.log b/src/test/ref/screen-center-angle.log
index df441df31..693ee76c0 100644
--- a/src/test/ref/screen-center-angle.log
+++ b/src/test/ref/screen-center-angle.log
@@ -661,12 +661,12 @@ SYMBOL TABLE SSA
(const byte) CIA_TIMER_CONTROL_START = (number) 1
(const byte) CIA_TIMER_CONTROL_STOP = (number) 0
(const dword) CLOCKS_PER_INIT = (number) $12
-(const word*) CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -9477,7 +9477,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$20 reg byte a 22.0
(byte~) main::$22 reg byte a 22.0
@@ -9519,9 +9519,9 @@ FINAL SYMBOL TABLE
(byte) main::fileEntry2_idx
(const byte) main::fileEntry2_idx#0 fileEntry2_idx = (byte) 2
(byte*) main::fileEntry2_return
-(const string) main::str = (string) "** entry 1 **"
-(const string) main::str1 = (string) "- press space -"
-(const string) main::str2 = (string) "** entry 2 **"
+(const string) main::str[] = (string) "** entry 1 **"
+(const string) main::str1[] = (string) "- press space -"
+(const string) main::str2[] = (string) "** entry 2 **"
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -9643,19 +9643,19 @@ FINAL SYMBOL TABLE
(label) printEntry::entryUCross1
(byte*) printEntry::entryUCross1_entry
(word*) printEntry::entryUCross1_return
-(const string) printEntry::str = (string) "bufdisk "
-(const string) printEntry::str1 = (string) "bufedit "
-(const string) printEntry::str10 = (string) "baddrhi "
-(const string) printEntry::str11 = (string) "thi "
-(const string) printEntry::str12 = (string) "tlo "
-(const string) printEntry::str2 = (string) "tslen "
-(const string) printEntry::str3 = (string) "tsorder "
-(const string) printEntry::str4 = (string) "tlastlink "
-(const string) printEntry::str5 = (string) "slastlink "
-(const string) printEntry::str6 = (string) "bflag "
-(const string) printEntry::str7 = (string) "berror "
-(const string) printEntry::str8 = (string) "ucross "
-(const string) printEntry::str9 = (string) "baddrlo "
+(const string) printEntry::str[] = (string) "bufdisk "
+(const string) printEntry::str1[] = (string) "bufedit "
+(const string) printEntry::str10[] = (string) "baddrhi "
+(const string) printEntry::str11[] = (string) "thi "
+(const string) printEntry::str12[] = (string) "tlo "
+(const string) printEntry::str2[] = (string) "tslen "
+(const string) printEntry::str3[] = (string) "tsorder "
+(const string) printEntry::str4[] = (string) "tlastlink "
+(const string) printEntry::str5[] = (string) "slastlink "
+(const string) printEntry::str6[] = (string) "bflag "
+(const string) printEntry::str7[] = (string) "berror "
+(const string) printEntry::str8[] = (string) "ucross "
+(const string) printEntry::str9[] = (string) "baddrlo "
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 4.0
@@ -9708,7 +9708,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#82 print_char_cursor zp[2]:4 4.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:8 1.0824742268041243
(byte*) print_line_cursor#153 print_line_cursor_1 zp[2]:10 2.0
diff --git a/src/test/ref/semi-struct-2.sym b/src/test/ref/semi-struct-2.sym
index c4747b206..9b719c73a 100644
--- a/src/test/ref/semi-struct-2.sym
+++ b/src/test/ref/semi-struct-2.sym
@@ -12,7 +12,7 @@
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte) SIZEOF_ENTRY = (number) $12
-(const byte*) files = { fill( (word)MAX_FILES*SIZEOF_ENTRY, 0) }
+(const byte*) files[(word)(const byte) MAX_FILES*(const byte) SIZEOF_ENTRY] = { fill( (word)MAX_FILES*SIZEOF_ENTRY, 0) }
(void()) initEntry((byte*) initEntry::entry , (byte) initEntry::n)
(word~) initEntry::$1 zp[2]:8 2.0
(byte~) initEntry::$11 reg byte a 4.0
@@ -101,7 +101,7 @@
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -109,7 +109,7 @@
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$20 reg byte a 22.0
(byte~) main::$22 reg byte a 22.0
@@ -151,9 +151,9 @@
(byte) main::fileEntry2_idx
(const byte) main::fileEntry2_idx#0 fileEntry2_idx = (byte) 2
(byte*) main::fileEntry2_return
-(const string) main::str = (string) "** entry 1 **"
-(const string) main::str1 = (string) "- press space -"
-(const string) main::str2 = (string) "** entry 2 **"
+(const string) main::str[] = (string) "** entry 1 **"
+(const string) main::str1[] = (string) "- press space -"
+(const string) main::str2[] = (string) "** entry 2 **"
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -275,19 +275,19 @@
(label) printEntry::entryUCross1
(byte*) printEntry::entryUCross1_entry
(word*) printEntry::entryUCross1_return
-(const string) printEntry::str = (string) "bufdisk "
-(const string) printEntry::str1 = (string) "bufedit "
-(const string) printEntry::str10 = (string) "baddrhi "
-(const string) printEntry::str11 = (string) "thi "
-(const string) printEntry::str12 = (string) "tlo "
-(const string) printEntry::str2 = (string) "tslen "
-(const string) printEntry::str3 = (string) "tsorder "
-(const string) printEntry::str4 = (string) "tlastlink "
-(const string) printEntry::str5 = (string) "slastlink "
-(const string) printEntry::str6 = (string) "bflag "
-(const string) printEntry::str7 = (string) "berror "
-(const string) printEntry::str8 = (string) "ucross "
-(const string) printEntry::str9 = (string) "baddrlo "
+(const string) printEntry::str[] = (string) "bufdisk "
+(const string) printEntry::str1[] = (string) "bufedit "
+(const string) printEntry::str10[] = (string) "baddrhi "
+(const string) printEntry::str11[] = (string) "thi "
+(const string) printEntry::str12[] = (string) "tlo "
+(const string) printEntry::str2[] = (string) "tslen "
+(const string) printEntry::str3[] = (string) "tsorder "
+(const string) printEntry::str4[] = (string) "tlastlink "
+(const string) printEntry::str5[] = (string) "slastlink "
+(const string) printEntry::str6[] = (string) "bflag "
+(const string) printEntry::str7[] = (string) "berror "
+(const string) printEntry::str8[] = (string) "ucross "
+(const string) printEntry::str9[] = (string) "baddrlo "
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 4.0
@@ -340,7 +340,7 @@
(byte*) print_char_cursor#82 print_char_cursor zp[2]:4 4.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:8 1.0824742268041243
(byte*) print_line_cursor#153 print_line_cursor_1 zp[2]:10 2.0
diff --git a/src/test/ref/sieve-min.log b/src/test/ref/sieve-min.log
index 707bff2b0..1161e9453 100644
--- a/src/test/ref/sieve-min.log
+++ b/src/test/ref/sieve-min.log
@@ -515,7 +515,7 @@ SYMBOL TABLE SSA
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_screen
@@ -1980,7 +1980,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 2.0
(byte*) print_char_cursor#27 print_char_cursor zp[2]:8 4.0
(byte*) print_char_cursor#33 print_char_cursor zp[2]:8 16.5
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_screen
(void()) print_word((word) print_word::w)
diff --git a/src/test/ref/sieve-min.sym b/src/test/ref/sieve-min.sym
index 5dce0a51b..b42261ab8 100644
--- a/src/test/ref/sieve-min.sym
+++ b/src/test/ref/sieve-min.sym
@@ -74,7 +74,7 @@
(byte*) print_char_cursor#26 print_char_cursor zp[2]:8 2.0
(byte*) print_char_cursor#27 print_char_cursor zp[2]:8 4.0
(byte*) print_char_cursor#33 print_char_cursor zp[2]:8 16.5
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_screen
(void()) print_word((word) print_word::w)
diff --git a/src/test/ref/sieve.log b/src/test/ref/sieve.log
index 63cff182e..90c993cf4 100644
--- a/src/test/ref/sieve.log
+++ b/src/test/ref/sieve.log
@@ -1187,7 +1187,7 @@ SYMBOL TABLE SSA
(const word) COUNT = (number) $4000
(const byte*) D018 = (byte*)(number) $d018
(const byte) DECIMAL = (number) $a
-(const byte*) DIGITS = (string) "0123456789abcdef"z
+(const byte*) DIGITS[] = (string) "0123456789abcdef"z
(const byte) FRAMES_PER_SEC = (number) $3c
(const byte) HEXADECIMAL = (number) $10
(const byte) OCTAL = (number) 8
@@ -1195,14 +1195,14 @@ SYMBOL TABLE SSA
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
-(const word*) RADIX_BINARY_VALUES = { (word)(number) $8000, (word)(number) $4000, (word)(number) $2000, (word)(number) $1000, (word)(number) $800, (word)(number) $400, (word)(number) $200, (word)(number) $100, (word)(number) $80, (word)(number) $40, (word)(number) $20, (word)(number) $10, (word)(number) 8, (word)(number) 4, (word)(number) 2 }
-(const dword*) RADIX_BINARY_VALUES_LONG = { (dword)(number) $80000000, (dword)(number) $40000000, (dword)(number) $20000000, (dword)(number) $10000000, (dword)(number) $8000000, (dword)(number) $4000000, (dword)(number) $2000000, (dword)(number) $1000000, (dword)(number) $800000, (dword)(number) $400000, (dword)(number) $200000, (dword)(number) $100000, (dword)(number) $80000, (dword)(number) $40000, (dword)(number) $20000, (dword)(number) $10000, (dword)(number) $8000, (dword)(number) $4000, (dword)(number) $2000, (dword)(number) $1000, (dword)(number) $800, (dword)(number) $400, (dword)(number) $200, (dword)(number) $100, (dword)(number) $80, (dword)(number) $40, (dword)(number) $20, (dword)(number) $10, (dword)(number) 8, (dword)(number) 4, (dword)(number) 2 }
-(const word*) RADIX_DECIMAL_VALUES = { (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a }
-(const dword*) RADIX_DECIMAL_VALUES_LONG = { (dword)(number) $3b9aca00, (dword)(number) $5f5e100, (dword)(number) $989680, (dword)(number) $f4240, (dword)(number) $186a0, (dword)(number) $2710, (dword)(number) $3e8, (dword)(number) $64, (dword)(number) $a }
-(const word*) RADIX_HEXADECIMAL_VALUES = { (word)(number) $1000, (word)(number) $100, (word)(number) $10 }
-(const dword*) RADIX_HEXADECIMAL_VALUES_LONG = { (dword)(number) $10000000, (dword)(number) $1000000, (dword)(number) $100000, (dword)(number) $10000, (dword)(number) $1000, (dword)(number) $100, (dword)(number) $10 }
-(const word*) RADIX_OCTAL_VALUES = { (word)(number) $8000, (word)(number) $1000, (word)(number) $200, (word)(number) $40, (word)(number) 8 }
-(const dword*) RADIX_OCTAL_VALUES_LONG = { (dword)(number) $40000000, (dword)(number) $8000000, (dword)(number) $1000000, (dword)(number) $200000, (dword)(number) $40000, (dword)(number) $8000, (dword)(number) $1000, (dword)(number) $200, (dword)(number) $40, (dword)(number) 8 }
+(const word*) RADIX_BINARY_VALUES[] = { (word)(number) $8000, (word)(number) $4000, (word)(number) $2000, (word)(number) $1000, (word)(number) $800, (word)(number) $400, (word)(number) $200, (word)(number) $100, (word)(number) $80, (word)(number) $40, (word)(number) $20, (word)(number) $10, (word)(number) 8, (word)(number) 4, (word)(number) 2 }
+(const dword*) RADIX_BINARY_VALUES_LONG[] = { (dword)(number) $80000000, (dword)(number) $40000000, (dword)(number) $20000000, (dword)(number) $10000000, (dword)(number) $8000000, (dword)(number) $4000000, (dword)(number) $2000000, (dword)(number) $1000000, (dword)(number) $800000, (dword)(number) $400000, (dword)(number) $200000, (dword)(number) $100000, (dword)(number) $80000, (dword)(number) $40000, (dword)(number) $20000, (dword)(number) $10000, (dword)(number) $8000, (dword)(number) $4000, (dword)(number) $2000, (dword)(number) $1000, (dword)(number) $800, (dword)(number) $400, (dword)(number) $200, (dword)(number) $100, (dword)(number) $80, (dword)(number) $40, (dword)(number) $20, (dword)(number) $10, (dword)(number) 8, (dword)(number) 4, (dword)(number) 2 }
+(const word*) RADIX_DECIMAL_VALUES[] = { (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a }
+(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword)(number) $3b9aca00, (dword)(number) $5f5e100, (dword)(number) $989680, (dword)(number) $f4240, (dword)(number) $186a0, (dword)(number) $2710, (dword)(number) $3e8, (dword)(number) $64, (dword)(number) $a }
+(const word*) RADIX_HEXADECIMAL_VALUES[] = { (word)(number) $1000, (word)(number) $100, (word)(number) $10 }
+(const dword*) RADIX_HEXADECIMAL_VALUES_LONG[] = { (dword)(number) $10000000, (dword)(number) $1000000, (dword)(number) $100000, (dword)(number) $10000, (dword)(number) $1000, (dword)(number) $100, (dword)(number) $10 }
+(const word*) RADIX_OCTAL_VALUES[] = { (word)(number) $8000, (word)(number) $1000, (word)(number) $200, (word)(number) $40, (word)(number) 8 }
+(const dword*) RADIX_OCTAL_VALUES_LONG[] = { (dword)(number) $40000000, (dword)(number) $8000000, (dword)(number) $1000000, (dword)(number) $200000, (dword)(number) $40000, (dword)(number) $8000, (dword)(number) $1000, (dword)(number) $200, (dword)(number) $40, (dword)(number) 8 }
(const byte*) SCREEN = (byte*)(number) $400
(const byte) SIZEOF_DWORD = (byte) 4
(const byte) SIZEOF_WORD = (byte) 2
@@ -1218,8 +1218,8 @@ SYMBOL TABLE SSA
(dword) clock::return#4
(void()) clock_start()
(label) clock_start::@return
-(const byte*) decimal_digits = { fill( 6, 0) }
-(const byte*) decimal_digits_long = { fill( $b, 0) }
+(const byte*) decimal_digits[(number) 6] = { fill( 6, 0) }
+(const byte*) decimal_digits_long[(number) $b] = { fill( $b, 0) }
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(word~) div32u16u::$0
(word~) div32u16u::$1
@@ -1424,11 +1424,11 @@ SYMBOL TABLE SSA
(byte*) main::sieve_i#5
(byte*) main::sieve_i#6
(byte*) main::sieve_i#7
-(const string) main::str = (string) "Sieve benchmark - calculating primes"
-(const string) main::str1 = (string) "between 2 and "
-(const string) main::str2 = (string) "100ths seconds used: "
-(const string) main::str3 = (string) " cycles: "
-(const string) main::str4 = (string) "..."
+(const string) main::str[] = (string) "Sieve benchmark - calculating primes"
+(const string) main::str1[] = (string) "between 2 and "
+(const string) main::str2[] = (string) "100ths seconds used: "
+(const string) main::str3[] = (string) " cycles: "
+(const string) main::str4[] = (string) "..."
(label) main::toD0181
(word~) main::toD0181_$0
(number~) main::toD0181_$1
@@ -7580,14 +7580,14 @@ FINAL SYMBOL TABLE
(const dword) CLOCKS_PER_SEC = (const word) CLOCKS_PER_FRAME*(const byte) FRAMES_PER_SEC
(const word) COUNT = (number) $4000
(const byte*) D018 = (byte*) 53272
-(const byte*) DIGITS = (string) "0123456789abcdef"z
+(const byte*) DIGITS[] = (string) "0123456789abcdef"z
(const byte) FRAMES_PER_SEC = (number) $3c
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
-(const word*) RADIX_DECIMAL_VALUES = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
-(const dword*) RADIX_DECIMAL_VALUES_LONG = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
+(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
+(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
(const byte*) SCREEN = (byte*) 1024
(const byte) SQRT_COUNT = (number) $80
(dword()) clock()
@@ -7597,8 +7597,8 @@ FINAL SYMBOL TABLE
(dword) clock::return#2 return zp[4]:9 4.0
(void()) clock_start()
(label) clock_start::@return
-(const byte*) decimal_digits = { fill( 6, 0) }
-(const byte*) decimal_digits_long = { fill( $b, 0) }
+(const byte*) decimal_digits[(number) 6] = { fill( 6, 0) }
+(const byte*) decimal_digits_long[(number) $b] = { fill( $b, 0) }
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
(label) div32u16u::@2
@@ -7704,11 +7704,11 @@ FINAL SYMBOL TABLE
(byte*) main::sieve_i
(byte*) main::sieve_i#1 sieve_i zp[2]:15 22.0
(byte*) main::sieve_i#2 sieve_i zp[2]:15 3.0
-(const string) main::str = (string) "Sieve benchmark - calculating primes"
-(const string) main::str1 = (string) "between 2 and "
-(const string) main::str2 = (string) "100ths seconds used: "
-(const string) main::str3 = (string) " cycles: "
-(const string) main::str4 = (string) "..."
+(const string) main::str[] = (string) "Sieve benchmark - calculating primes"
+(const string) main::str1[] = (string) "between 2 and "
+(const string) main::str2[] = (string) "100ths seconds used: "
+(const string) main::str3[] = (string) " cycles: "
+(const string) main::str4[] = (string) "..."
(label) main::toD0181
(byte*) main::toD0181_gfx
(const byte*) main::toD0181_gfx#0 toD0181_gfx = (byte*) 6144
diff --git a/src/test/ref/sieve.sym b/src/test/ref/sieve.sym
index 6afd0af2c..caa5c32fe 100644
--- a/src/test/ref/sieve.sym
+++ b/src/test/ref/sieve.sym
@@ -11,14 +11,14 @@
(const dword) CLOCKS_PER_SEC = (const word) CLOCKS_PER_FRAME*(const byte) FRAMES_PER_SEC
(const word) COUNT = (number) $4000
(const byte*) D018 = (byte*) 53272
-(const byte*) DIGITS = (string) "0123456789abcdef"z
+(const byte*) DIGITS[] = (string) "0123456789abcdef"z
(const byte) FRAMES_PER_SEC = (number) $3c
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
-(const word*) RADIX_DECIMAL_VALUES = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
-(const dword*) RADIX_DECIMAL_VALUES_LONG = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
+(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
+(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
(const byte*) SCREEN = (byte*) 1024
(const byte) SQRT_COUNT = (number) $80
(dword()) clock()
@@ -28,8 +28,8 @@
(dword) clock::return#2 return zp[4]:9 4.0
(void()) clock_start()
(label) clock_start::@return
-(const byte*) decimal_digits = { fill( 6, 0) }
-(const byte*) decimal_digits_long = { fill( $b, 0) }
+(const byte*) decimal_digits[(number) 6] = { fill( 6, 0) }
+(const byte*) decimal_digits_long[(number) $b] = { fill( $b, 0) }
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@1
(label) div32u16u::@2
@@ -135,11 +135,11 @@
(byte*) main::sieve_i
(byte*) main::sieve_i#1 sieve_i zp[2]:15 22.0
(byte*) main::sieve_i#2 sieve_i zp[2]:15 3.0
-(const string) main::str = (string) "Sieve benchmark - calculating primes"
-(const string) main::str1 = (string) "between 2 and "
-(const string) main::str2 = (string) "100ths seconds used: "
-(const string) main::str3 = (string) " cycles: "
-(const string) main::str4 = (string) "..."
+(const string) main::str[] = (string) "Sieve benchmark - calculating primes"
+(const string) main::str1[] = (string) "between 2 and "
+(const string) main::str2[] = (string) "100ths seconds used: "
+(const string) main::str3[] = (string) " cycles: "
+(const string) main::str4[] = (string) "..."
(label) main::toD0181
(byte*) main::toD0181_gfx
(const byte*) main::toD0181_gfx#0 toD0181_gfx = (byte*) 6144
diff --git a/src/test/ref/signed-indexed-subtract.log b/src/test/ref/signed-indexed-subtract.log
index 7762e7b0d..cfbf5ac76 100644
--- a/src/test/ref/signed-indexed-subtract.log
+++ b/src/test/ref/signed-indexed-subtract.log
@@ -543,7 +543,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -632,7 +632,7 @@ SYMBOL TABLE SSA
(byte) sub::s#1
(byte) sub::s#2
(byte) sub::s#3
-(const signed word*) words = { (signed word)(number) -$6000, (signed word)(number) -$600, (signed word)(number) -$60, (signed word)(number) -6, (signed word)(number) 0, (signed word)(number) 6, (signed word)(number) $60, (signed word)(number) $600, (signed word)(number) $6000 }
+(const signed word*) words[] = { (signed word)(number) -$6000, (signed word)(number) -$600, (signed word)(number) -$60, (signed word)(number) -6, (signed word)(number) 0, (signed word)(number) 6, (signed word)(number) $60, (signed word)(number) $600, (signed word)(number) $6000 }
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#9 + (number) $28
@@ -2326,7 +2326,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#61 print_char_cursor zp[2]:4 22.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:7 46.42857142857143
(byte*) print_line_cursor#19 print_line_cursor zp[2]:7 2.1666666666666665
@@ -2360,7 +2360,7 @@ FINAL SYMBOL TABLE
(byte) sub::idx#3 reg byte a 35.0
(byte) sub::s
(byte) sub::s#3 reg byte x 1.0
-(const signed word*) words = { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 }
+(const signed word*) words[] = { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 }
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ]
diff --git a/src/test/ref/signed-indexed-subtract.sym b/src/test/ref/signed-indexed-subtract.sym
index d5d7fe70c..a92b4a4c4 100644
--- a/src/test/ref/signed-indexed-subtract.sym
+++ b/src/test/ref/signed-indexed-subtract.sym
@@ -61,7 +61,7 @@
(byte*) print_char_cursor#61 print_char_cursor zp[2]:4 22.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:7 46.42857142857143
(byte*) print_line_cursor#19 print_line_cursor zp[2]:7 2.1666666666666665
@@ -95,7 +95,7 @@
(byte) sub::idx#3 reg byte a 35.0
(byte) sub::s
(byte) sub::s#3 reg byte x 1.0
-(const signed word*) words = { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 }
+(const signed word*) words[] = { (signed word) -$6000, (signed word) -$600, (signed word) -$60, (signed word) -6, (signed word) 0, (signed word) 6, (signed word) $60, (signed word) $600, (signed word) $6000 }
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ]
diff --git a/src/test/ref/sinus-basic.log b/src/test/ref/sinus-basic.log
index 5ae912c07..c64864874 100644
--- a/src/test/ref/sinus-basic.log
+++ b/src/test/ref/sinus-basic.log
@@ -515,9 +515,9 @@ SYMBOL TABLE SSA
(label) main::@8
(label) main::@9
(label) main::@return
-(const byte*) main::f_127 = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) main::f_127[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(const byte*) main::f_2pi = (byte*)(number) $e2e5
-(const byte*) main::f_i = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
+(const byte*) main::f_i[] = { (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0, (byte)(number) 0 }
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@@ -614,7 +614,7 @@ SYMBOL TABLE SSA
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -2746,9 +2746,9 @@ FINAL SYMBOL TABLE
(label) main::@8
(label) main::@9
(label) main::@return
-(const byte*) main::f_127 = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) main::f_127[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte*) main::f_2pi = (byte*) 58085
-(const byte*) main::f_i = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) main::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte) main::i
(byte) main::i#1 i zp[1]:2 11.0
(byte) main::i#10 i zp[1]:2 0.9166666666666666
@@ -2784,7 +2784,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#31 print_char_cursor zp[2]:5 2.0
(byte*) print_char_cursor#32 print_char_cursor zp[2]:5 0.5909090909090909
(byte*) print_char_cursor#51 print_char_cursor zp[2]:5 22.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 46.42857142857143
(byte*) print_line_cursor#13 print_line_cursor zp[2]:3 0.5416666666666666
diff --git a/src/test/ref/sinus-basic.sym b/src/test/ref/sinus-basic.sym
index 60210f78f..f199402da 100644
--- a/src/test/ref/sinus-basic.sym
+++ b/src/test/ref/sinus-basic.sym
@@ -44,9 +44,9 @@
(label) main::@8
(label) main::@9
(label) main::@return
-(const byte*) main::f_127 = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) main::f_127[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte*) main::f_2pi = (byte*) 58085
-(const byte*) main::f_i = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
+(const byte*) main::f_i[] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte) main::i
(byte) main::i#1 i zp[1]:2 11.0
(byte) main::i#10 i zp[1]:2 0.9166666666666666
@@ -82,7 +82,7 @@
(byte*) print_char_cursor#31 print_char_cursor zp[2]:5 2.0
(byte*) print_char_cursor#32 print_char_cursor zp[2]:5 0.5909090909090909
(byte*) print_char_cursor#51 print_char_cursor zp[2]:5 22.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:3 46.42857142857143
(byte*) print_line_cursor#13 print_line_cursor zp[2]:3 0.5416666666666666
diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log
index 6c525af3a..9c4dc6a31 100644
--- a/src/test/ref/sinusgen16.log
+++ b/src/test/ref/sinusgen16.log
@@ -948,7 +948,7 @@ SYMBOL TABLE SSA
(label) main::@7
(label) main::@9
(label) main::@return
-(const signed word*) main::sintab1 = { fill( $78, 0) }
+(const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) }
(signed word*) main::st1
(signed word*) main::st1#0
(signed word*) main::st1#1
@@ -959,8 +959,8 @@ SYMBOL TABLE SSA
(signed word*) main::st1#6
(signed word*) main::st1#7
(signed word*) main::st1#8
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0
(signed word) main::sw#1
@@ -1179,7 +1179,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -5801,12 +5801,12 @@ FINAL SYMBOL TABLE
(label) main::@6
(label) main::@7
(label) main::@return
-(const signed word*) main::sintab1 = { fill( $78, 0) }
+(const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) }
(signed word*) main::st1
(signed word*) main::st1#1 st1 zp[2]:16 22.0
(signed word*) main::st1#2 st1 zp[2]:16 4.0
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp[2]:8 6.6000000000000005
(const word) main::wavelength = (word) $78
@@ -5900,7 +5900,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#55 print_char_cursor zp[2]:10 24.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(byte*) print_screen
diff --git a/src/test/ref/sinusgen16.sym b/src/test/ref/sinusgen16.sym
index 20be57a35..71ea51cf6 100644
--- a/src/test/ref/sinusgen16.sym
+++ b/src/test/ref/sinusgen16.sym
@@ -67,12 +67,12 @@
(label) main::@6
(label) main::@7
(label) main::@return
-(const signed word*) main::sintab1 = { fill( $78, 0) }
+(const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) }
(signed word*) main::st1
(signed word*) main::st1#1 st1 zp[2]:16 22.0
(signed word*) main::st1#2 st1 zp[2]:16 4.0
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp[2]:8 6.6000000000000005
(const word) main::wavelength = (word) $78
@@ -166,7 +166,7 @@
(byte*) print_char_cursor#55 print_char_cursor zp[2]:10 24.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(byte*) print_screen
diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log
index 8edfe190d..09341b258 100644
--- a/src/test/ref/sinusgen16b.log
+++ b/src/test/ref/sinusgen16b.log
@@ -1172,8 +1172,8 @@ SYMBOL TABLE SSA
(byte) main::i#5
(byte) main::i#6
(byte) main::i#7
-(const signed word*) main::sintab1 = { fill( $78, 0) }
-(const signed word*) main::sintab2 = { fill( $78, 0) }
+(const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) }
+(const signed word*) main::sintab2[(number) $78] = { fill( $78, 0) }
(signed word*) main::st1
(signed word*) main::st1#0
(signed word*) main::st1#1
@@ -1192,8 +1192,8 @@ SYMBOL TABLE SSA
(signed word*) main::st2#5
(signed word*) main::st2#6
(signed word*) main::st2#7
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0
(signed word) main::sw#1
@@ -1437,7 +1437,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -7756,16 +7756,16 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 1.8333333333333333
-(const signed word*) main::sintab1 = { fill( $78, 0) }
-(const signed word*) main::sintab2 = { fill( $78, 0) }
+(const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) }
+(const signed word*) main::sintab2[(number) $78] = { fill( $78, 0) }
(signed word*) main::st1
(signed word*) main::st1#1 st1 zp[2]:3 5.5
(signed word*) main::st1#2 st1 zp[2]:3 3.3000000000000003
(signed word*) main::st2
(signed word*) main::st2#1 st2 zp[2]:11 7.333333333333333
(signed word*) main::st2#2 st2 zp[2]:11 3.0
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp[2]:25 6.6000000000000005
(const word) main::wavelength = (word) $78
@@ -7873,7 +7873,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#54 print_char_cursor zp[2]:31 24.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(byte*) print_screen
diff --git a/src/test/ref/sinusgen16b.sym b/src/test/ref/sinusgen16b.sym
index 0605513dd..067a505f3 100644
--- a/src/test/ref/sinusgen16b.sym
+++ b/src/test/ref/sinusgen16b.sym
@@ -73,16 +73,16 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 1.8333333333333333
-(const signed word*) main::sintab1 = { fill( $78, 0) }
-(const signed word*) main::sintab2 = { fill( $78, 0) }
+(const signed word*) main::sintab1[(number) $78] = { fill( $78, 0) }
+(const signed word*) main::sintab2[(number) $78] = { fill( $78, 0) }
(signed word*) main::st1
(signed word*) main::st1#1 st1 zp[2]:3 5.5
(signed word*) main::st1#2 st1 zp[2]:3 3.3000000000000003
(signed word*) main::st2
(signed word*) main::st2#1 st2 zp[2]:11 7.333333333333333
(signed word*) main::st2#2 st2 zp[2]:11 3.0
-(const string) main::str = (string) " "
-(const string) main::str1 = (string) " "
+(const string) main::str[] = (string) " "
+(const string) main::str1[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp[2]:25 6.6000000000000005
(const word) main::wavelength = (word) $78
@@ -190,7 +190,7 @@
(byte*) print_char_cursor#54 print_char_cursor zp[2]:31 24.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(byte*) print_screen
diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log
index 3fc407f3e..208e6cb37 100644
--- a/src/test/ref/sinusgen8.log
+++ b/src/test/ref/sinusgen8.log
@@ -826,7 +826,7 @@ SYMBOL TABLE SSA
(byte) main::i#4
(signed byte) main::sb
(signed byte) main::sb#0
-(const string) main::str = (string) " "
+(const string) main::str[] = (string) " "
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
@@ -1026,7 +1026,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -1223,8 +1223,8 @@ SYMBOL TABLE SSA
(word) sin8s_gen::x#2
(word) sin8s_gen::x#3
(word) sin8s_gen::x#4
-(const signed byte*) sintab2 = { fill( $c0, 0) }
-(const byte*) sintabref = { (byte)(number) 0, (byte)(number) 4, (byte)(number) 8, (byte)(number) $c, (byte)(number) $11, (byte)(number) $15, (byte)(number) $19, (byte)(number) $1d, (byte)(number) $21, (byte)(number) $25, (byte)(number) $29, (byte)(number) $2d, (byte)(number) $31, (byte)(number) $35, (byte)(number) $38, (byte)(number) $3c, (byte)(number) $40, (byte)(number) $43, (byte)(number) $47, (byte)(number) $4a, (byte)(number) $4e, (byte)(number) $51, (byte)(number) $54, (byte)(number) $57, (byte)(number) $5a, (byte)(number) $5d, (byte)(number) $60, (byte)(number) $63, (byte)(number) $65, (byte)(number) $68, (byte)(number) $6a, (byte)(number) $6c, (byte)(number) $6e, (byte)(number) $70, (byte)(number) $72, (byte)(number) $74, (byte)(number) $76, (byte)(number) $77, (byte)(number) $79, (byte)(number) $7a, (byte)(number) $7b, (byte)(number) $7c, (byte)(number) $7d, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $80, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7d, (byte)(number) $7c, (byte)(number) $7b, (byte)(number) $7a, (byte)(number) $79, (byte)(number) $77, (byte)(number) $76, (byte)(number) $74, (byte)(number) $72, (byte)(number) $70, (byte)(number) $6e, (byte)(number) $6c, (byte)(number) $6a, (byte)(number) $68, (byte)(number) $65, (byte)(number) $63, (byte)(number) $60, (byte)(number) $5d, (byte)(number) $5a, (byte)(number) $57, (byte)(number) $54, (byte)(number) $51, (byte)(number) $4e, (byte)(number) $4a, (byte)(number) $47, (byte)(number) $43, (byte)(number) $40, (byte)(number) $3c, (byte)(number) $38, (byte)(number) $35, (byte)(number) $31, (byte)(number) $2d, (byte)(number) $29, (byte)(number) $25, (byte)(number) $21, (byte)(number) $1d, (byte)(number) $19, (byte)(number) $15, (byte)(number) $11, (byte)(number) $c, (byte)(number) 8, (byte)(number) 4, (byte)(number) 0, (byte)(number) $fc, (byte)(number) $f8, (byte)(number) $f4, (byte)(number) $ef, (byte)(number) $eb, (byte)(number) $e7, (byte)(number) $e3, (byte)(number) $df, (byte)(number) $db, (byte)(number) $d7, (byte)(number) $d3, (byte)(number) $cf, (byte)(number) $cb, (byte)(number) $c8, (byte)(number) $c4, (byte)(number) $c0, (byte)(number) $bd, (byte)(number) $b9, (byte)(number) $b6, (byte)(number) $b2, (byte)(number) $af, (byte)(number) $ac, (byte)(number) $a9, (byte)(number) $a6, (byte)(number) $a3, (byte)(number) $a0, (byte)(number) $9d, (byte)(number) $9b, (byte)(number) $98, (byte)(number) $96, (byte)(number) $94, (byte)(number) $92, (byte)(number) $90, (byte)(number) $8e, (byte)(number) $8c, (byte)(number) $8a, (byte)(number) $89, (byte)(number) $87, (byte)(number) $86, (byte)(number) $85, (byte)(number) $84, (byte)(number) $83, (byte)(number) $82, (byte)(number) $82, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $82, (byte)(number) $82, (byte)(number) $83, (byte)(number) $84, (byte)(number) $85, (byte)(number) $86, (byte)(number) $87, (byte)(number) $89, (byte)(number) $8a, (byte)(number) $8c, (byte)(number) $8e, (byte)(number) $90, (byte)(number) $92, (byte)(number) $94, (byte)(number) $96, (byte)(number) $98, (byte)(number) $9b, (byte)(number) $9d, (byte)(number) $a0, (byte)(number) $a3, (byte)(number) $a6, (byte)(number) $a9, (byte)(number) $ac, (byte)(number) $af, (byte)(number) $b2, (byte)(number) $b6, (byte)(number) $b9, (byte)(number) $bd, (byte)(number) $c0, (byte)(number) $c4, (byte)(number) $c8, (byte)(number) $cb, (byte)(number) $cf, (byte)(number) $d3, (byte)(number) $d7, (byte)(number) $db, (byte)(number) $df, (byte)(number) $e3, (byte)(number) $e7, (byte)(number) $eb, (byte)(number) $ef, (byte)(number) $f4, (byte)(number) $f8, (byte)(number) $fc }
+(const signed byte*) sintab2[(number) $c0] = { fill( $c0, 0) }
+(const byte*) sintabref[] = { (byte)(number) 0, (byte)(number) 4, (byte)(number) 8, (byte)(number) $c, (byte)(number) $11, (byte)(number) $15, (byte)(number) $19, (byte)(number) $1d, (byte)(number) $21, (byte)(number) $25, (byte)(number) $29, (byte)(number) $2d, (byte)(number) $31, (byte)(number) $35, (byte)(number) $38, (byte)(number) $3c, (byte)(number) $40, (byte)(number) $43, (byte)(number) $47, (byte)(number) $4a, (byte)(number) $4e, (byte)(number) $51, (byte)(number) $54, (byte)(number) $57, (byte)(number) $5a, (byte)(number) $5d, (byte)(number) $60, (byte)(number) $63, (byte)(number) $65, (byte)(number) $68, (byte)(number) $6a, (byte)(number) $6c, (byte)(number) $6e, (byte)(number) $70, (byte)(number) $72, (byte)(number) $74, (byte)(number) $76, (byte)(number) $77, (byte)(number) $79, (byte)(number) $7a, (byte)(number) $7b, (byte)(number) $7c, (byte)(number) $7d, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $80, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7d, (byte)(number) $7c, (byte)(number) $7b, (byte)(number) $7a, (byte)(number) $79, (byte)(number) $77, (byte)(number) $76, (byte)(number) $74, (byte)(number) $72, (byte)(number) $70, (byte)(number) $6e, (byte)(number) $6c, (byte)(number) $6a, (byte)(number) $68, (byte)(number) $65, (byte)(number) $63, (byte)(number) $60, (byte)(number) $5d, (byte)(number) $5a, (byte)(number) $57, (byte)(number) $54, (byte)(number) $51, (byte)(number) $4e, (byte)(number) $4a, (byte)(number) $47, (byte)(number) $43, (byte)(number) $40, (byte)(number) $3c, (byte)(number) $38, (byte)(number) $35, (byte)(number) $31, (byte)(number) $2d, (byte)(number) $29, (byte)(number) $25, (byte)(number) $21, (byte)(number) $1d, (byte)(number) $19, (byte)(number) $15, (byte)(number) $11, (byte)(number) $c, (byte)(number) 8, (byte)(number) 4, (byte)(number) 0, (byte)(number) $fc, (byte)(number) $f8, (byte)(number) $f4, (byte)(number) $ef, (byte)(number) $eb, (byte)(number) $e7, (byte)(number) $e3, (byte)(number) $df, (byte)(number) $db, (byte)(number) $d7, (byte)(number) $d3, (byte)(number) $cf, (byte)(number) $cb, (byte)(number) $c8, (byte)(number) $c4, (byte)(number) $c0, (byte)(number) $bd, (byte)(number) $b9, (byte)(number) $b6, (byte)(number) $b2, (byte)(number) $af, (byte)(number) $ac, (byte)(number) $a9, (byte)(number) $a6, (byte)(number) $a3, (byte)(number) $a0, (byte)(number) $9d, (byte)(number) $9b, (byte)(number) $98, (byte)(number) $96, (byte)(number) $94, (byte)(number) $92, (byte)(number) $90, (byte)(number) $8e, (byte)(number) $8c, (byte)(number) $8a, (byte)(number) $89, (byte)(number) $87, (byte)(number) $86, (byte)(number) $85, (byte)(number) $84, (byte)(number) $83, (byte)(number) $82, (byte)(number) $82, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $82, (byte)(number) $82, (byte)(number) $83, (byte)(number) $84, (byte)(number) $85, (byte)(number) $86, (byte)(number) $87, (byte)(number) $89, (byte)(number) $8a, (byte)(number) $8c, (byte)(number) $8e, (byte)(number) $90, (byte)(number) $92, (byte)(number) $94, (byte)(number) $96, (byte)(number) $98, (byte)(number) $9b, (byte)(number) $9d, (byte)(number) $a0, (byte)(number) $a3, (byte)(number) $a6, (byte)(number) $a9, (byte)(number) $ac, (byte)(number) $af, (byte)(number) $b2, (byte)(number) $b6, (byte)(number) $b9, (byte)(number) $bd, (byte)(number) $c0, (byte)(number) $c4, (byte)(number) $c8, (byte)(number) $cb, (byte)(number) $cf, (byte)(number) $d3, (byte)(number) $d7, (byte)(number) $db, (byte)(number) $df, (byte)(number) $e3, (byte)(number) $e7, (byte)(number) $eb, (byte)(number) $ef, (byte)(number) $f4, (byte)(number) $f8, (byte)(number) $fc }
(const word) wavelength = (word) $c0
Adding number conversion cast (unumber) 0 in (word) divr16u::quotient#0 ← (number) 0
@@ -5076,7 +5076,7 @@ FINAL SYMBOL TABLE
(byte) main::i#2 reg byte x 5.5
(signed byte) main::sb
(signed byte) main::sb#0 reg byte a 22.0
-(const string) main::str = (string) " "
+(const string) main::str[] = (string) " "
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -5163,7 +5163,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#42 print_char_cursor zp[2]:2 2.5
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(void()) print_sbyte((signed byte) print_sbyte::b)
@@ -5254,8 +5254,8 @@ FINAL SYMBOL TABLE
(word) sin8s_gen::x
(word) sin8s_gen::x#1 x zp[2]:10 11.0
(word) sin8s_gen::x#2 x zp[2]:10 4.125
-(const signed byte*) sintab2 = { fill( $c0, 0) }
-(const byte*) sintabref = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
+(const signed byte*) sintab2[(number) $c0] = { fill( $c0, 0) }
+(const byte*) sintabref[] = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
(const word) wavelength = (word) $c0
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/sinusgen8.sym b/src/test/ref/sinusgen8.sym
index b8c461e40..88c7dbca0 100644
--- a/src/test/ref/sinusgen8.sym
+++ b/src/test/ref/sinusgen8.sym
@@ -57,7 +57,7 @@
(byte) main::i#2 reg byte x 5.5
(signed byte) main::sb
(signed byte) main::sb#0 reg byte a 22.0
-(const string) main::str = (string) " "
+(const string) main::str[] = (string) " "
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -144,7 +144,7 @@
(byte*) print_char_cursor#42 print_char_cursor zp[2]:2 2.5
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(void()) print_sbyte((signed byte) print_sbyte::b)
@@ -235,8 +235,8 @@
(word) sin8s_gen::x
(word) sin8s_gen::x#1 x zp[2]:10 11.0
(word) sin8s_gen::x#2 x zp[2]:10 4.125
-(const signed byte*) sintab2 = { fill( $c0, 0) }
-(const byte*) sintabref = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
+(const signed byte*) sintab2[(number) $c0] = { fill( $c0, 0) }
+(const byte*) sintabref[] = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
(const word) wavelength = (word) $c0
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/sinusgen8b.log b/src/test/ref/sinusgen8b.log
index 992387f3a..46c82cf03 100644
--- a/src/test/ref/sinusgen8b.log
+++ b/src/test/ref/sinusgen8b.log
@@ -1242,9 +1242,9 @@ SYMBOL TABLE SSA
(signed byte) main::sb#0
(signed byte) main::sd
(signed byte) main::sd#0
-(const signed byte*) main::sintabb = { fill( $c0, 0) }
-(const signed word*) main::sintabw = { fill( $c0, 0) }
-(const string) main::str = (string) " "
+(const signed byte*) main::sintabb[(number) $c0] = { fill( $c0, 0) }
+(const signed word*) main::sintabw[(number) $c0] = { fill( $c0, 0) }
+(const string) main::str[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0
(const word) main::wavelength = (word) $c0
@@ -1536,7 +1536,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -8173,9 +8173,9 @@ FINAL SYMBOL TABLE
(signed byte) main::sb#0 sb zp[1]:19 3.6666666666666665
(signed byte) main::sd
(signed byte) main::sd#0 reg byte a 22.0
-(const signed byte*) main::sintabb = { fill( $c0, 0) }
-(const signed word*) main::sintabw = { fill( $c0, 0) }
-(const string) main::str = (string) " "
+(const signed byte*) main::sintabb[(number) $c0] = { fill( $c0, 0) }
+(const signed word*) main::sintabw[(number) $c0] = { fill( $c0, 0) }
+(const string) main::str[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp[2]:20 22.0
(const word) main::wavelength = (word) $c0
@@ -8314,7 +8314,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#42 print_char_cursor zp[2]:17 1.25
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(void()) print_sbyte((signed byte) print_sbyte::b)
diff --git a/src/test/ref/sinusgen8b.sym b/src/test/ref/sinusgen8b.sym
index c1b3f2fa2..855132adb 100644
--- a/src/test/ref/sinusgen8b.sym
+++ b/src/test/ref/sinusgen8b.sym
@@ -88,9 +88,9 @@
(signed byte) main::sb#0 sb zp[1]:19 3.6666666666666665
(signed byte) main::sd
(signed byte) main::sd#0 reg byte a 22.0
-(const signed byte*) main::sintabb = { fill( $c0, 0) }
-(const signed word*) main::sintabw = { fill( $c0, 0) }
-(const string) main::str = (string) " "
+(const signed byte*) main::sintabb[(number) $c0] = { fill( $c0, 0) }
+(const signed word*) main::sintabw[(number) $c0] = { fill( $c0, 0) }
+(const string) main::str[] = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp[2]:20 22.0
(const word) main::wavelength = (word) $c0
@@ -229,7 +229,7 @@
(byte*) print_char_cursor#42 print_char_cursor zp[2]:17 1.25
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(void()) print_sbyte((signed byte) print_sbyte::b)
diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log
index ab85e234b..721b191c2 100644
--- a/src/test/ref/sinusgenscale8.log
+++ b/src/test/ref/sinusgenscale8.log
@@ -1269,7 +1269,7 @@ SYMBOL TABLE SSA
(label) main::@1
(label) main::@2
(label) main::@return
-(const byte*) main::sintab = { fill( $14, 0) }
+(const byte*) main::sintab[(number) $14] = { fill( $14, 0) }
(const word) main::tabsize = (word) $14
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
@@ -1586,7 +1586,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -2024,15 +2024,15 @@ SYMBOL TABLE SSA
(word) sin8u_table::step#7
(word) sin8u_table::step#8
(word) sin8u_table::step#9
-(const string) sin8u_table::str = (string) "step:"
-(const string) sin8u_table::str1 = (string) " min:"
-(const string) sin8u_table::str2 = (string) " max:"
-(const string) sin8u_table::str3 = (string) " ampl:"
-(const string) sin8u_table::str4 = (string) " mid:"
-(const string) sin8u_table::str5 = (string) "x: "
-(const string) sin8u_table::str6 = (string) " sin: "
-(const string) sin8u_table::str7 = (string) " scaled: "
-(const string) sin8u_table::str8 = (string) " trans: "
+(const string) sin8u_table::str[] = (string) "step:"
+(const string) sin8u_table::str1[] = (string) " min:"
+(const string) sin8u_table::str2[] = (string) " max:"
+(const string) sin8u_table::str3[] = (string) " ampl:"
+(const string) sin8u_table::str4[] = (string) " mid:"
+(const string) sin8u_table::str5[] = (string) "x: "
+(const string) sin8u_table::str6[] = (string) " sin: "
+(const string) sin8u_table::str7[] = (string) " scaled: "
+(const string) sin8u_table::str8[] = (string) " trans: "
(word) sin8u_table::sum
(word) sin8u_table::sum#0
(word) sin8u_table::tabsize
@@ -7293,7 +7293,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@1
(label) main::@return
-(const byte*) main::sintab = { fill( $14, 0) }
+(const byte*) main::sintab[(number) $14] = { fill( $14, 0) }
(const word) main::tabsize = (word) $14
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
@@ -7408,7 +7408,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 8.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 8.783783783783784
(byte*) print_line_cursor#12 print_line_cursor zp[2]:2 204.0
@@ -7553,15 +7553,15 @@ FINAL SYMBOL TABLE
(byte) sin8u_table::sinx_tr#0 reg byte x 1.9411764705882355
(word) sin8u_table::step
(word) sin8u_table::step#0 step zp[2]:15 0.2727272727272727
-(const string) sin8u_table::str = (string) "step:"
-(const string) sin8u_table::str1 = (string) " min:"
-(const string) sin8u_table::str2 = (string) " max:"
-(const string) sin8u_table::str3 = (string) " ampl:"
-(const string) sin8u_table::str4 = (string) " mid:"
-(const string) sin8u_table::str5 = (string) "x: "
-(const string) sin8u_table::str6 = (string) " sin: "
-(const string) sin8u_table::str7 = (string) " scaled: "
-(const string) sin8u_table::str8 = (string) " trans: "
+(const string) sin8u_table::str[] = (string) "step:"
+(const string) sin8u_table::str1[] = (string) " min:"
+(const string) sin8u_table::str2[] = (string) " max:"
+(const string) sin8u_table::str3[] = (string) " ampl:"
+(const string) sin8u_table::str4[] = (string) " mid:"
+(const string) sin8u_table::str5[] = (string) "x: "
+(const string) sin8u_table::str6[] = (string) " sin: "
+(const string) sin8u_table::str7[] = (string) " scaled: "
+(const string) sin8u_table::str8[] = (string) " trans: "
(word) sin8u_table::sum
(const word) sin8u_table::sum#0 sum = (word)(const byte) sin8u_table::min#0+(const byte) sin8u_table::max#0
(word) sin8u_table::tabsize
diff --git a/src/test/ref/sinusgenscale8.sym b/src/test/ref/sinusgenscale8.sym
index 726348057..cf1199967 100644
--- a/src/test/ref/sinusgenscale8.sym
+++ b/src/test/ref/sinusgenscale8.sym
@@ -49,7 +49,7 @@
(void()) main()
(label) main::@1
(label) main::@return
-(const byte*) main::sintab = { fill( $14, 0) }
+(const byte*) main::sintab[(number) $14] = { fill( $14, 0) }
(const word) main::tabsize = (word) $14
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
@@ -164,7 +164,7 @@
(byte*) print_char_cursor#66 print_char_cursor zp[2]:6 8.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 8.783783783783784
(byte*) print_line_cursor#12 print_line_cursor zp[2]:2 204.0
@@ -309,15 +309,15 @@
(byte) sin8u_table::sinx_tr#0 reg byte x 1.9411764705882355
(word) sin8u_table::step
(word) sin8u_table::step#0 step zp[2]:15 0.2727272727272727
-(const string) sin8u_table::str = (string) "step:"
-(const string) sin8u_table::str1 = (string) " min:"
-(const string) sin8u_table::str2 = (string) " max:"
-(const string) sin8u_table::str3 = (string) " ampl:"
-(const string) sin8u_table::str4 = (string) " mid:"
-(const string) sin8u_table::str5 = (string) "x: "
-(const string) sin8u_table::str6 = (string) " sin: "
-(const string) sin8u_table::str7 = (string) " scaled: "
-(const string) sin8u_table::str8 = (string) " trans: "
+(const string) sin8u_table::str[] = (string) "step:"
+(const string) sin8u_table::str1[] = (string) " min:"
+(const string) sin8u_table::str2[] = (string) " max:"
+(const string) sin8u_table::str3[] = (string) " ampl:"
+(const string) sin8u_table::str4[] = (string) " mid:"
+(const string) sin8u_table::str5[] = (string) "x: "
+(const string) sin8u_table::str6[] = (string) " sin: "
+(const string) sin8u_table::str7[] = (string) " scaled: "
+(const string) sin8u_table::str8[] = (string) " trans: "
(word) sin8u_table::sum
(const word) sin8u_table::sum#0 sum = (word)(const byte) sin8u_table::min#0+(const byte) sin8u_table::max#0
(word) sin8u_table::tabsize
diff --git a/src/test/ref/sizeof-arrays.log b/src/test/ref/sizeof-arrays.log
index 00d739dd1..f856f2f22 100644
--- a/src/test/ref/sizeof-arrays.log
+++ b/src/test/ref/sizeof-arrays.log
@@ -75,8 +75,8 @@ SYMBOL TABLE SSA
(byte~) main::$8
(byte~) main::$9
(label) main::@return
-(const byte*) main::ba = { fill( 3, 0) }
-(const byte*) main::bb = { fill( main::sz+2, 0) }
+(const byte*) main::ba[(number) 3] = { fill( 3, 0) }
+(const byte*) main::bb[(const byte) main::sz+(number) 2] = { fill( main::sz+2, 0) }
(byte) main::idx
(byte) main::idx#0
(byte) main::idx#1
@@ -85,11 +85,11 @@ SYMBOL TABLE SSA
(byte) main::idx#4
(byte) main::idx#5
(byte) main::idx#6
-(const byte*) main::sa = (string) "camelot"
-(const byte*) main::sb = { (byte) 'a', (byte) 'b', (byte) 'c', (byte)(number) 0 }
+(const byte*) main::sa[] = (string) "camelot"
+(const byte*) main::sb[] = { (byte) 'a', (byte) 'b', (byte) 'c', (byte)(number) 0 }
(const byte) main::sz = (number) 7
-(const word*) main::wa = { fill( 3, 0) }
-(const word*) main::wb = { (word)(number) 1, (word)(number) 2, (word)(number) 3, (word)(number) 4 }
+(const word*) main::wa[(number) 3] = { fill( 3, 0) }
+(const word*) main::wb[] = { (word)(number) 1, (word)(number) 2, (word)(number) 3, (word)(number) 4 }
Adding number conversion cast (unumber) 2 in
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
diff --git a/src/test/ref/sizeof-struct.log b/src/test/ref/sizeof-struct.log
index da9e28b6c..ebdeb903e 100644
--- a/src/test/ref/sizeof-struct.log
+++ b/src/test/ref/sizeof-struct.log
@@ -101,7 +101,7 @@ SYMBOL TABLE SSA
(label) main::@return
(const byte) main::NUM_CIRCLES = (const byte) main::NUM_POINTS-(number) 1
(const byte) main::NUM_POINTS = (number) 4
-(const struct Circle*) main::circles = { fill( main::NUM_CIRCLES, 0) }
+(const struct Circle*) main::circles[(const byte) main::NUM_CIRCLES] = { fill( main::NUM_CIRCLES, 0) }
(byte) main::idx
(byte) main::idx#0
(byte) main::idx#1
@@ -114,7 +114,7 @@ SYMBOL TABLE SSA
(byte) main::idx#7
(byte) main::idx#8
(byte) main::idx#9
-(const struct Point*) main::points = { fill( main::NUM_POINTS, 0) }
+(const struct Point*) main::points[(const byte) main::NUM_POINTS] = { fill( main::NUM_POINTS, 0) }
Adding number conversion cast (unumber) 1 in
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
diff --git a/src/test/ref/string-const-consolidation-noroot.log b/src/test/ref/string-const-consolidation-noroot.log
index 3f37413c6..de0e829e8 100644
--- a/src/test/ref/string-const-consolidation-noroot.log
+++ b/src/test/ref/string-const-consolidation-noroot.log
@@ -81,9 +81,9 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) main::rex1 = (string) "rex"
-(const byte*) main::rex2 = (string) "rex"
-(const string) main::string = (string) "rex"
+(const byte*) main::rex1[] = (string) "rex"
+(const byte*) main::rex2[] = (string) "rex"
+(const string) main::string[] = (string) "rex"
(void()) print((byte*) print::string)
(bool~) print::$0
(label) print::@1
@@ -544,7 +544,7 @@ FINAL SYMBOL TABLE
(label) main::@1
(label) main::@2
(label) main::@return
-(const byte*) main::rex1 = (string) "rex"
+(const byte*) main::rex1[] = (string) "rex"
(void()) print((byte*) print::string)
(label) print::@1
(label) print::@2
diff --git a/src/test/ref/string-const-consolidation-noroot.sym b/src/test/ref/string-const-consolidation-noroot.sym
index 40db58fc4..f75890c06 100644
--- a/src/test/ref/string-const-consolidation-noroot.sym
+++ b/src/test/ref/string-const-consolidation-noroot.sym
@@ -5,7 +5,7 @@
(label) main::@1
(label) main::@2
(label) main::@return
-(const byte*) main::rex1 = (string) "rex"
+(const byte*) main::rex1[] = (string) "rex"
(void()) print((byte*) print::string)
(label) print::@1
(label) print::@2
diff --git a/src/test/ref/string-const-consolidation.log b/src/test/ref/string-const-consolidation.log
index 5b83f44d2..629e946b3 100644
--- a/src/test/ref/string-const-consolidation.log
+++ b/src/test/ref/string-const-consolidation.log
@@ -81,8 +81,8 @@ SYMBOL TABLE SSA
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) main::rex2 = (string) "rex"
-(const string) main::string = (string) "rex"
+(const byte*) main::rex2[] = (string) "rex"
+(const string) main::string[] = (string) "rex"
(void()) print((byte*) print::string)
(bool~) print::$0
(label) print::@1
@@ -96,7 +96,7 @@ SYMBOL TABLE SSA
(byte*) print::string#4
(byte*) print::string#5
(byte*) print::string#6
-(const byte*) rex1 = (string) "rex"
+(const byte*) rex1[] = (string) "rex"
(byte*) screen
(byte*) screen#0
(byte*) screen#1
@@ -551,7 +551,7 @@ FINAL SYMBOL TABLE
(byte*) print::string
(byte*) print::string#3 string zp[2]:4 22.0
(byte*) print::string#4 string zp[2]:4 11.0
-(const byte*) rex1 = (string) "rex"
+(const byte*) rex1[] = (string) "rex"
(byte*) screen
(byte*) screen#12 screen zp[2]:2 4.875
(byte*) screen#18 screen zp[2]:2 6.0
diff --git a/src/test/ref/string-const-consolidation.sym b/src/test/ref/string-const-consolidation.sym
index e49f73fd4..31a246e71 100644
--- a/src/test/ref/string-const-consolidation.sym
+++ b/src/test/ref/string-const-consolidation.sym
@@ -12,7 +12,7 @@
(byte*) print::string
(byte*) print::string#3 string zp[2]:4 22.0
(byte*) print::string#4 string zp[2]:4 11.0
-(const byte*) rex1 = (string) "rex"
+(const byte*) rex1[] = (string) "rex"
(byte*) screen
(byte*) screen#12 screen zp[2]:2 4.875
(byte*) screen#18 screen zp[2]:2 6.0
diff --git a/src/test/ref/string-encoding-literals.log b/src/test/ref/string-encoding-literals.log
index 5d9c35186..a6f0643a4 100644
--- a/src/test/ref/string-encoding-literals.log
+++ b/src/test/ref/string-encoding-literals.log
@@ -60,13 +60,13 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const byte*) petscii_mixed = (string) "abcABC1"pm
-(const byte*) petscii_standard = (string) "abcABC3"pm
-(const byte*) petscii_upper = (string) "abcABC2"pu
-(const byte*) screencode_mixed = (string) "abcABC4"
-(const byte*) screencode_standard = (string) "abcABC6"
-(const byte*) screencode_upper = (string) "abcABC5"su
-(const byte*) standard = (string) "abcABC7"
+(const byte*) petscii_mixed[] = (string) "abcABC1"pm
+(const byte*) petscii_standard[] = (string) "abcABC3"pm
+(const byte*) petscii_upper[] = (string) "abcABC2"pu
+(const byte*) screencode_mixed[] = (string) "abcABC4"
+(const byte*) screencode_standard[] = (string) "abcABC6"
+(const byte*) screencode_upper[] = (string) "abcABC5"su
+(const byte*) standard[] = (string) "abcABC7"
Adding number conversion cast (unumber) $28*0 in (byte*~) main::$0 ← (const byte*) main::SCREEN + (number) $28*(number) 0
Adding number conversion cast (unumber) $28*1 in (byte*~) main::$1 ← (const byte*) main::SCREEN + (number) $28*(number) 1
@@ -439,13 +439,13 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) petscii_mixed = (string) "abcABC1"pm
-(const byte*) petscii_standard = (string) "abcABC3"pm
-(const byte*) petscii_upper = (string) "abcABC2"pu
-(const byte*) screencode_mixed = (string) "abcABC4"
-(const byte*) screencode_standard = (string) "abcABC6"
-(const byte*) screencode_upper = (string) "abcABC5"su
-(const byte*) standard = (string) "abcABC7"
+(const byte*) petscii_mixed[] = (string) "abcABC1"pm
+(const byte*) petscii_standard[] = (string) "abcABC3"pm
+(const byte*) petscii_upper[] = (string) "abcABC2"pu
+(const byte*) screencode_mixed[] = (string) "abcABC4"
+(const byte*) screencode_standard[] = (string) "abcABC6"
+(const byte*) screencode_upper[] = (string) "abcABC5"su
+(const byte*) standard[] = (string) "abcABC7"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/string-encoding-literals.sym b/src/test/ref/string-encoding-literals.sym
index fe4c36045..870859a1d 100644
--- a/src/test/ref/string-encoding-literals.sym
+++ b/src/test/ref/string-encoding-literals.sym
@@ -8,12 +8,12 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
-(const byte*) petscii_mixed = (string) "abcABC1"pm
-(const byte*) petscii_standard = (string) "abcABC3"pm
-(const byte*) petscii_upper = (string) "abcABC2"pu
-(const byte*) screencode_mixed = (string) "abcABC4"
-(const byte*) screencode_standard = (string) "abcABC6"
-(const byte*) screencode_upper = (string) "abcABC5"su
-(const byte*) standard = (string) "abcABC7"
+(const byte*) petscii_mixed[] = (string) "abcABC1"pm
+(const byte*) petscii_standard[] = (string) "abcABC3"pm
+(const byte*) petscii_upper[] = (string) "abcABC2"pu
+(const byte*) screencode_mixed[] = (string) "abcABC4"
+(const byte*) screencode_standard[] = (string) "abcABC6"
+(const byte*) screencode_upper[] = (string) "abcABC5"su
+(const byte*) standard[] = (string) "abcABC7"
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/string-encoding-pragma.log b/src/test/ref/string-encoding-pragma.log
index 370015683..484ab11a7 100644
--- a/src/test/ref/string-encoding-pragma.log
+++ b/src/test/ref/string-encoding-pragma.log
@@ -57,12 +57,12 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const byte*) petscii_mixed1 = (string) "abcABC2"pm
-(const byte*) petscii_mixed2 = (string) "abcABC3"pm
-(const byte*) screencode_mixed1 = (string) "abcABC1"
-(const byte*) screencode_mixed2 = (string) "abcABC4"
-(const byte*) screencode_mixed3 = (string) "abcABC6"
-(const byte*) screencode_upper = (string) "abcABC5"su
+(const byte*) petscii_mixed1[] = (string) "abcABC2"pm
+(const byte*) petscii_mixed2[] = (string) "abcABC3"pm
+(const byte*) screencode_mixed1[] = (string) "abcABC1"
+(const byte*) screencode_mixed2[] = (string) "abcABC4"
+(const byte*) screencode_mixed3[] = (string) "abcABC6"
+(const byte*) screencode_upper[] = (string) "abcABC5"su
Adding number conversion cast (unumber) $28*2 in (byte*~) main::$0 ← (const byte*) main::SCREEN + (number) $28*(number) 2
Adding number conversion cast (unumber) $28*0 in (byte*~) main::$1 ← (const byte*) main::SCREEN + (number) $28*(number) 0
@@ -417,12 +417,12 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.000000000000004
-(const byte*) petscii_mixed1 = (string) "abcABC2"pm
-(const byte*) petscii_mixed2 = (string) "abcABC3"pm
-(const byte*) screencode_mixed1 = (string) "abcABC1"
-(const byte*) screencode_mixed2 = (string) "abcABC4"
-(const byte*) screencode_mixed3 = (string) "abcABC6"
-(const byte*) screencode_upper = (string) "abcABC5"su
+(const byte*) petscii_mixed1[] = (string) "abcABC2"pm
+(const byte*) petscii_mixed2[] = (string) "abcABC3"pm
+(const byte*) screencode_mixed1[] = (string) "abcABC1"
+(const byte*) screencode_mixed2[] = (string) "abcABC4"
+(const byte*) screencode_mixed3[] = (string) "abcABC6"
+(const byte*) screencode_upper[] = (string) "abcABC5"su
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/string-encoding-pragma.sym b/src/test/ref/string-encoding-pragma.sym
index 2e195eef8..a91eb6377 100644
--- a/src/test/ref/string-encoding-pragma.sym
+++ b/src/test/ref/string-encoding-pragma.sym
@@ -8,11 +8,11 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.000000000000004
-(const byte*) petscii_mixed1 = (string) "abcABC2"pm
-(const byte*) petscii_mixed2 = (string) "abcABC3"pm
-(const byte*) screencode_mixed1 = (string) "abcABC1"
-(const byte*) screencode_mixed2 = (string) "abcABC4"
-(const byte*) screencode_mixed3 = (string) "abcABC6"
-(const byte*) screencode_upper = (string) "abcABC5"su
+(const byte*) petscii_mixed1[] = (string) "abcABC2"pm
+(const byte*) petscii_mixed2[] = (string) "abcABC3"pm
+(const byte*) screencode_mixed1[] = (string) "abcABC1"
+(const byte*) screencode_mixed2[] = (string) "abcABC4"
+(const byte*) screencode_mixed3[] = (string) "abcABC6"
+(const byte*) screencode_upper[] = (string) "abcABC5"su
reg byte x [ main::i#2 main::i#1 ]
diff --git a/src/test/ref/string-escapes-0.log b/src/test/ref/string-escapes-0.log
index 7a0ddc4f2..3bf0a6419 100644
--- a/src/test/ref/string-escapes-0.log
+++ b/src/test/ref/string-escapes-0.log
@@ -38,7 +38,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "
+(const byte*) MESSAGE[] = (string) "
"'\"
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
@@ -295,7 +295,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "
+(const byte*) MESSAGE[] = (string) "
"'\"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
diff --git a/src/test/ref/string-escapes-0.sym b/src/test/ref/string-escapes-0.sym
index 45f5839d4..4543aa4a5 100644
--- a/src/test/ref/string-escapes-0.sym
+++ b/src/test/ref/string-escapes-0.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "
+(const byte*) MESSAGE[] = (string) "
"'\"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
diff --git a/src/test/ref/string-escapes-1.log b/src/test/ref/string-escapes-1.log
index ff0b42fe1..cb4482ef3 100644
--- a/src/test/ref/string-escapes-1.log
+++ b/src/test/ref/string-escapes-1.log
@@ -66,7 +66,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world"
(void()) main()
(bool~) main::$0
@@ -521,7 +521,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world"
(void()) main()
(label) main::@1
diff --git a/src/test/ref/string-escapes-1.sym b/src/test/ref/string-escapes-1.sym
index bf6c38b63..d7959aeb0 100644
--- a/src/test/ref/string-escapes-1.sym
+++ b/src/test/ref/string-escapes-1.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world"
(void()) main()
(label) main::@1
diff --git a/src/test/ref/string-escapes-2.log b/src/test/ref/string-escapes-2.log
index f66165e4e..630c97b7e 100644
--- a/src/test/ref/string-escapes-2.log
+++ b/src/test/ref/string-escapes-2.log
@@ -52,7 +52,7 @@ SYMBOL TABLE SSA
(label) @3
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world\"pm
(void()) chrout((byte) chrout::c)
(label) chrout::@return
@@ -398,7 +398,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world\"pm
(void()) chrout((byte) chrout::c)
(label) chrout::@return
diff --git a/src/test/ref/string-escapes-2.sym b/src/test/ref/string-escapes-2.sym
index 34c38bf74..238c6ea70 100644
--- a/src/test/ref/string-escapes-2.sym
+++ b/src/test/ref/string-escapes-2.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world\"pm
(void()) chrout((byte) chrout::c)
(label) chrout::@return
diff --git a/src/test/ref/string-escapes-3.log b/src/test/ref/string-escapes-3.log
index fa5c4de2f..d0445b83d 100644
--- a/src/test/ref/string-escapes-3.log
+++ b/src/test/ref/string-escapes-3.log
@@ -67,7 +67,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world"pm
(void()) main()
(number~) main::$0
@@ -546,7 +546,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world"pm
(void()) main()
(byte~) main::$0 reg byte a 22.0
diff --git a/src/test/ref/string-escapes-3.sym b/src/test/ref/string-escapes-3.sym
index 4ef1d0f56..4af872800 100644
--- a/src/test/ref/string-escapes-3.sym
+++ b/src/test/ref/string-escapes-3.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "hello
+(const byte*) MESSAGE[] = (string) "hello
world"pm
(void()) main()
(byte~) main::$0 reg byte a 22.0
diff --git a/src/test/ref/string-pointer-problem.log b/src/test/ref/string-pointer-problem.log
index b6ea8bb26..3e97e37ee 100644
--- a/src/test/ref/string-pointer-problem.log
+++ b/src/test/ref/string-pointer-problem.log
@@ -55,7 +55,7 @@ SYMBOL TABLE SSA
(void()) main()
(label) main::@1
(label) main::@return
-(const string) main::name = (string) "keyboard"
+(const string) main::name[] = (string) "keyboard"
(const byte*) process_name = (byte*)(number) $400
(void()) set_process_name((byte*) set_process_name::name)
(bool~) set_process_name::$0
@@ -451,7 +451,7 @@ FINAL SYMBOL TABLE
(label) @end
(void()) main()
(label) main::@return
-(const string) main::name = (string) "keyboard"
+(const string) main::name[] = (string) "keyboard"
(const byte*) process_name = (byte*) 1024
(void()) set_process_name((byte*) set_process_name::name)
(byte*~) set_process_name::$1 zp[2]:4 11.0
diff --git a/src/test/ref/string-pointer-problem.sym b/src/test/ref/string-pointer-problem.sym
index 7222b51e6..627b58b36 100644
--- a/src/test/ref/string-pointer-problem.sym
+++ b/src/test/ref/string-pointer-problem.sym
@@ -3,7 +3,7 @@
(label) @end
(void()) main()
(label) main::@return
-(const string) main::name = (string) "keyboard"
+(const string) main::name[] = (string) "keyboard"
(const byte*) process_name = (byte*) 1024
(void()) set_process_name((byte*) set_process_name::name)
(byte*~) set_process_name::$1 zp[2]:4 11.0
diff --git a/src/test/ref/strip.log b/src/test/ref/strip.log
index 4a442aad7..c5b36c5e6 100644
--- a/src/test/ref/strip.log
+++ b/src/test/ref/strip.log
@@ -117,8 +117,8 @@ SYMBOL TABLE SSA
(label) main::@3
(label) main::@4
(label) main::@return
-(const byte*) msg1 = (string) "hello world!"
-(const byte*) msg2 = (string) "goodbye blue sky!"
+(const byte*) msg1[] = (string) "hello world!"
+(const byte*) msg2[] = (string) "goodbye blue sky!"
(void()) print((byte*) print::msg)
(bool~) print::$0
(label) print::@1
@@ -935,8 +935,8 @@ FINAL SYMBOL TABLE
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) msg1 = (string) "hello world!"
-(const byte*) msg2 = (string) "goodbye blue sky!"
+(const byte*) msg1[] = (string) "hello world!"
+(const byte*) msg2[] = (string) "goodbye blue sky!"
(void()) print((byte*) print::msg)
(label) print::@1
(label) print::@return
diff --git a/src/test/ref/strip.sym b/src/test/ref/strip.sym
index 6ef7b1915..076d87026 100644
--- a/src/test/ref/strip.sym
+++ b/src/test/ref/strip.sym
@@ -6,8 +6,8 @@
(label) main::@2
(label) main::@3
(label) main::@return
-(const byte*) msg1 = (string) "hello world!"
-(const byte*) msg2 = (string) "goodbye blue sky!"
+(const byte*) msg1[] = (string) "hello world!"
+(const byte*) msg2[] = (string) "goodbye blue sky!"
(void()) print((byte*) print::msg)
(label) print::@1
(label) print::@return
diff --git a/src/test/ref/struct-10.log b/src/test/ref/struct-10.log
index d6f72d257..083e1a9ef 100644
--- a/src/test/ref/struct-10.log
+++ b/src/test/ref/struct-10.log
@@ -35,7 +35,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const word*) RADIX_DECIMAL_VALUES = { (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a }
+(const word*) RADIX_DECIMAL_VALUES[] = { (word)(number) $2710, (word)(number) $3e8, (word)(number) $64, (word)(number) $a }
(word*) RadixInfo::values
(const byte) SIZEOF_WORD = (byte) 2
(void()) main()
@@ -260,7 +260,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const word*) RADIX_DECIMAL_VALUES = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
+(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
(word*) RadixInfo::values
(const byte) SIZEOF_WORD = (byte) 2
(void()) main()
diff --git a/src/test/ref/struct-10.sym b/src/test/ref/struct-10.sym
index b4a1297d8..3f70a80a6 100644
--- a/src/test/ref/struct-10.sym
+++ b/src/test/ref/struct-10.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const word*) RADIX_DECIMAL_VALUES = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
+(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
(word*) RadixInfo::values
(const byte) SIZEOF_WORD = (byte) 2
(void()) main()
diff --git a/src/test/ref/struct-pos-fill.log b/src/test/ref/struct-pos-fill.log
index d37deb537..cacd6894c 100644
--- a/src/test/ref/struct-pos-fill.log
+++ b/src/test/ref/struct-pos-fill.log
@@ -167,7 +167,7 @@ SYMBOL TABLE SSA
(label) main::@5
(label) main::@6
(label) main::@return
-(const struct pos*) p = { fill( $40, 0) }
+(const struct pos*) p[(number) $40] = { fill( $40, 0) }
(byte) pos::x
(byte) pos::y
(byte) row
@@ -780,7 +780,7 @@ FINAL SYMBOL TABLE
(label) main::@4
(label) main::@5
(label) main::@return
-(const struct pos*) p = { fill( $40, 0) }
+(const struct pos*) p[(number) $40] = { fill( $40, 0) }
(byte) pos::x
(byte) pos::y
(byte) row
diff --git a/src/test/ref/struct-pos-fill.sym b/src/test/ref/struct-pos-fill.sym
index 28566021e..02940b9d7 100644
--- a/src/test/ref/struct-pos-fill.sym
+++ b/src/test/ref/struct-pos-fill.sym
@@ -19,7 +19,7 @@
(label) main::@4
(label) main::@5
(label) main::@return
-(const struct pos*) p = { fill( $40, 0) }
+(const struct pos*) p[(number) $40] = { fill( $40, 0) }
(byte) pos::x
(byte) pos::y
(byte) row
diff --git a/src/test/ref/struct-ptr-0.log b/src/test/ref/struct-ptr-0.log
index 0562e0fd4..b2581fbcb 100644
--- a/src/test/ref/struct-ptr-0.log
+++ b/src/test/ref/struct-ptr-0.log
@@ -89,7 +89,7 @@ SYMBOL TABLE SSA
(byte) main::i1#0
(byte) main::i1#1
(byte) main::i1#2
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
Adding number conversion cast (unumber) 1 in (number~) main::$0 ← (byte) main::i#2 + (number) 1
Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (byte) main::i#2 + (unumber)(number) 1
@@ -542,7 +542,7 @@ FINAL SYMBOL TABLE
(byte) main::i1
(byte) main::i1#1 reg byte y 16.5
(byte) main::i1#2 reg byte y 13.75
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte y [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-0.sym b/src/test/ref/struct-ptr-0.sym
index 39ae7628a..94d36e85e 100644
--- a/src/test/ref/struct-ptr-0.sym
+++ b/src/test/ref/struct-ptr-0.sym
@@ -18,7 +18,7 @@
(byte) main::i1
(byte) main::i1#1 reg byte y 16.5
(byte) main::i1#2 reg byte y 13.75
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte y [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-1.log b/src/test/ref/struct-ptr-1.log
index 794b4290f..1c427033b 100644
--- a/src/test/ref/struct-ptr-1.log
+++ b/src/test/ref/struct-ptr-1.log
@@ -81,7 +81,7 @@ SYMBOL TABLE SSA
(byte) main::i1#0
(byte) main::i1#1
(byte) main::i1#2
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
Adding number conversion cast (unumber) 4 in (number~) main::$4 ← (byte) main::i#2 + (number) 4
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (byte) main::i#2 + (unumber)(number) 4
@@ -532,7 +532,7 @@ FINAL SYMBOL TABLE
(byte) main::i1
(byte) main::i1#1 reg byte y 16.5
(byte) main::i1#2 reg byte y 13.75
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte y [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-1.sym b/src/test/ref/struct-ptr-1.sym
index cb802c294..e36786d1d 100644
--- a/src/test/ref/struct-ptr-1.sym
+++ b/src/test/ref/struct-ptr-1.sym
@@ -18,7 +18,7 @@
(byte) main::i1
(byte) main::i1#1 reg byte y 16.5
(byte) main::i1#2 reg byte y 13.75
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte y [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-10.log b/src/test/ref/struct-ptr-10.log
index e63a46f21..b1849d7c9 100644
--- a/src/test/ref/struct-ptr-10.log
+++ b/src/test/ref/struct-ptr-10.log
@@ -88,7 +88,7 @@ SYMBOL TABLE SSA
(word) main::i1#0
(word) main::i1#1
(word) main::i1#2
-(const struct Point*) points = { fill( $1f4, 0) }
+(const struct Point*) points[(number) $1f4] = { fill( $1f4, 0) }
Adding number conversion cast (unumber) 2 in *((byte*~) main::$5 + (word~) main::$3) ← (number) 2
Successful SSA optimization PassNAddNumberTypeConversions
@@ -781,7 +781,7 @@ FINAL SYMBOL TABLE
(word) main::i1
(word) main::i1#1 i1 zp[2]:4 16.5
(word) main::i1#2 i1 zp[2]:4 4.125
-(const struct Point*) points = { fill( $1f4, 0) }
+(const struct Point*) points[(number) $1f4] = { fill( $1f4, 0) }
zp[2]:2 [ main::i#2 main::i#1 ]
zp[2]:4 [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-10.sym b/src/test/ref/struct-ptr-10.sym
index f0326dcd1..37727ebe5 100644
--- a/src/test/ref/struct-ptr-10.sym
+++ b/src/test/ref/struct-ptr-10.sym
@@ -24,7 +24,7 @@
(word) main::i1
(word) main::i1#1 i1 zp[2]:4 16.5
(word) main::i1#2 i1 zp[2]:4 4.125
-(const struct Point*) points = { fill( $1f4, 0) }
+(const struct Point*) points[(number) $1f4] = { fill( $1f4, 0) }
zp[2]:2 [ main::i#2 main::i#1 ]
zp[2]:4 [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-11.log b/src/test/ref/struct-ptr-11.log
index 93c76237f..9bf053f34 100644
--- a/src/test/ref/struct-ptr-11.log
+++ b/src/test/ref/struct-ptr-11.log
@@ -106,7 +106,7 @@ SYMBOL TABLE SSA
(byte) main::i1#0
(byte) main::i1#1
(byte) main::i1#2
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
Inlining cast (signed byte~) main::$0 ← (signed byte)(byte) main::i#2
Inlining cast (signed byte~) main::$1 ← (signed byte)(byte) main::i#2
@@ -640,7 +640,7 @@ FINAL SYMBOL TABLE
(byte) main::i1
(byte) main::i1#1 reg byte x 16.5
(byte) main::i1#2 reg byte x 7.333333333333333
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-11.sym b/src/test/ref/struct-ptr-11.sym
index 978ae6c44..9717a67f1 100644
--- a/src/test/ref/struct-ptr-11.sym
+++ b/src/test/ref/struct-ptr-11.sym
@@ -22,7 +22,7 @@
(byte) main::i1
(byte) main::i1#1 reg byte x 16.5
(byte) main::i1#2 reg byte x 7.333333333333333
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-15.log b/src/test/ref/struct-ptr-15.log
index c1ef51201..4f734b089 100644
--- a/src/test/ref/struct-ptr-15.log
+++ b/src/test/ref/struct-ptr-15.log
@@ -96,7 +96,7 @@ SYMBOL TABLE SSA
(byte) Point::x
(byte) Point::y
(const byte) SIZEOF_STRUCT_CIRCLE = (byte) 3
-(const struct Circle*) circles = { fill( 2, 0) }
+(const struct Circle*) circles[(number) 2] = { fill( 2, 0) }
(void()) main()
(bool~) main::$0
(number~) main::$1
@@ -761,7 +761,7 @@ FINAL SYMBOL TABLE
(byte) Point::x
(byte) Point::y
(const byte) SIZEOF_STRUCT_CIRCLE = (byte) 3
-(const struct Circle*) circles = { fill( 2, 0) }
+(const struct Circle*) circles[(number) 2] = { fill( 2, 0) }
(void()) main()
(struct Point*~) main::$14 zp[2]:6 11.0
(label) main::@1
diff --git a/src/test/ref/struct-ptr-15.sym b/src/test/ref/struct-ptr-15.sym
index d90da49dc..bae6c8099 100644
--- a/src/test/ref/struct-ptr-15.sym
+++ b/src/test/ref/struct-ptr-15.sym
@@ -8,7 +8,7 @@
(byte) Point::x
(byte) Point::y
(const byte) SIZEOF_STRUCT_CIRCLE = (byte) 3
-(const struct Circle*) circles = { fill( 2, 0) }
+(const struct Circle*) circles[(number) 2] = { fill( 2, 0) }
(void()) main()
(struct Point*~) main::$14 zp[2]:6 11.0
(label) main::@1
diff --git a/src/test/ref/struct-ptr-18.log b/src/test/ref/struct-ptr-18.log
index 749af0b82..32c6323c9 100644
--- a/src/test/ref/struct-ptr-18.log
+++ b/src/test/ref/struct-ptr-18.log
@@ -130,7 +130,7 @@ SYMBOL TABLE SSA
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
(void()) print((byte) print::p_x , (byte) print::p_y)
(label) print::@return
(struct Point) print::p
@@ -674,7 +674,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 6.6000000000000005
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
(void()) print((byte) print::p_x , (byte) print::p_y)
(label) print::@return
(struct Point) print::p
diff --git a/src/test/ref/struct-ptr-18.sym b/src/test/ref/struct-ptr-18.sym
index 97ffe9559..1c46827c3 100644
--- a/src/test/ref/struct-ptr-18.sym
+++ b/src/test/ref/struct-ptr-18.sym
@@ -18,7 +18,7 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 6.6000000000000005
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
(void()) print((byte) print::p_x , (byte) print::p_y)
(label) print::@return
(struct Point) print::p
diff --git a/src/test/ref/struct-ptr-2.log b/src/test/ref/struct-ptr-2.log
index 6122fbf8a..268d665dd 100644
--- a/src/test/ref/struct-ptr-2.log
+++ b/src/test/ref/struct-ptr-2.log
@@ -97,7 +97,7 @@ SYMBOL TABLE SSA
(struct Point*) main::point_i#0
(struct Point*) main::point_i1
(struct Point*) main::point_i1#0
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
Adding number conversion cast (unumber) 4 in (number~) main::$5 ← (byte) main::i#2 + (number) 4
Adding number conversion cast (unumber) main::$5 in (number~) main::$5 ← (byte) main::i#2 + (unumber)(number) 4
@@ -628,7 +628,7 @@ FINAL SYMBOL TABLE
(struct Point*) main::point_i#0 point_i zp[2]:2 3.6666666666666665
(struct Point*) main::point_i1
(struct Point*) main::point_i1#0 point_i1 zp[2]:4 5.5
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-2.sym b/src/test/ref/struct-ptr-2.sym
index efdbd91ec..bf8854f8e 100644
--- a/src/test/ref/struct-ptr-2.sym
+++ b/src/test/ref/struct-ptr-2.sym
@@ -22,7 +22,7 @@
(struct Point*) main::point_i#0 point_i zp[2]:2 3.6666666666666665
(struct Point*) main::point_i1
(struct Point*) main::point_i1#0 point_i1 zp[2]:4 5.5
-(const struct Point*) points = { fill( 4, 0) }
+(const struct Point*) points[(number) 4] = { fill( 4, 0) }
reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-20.log b/src/test/ref/struct-ptr-20.log
index 4c5ee1a06..cb3e91050 100644
--- a/src/test/ref/struct-ptr-20.log
+++ b/src/test/ref/struct-ptr-20.log
@@ -110,7 +110,7 @@ SYMBOL TABLE SSA
(struct Setting*) main::setting#3
(struct Setting*) main::setting#4
(struct Setting*) main::setting#5
-(const struct Setting*) settings = { { off: (byte)(number) 0, id: (byte) 'a' }, { off: (byte)(number) 1, id: (byte) 'b' }, { off: (byte)(number) 0, id: (byte) 'c' } }
+(const struct Setting*) settings[] = { { off: (byte)(number) 0, id: (byte) 'a' }, { off: (byte)(number) 1, id: (byte) 'b' }, { off: (byte)(number) 0, id: (byte) 'c' } }
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) main::$9 ← (number) 0 != *((byte*~) main::$7)
@@ -543,7 +543,7 @@ FINAL SYMBOL TABLE
(struct Setting*) main::setting
(struct Setting*) main::setting#1 setting zp[2]:2 22.0
(struct Setting*) main::setting#2 setting zp[2]:2 5.5
-(const struct Setting*) settings = { { off: (byte) 0, id: (byte) 'a' }, { off: (byte) 1, id: (byte) 'b' }, { off: (byte) 0, id: (byte) 'c' } }
+(const struct Setting*) settings[] = { { off: (byte) 0, id: (byte) 'a' }, { off: (byte) 1, id: (byte) 'b' }, { off: (byte) 0, id: (byte) 'c' } }
zp[2]:2 [ main::setting#2 main::setting#1 ]
reg byte x [ main::idx#2 main::idx#5 main::idx#1 ]
diff --git a/src/test/ref/struct-ptr-20.sym b/src/test/ref/struct-ptr-20.sym
index c69a2c3b6..c56578f55 100644
--- a/src/test/ref/struct-ptr-20.sym
+++ b/src/test/ref/struct-ptr-20.sym
@@ -21,7 +21,7 @@
(struct Setting*) main::setting
(struct Setting*) main::setting#1 setting zp[2]:2 22.0
(struct Setting*) main::setting#2 setting zp[2]:2 5.5
-(const struct Setting*) settings = { { off: (byte) 0, id: (byte) 'a' }, { off: (byte) 1, id: (byte) 'b' }, { off: (byte) 0, id: (byte) 'c' } }
+(const struct Setting*) settings[] = { { off: (byte) 0, id: (byte) 'a' }, { off: (byte) 1, id: (byte) 'b' }, { off: (byte) 0, id: (byte) 'c' } }
zp[2]:2 [ main::setting#2 main::setting#1 ]
reg byte x [ main::idx#2 main::idx#5 main::idx#1 ]
diff --git a/src/test/ref/struct-ptr-21.log b/src/test/ref/struct-ptr-21.log
index 37f6cb56d..99f590642 100644
--- a/src/test/ref/struct-ptr-21.log
+++ b/src/test/ref/struct-ptr-21.log
@@ -68,8 +68,8 @@ SYMBOL TABLE SSA
(byte) main::i#2
(byte) main::i#3
(const struct Setting*) main::setting = (const struct Setting*) settings+(number) 0*(const byte) SIZEOF_STRUCT_SETTING
-(const word*) seq = { (word)(number) 1, (word)(number) 2, (word)(number) 3 }
-(const struct Setting*) settings = { { len: (byte)(number) 3, buf: (const word*) seq+(number) 0*(const byte) SIZEOF_WORD } }
+(const word*) seq[] = { (word)(number) 1, (word)(number) 2, (word)(number) 3 }
+(const struct Setting*) settings[] = { { len: (byte)(number) 3, buf: (const word*) seq+(number) 0*(const byte) SIZEOF_WORD } }
Adding number conversion cast (unumber) 0*SIZEOF_WORD in
Adding number conversion cast (unumber) 0 in
@@ -395,8 +395,8 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 11.0
-(const word*) seq = { (word) 1, (word) 2, (word) 3 }
-(const struct Setting*) settings = { { len: (byte) 3, buf: (const word*) seq } }
+(const word*) seq[] = { (word) 1, (word) 2, (word) 3 }
+(const struct Setting*) settings[] = { { len: (byte) 3, buf: (const word*) seq } }
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::$1 ]
diff --git a/src/test/ref/struct-ptr-21.sym b/src/test/ref/struct-ptr-21.sym
index 29fce8a97..4e85c78da 100644
--- a/src/test/ref/struct-ptr-21.sym
+++ b/src/test/ref/struct-ptr-21.sym
@@ -13,8 +13,8 @@
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 11.0
-(const word*) seq = { (word) 1, (word) 2, (word) 3 }
-(const struct Setting*) settings = { { len: (byte) 3, buf: (const word*) seq } }
+(const word*) seq[] = { (word) 1, (word) 2, (word) 3 }
+(const struct Setting*) settings[] = { { len: (byte) 3, buf: (const word*) seq } }
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::$1 ]
diff --git a/src/test/ref/struct-ptr-22.log b/src/test/ref/struct-ptr-22.log
index 34e6aa9a2..e9468c898 100644
--- a/src/test/ref/struct-ptr-22.log
+++ b/src/test/ref/struct-ptr-22.log
@@ -355,7 +355,7 @@ SYMBOL TABLE SSA
(struct fileentry*) file#8
(struct fileentry*) file#9
(byte*) fileentry::bufEdit
-(const struct fileentry*) files = { fill( $a, 0) }
+(const struct fileentry*) files[(number) $a] = { fill( $a, 0) }
(signed word()) main()
(byte*~) main::$0
(byte**~) main::$10
@@ -374,8 +374,8 @@ SYMBOL TABLE SSA
(signed word) main::return#1
(signed word) main::return#2
(signed word) main::return#3
-(const string) main::str = (string) "$0000="
-(const string) main::str1 = (string) "$4004="
+(const string) main::str[] = (string) "$0000="
+(const string) main::str1[] = (string) "$4004="
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
@@ -486,7 +486,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -1848,7 +1848,7 @@ FINAL SYMBOL TABLE
(const byte) RADIX::OCTAL = (number) 8
(struct fileentry*) file
(byte*) fileentry::bufEdit
-(const struct fileentry*) files = { fill( $a, 0) }
+(const struct fileentry*) files[(number) $a] = { fill( $a, 0) }
(signed word()) main()
(byte*~) main::$0 zp[2]:6 4.0
(label) main::@1
@@ -1859,8 +1859,8 @@ FINAL SYMBOL TABLE
(label) main::@6
(label) main::@return
(signed word) main::return
-(const string) main::str = (string) "$0000="
-(const string) main::str1 = (string) "$4004="
+(const string) main::str[] = (string) "$0000="
+(const string) main::str1[] = (string) "$4004="
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -1901,7 +1901,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#47 print_char_cursor zp[2]:6 4.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 4.111111111111112
(byte*) print_line_cursor#10 print_line_cursor zp[2]:4 24.0
diff --git a/src/test/ref/struct-ptr-22.sym b/src/test/ref/struct-ptr-22.sym
index 7b0be6ef8..ce29733f4 100644
--- a/src/test/ref/struct-ptr-22.sym
+++ b/src/test/ref/struct-ptr-22.sym
@@ -7,7 +7,7 @@
(const byte) RADIX::OCTAL = (number) 8
(struct fileentry*) file
(byte*) fileentry::bufEdit
-(const struct fileentry*) files = { fill( $a, 0) }
+(const struct fileentry*) files[(number) $a] = { fill( $a, 0) }
(signed word()) main()
(byte*~) main::$0 zp[2]:6 4.0
(label) main::@1
@@ -18,8 +18,8 @@
(label) main::@6
(label) main::@return
(signed word) main::return
-(const string) main::str = (string) "$0000="
-(const string) main::str1 = (string) "$4004="
+(const string) main::str[] = (string) "$0000="
+(const string) main::str1[] = (string) "$4004="
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@@ -60,7 +60,7 @@
(byte*) print_char_cursor#47 print_char_cursor zp[2]:6 4.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 4.111111111111112
(byte*) print_line_cursor#10 print_line_cursor zp[2]:4 24.0
diff --git a/src/test/ref/struct-ptr-23.log b/src/test/ref/struct-ptr-23.log
index 4932b948c..a75357774 100644
--- a/src/test/ref/struct-ptr-23.log
+++ b/src/test/ref/struct-ptr-23.log
@@ -85,7 +85,7 @@ SYMBOL TABLE SSA
(const byte) OFFSET_STRUCT_PERSON_ID = (byte) 0
(const byte) OFFSET_STRUCT_PERSON_INITIALS = (byte) 1
(byte) Person::id
-(const byte*) Person::initials = { fill( 4, 0) }
+(const byte*) Person::initials[(number) 4] = { fill( 4, 0) }
(const byte*) SCREEN = (byte*)(number) $400
(const byte) SIZEOF_STRUCT_PERSON = (byte) 5
(byte) idx
@@ -117,7 +117,7 @@ SYMBOL TABLE SSA
(struct Person*) main::person#0
(struct Person*) main::person#1
(struct Person*) main::person#2
-(const struct Person*) persons = { { id: (byte)(number) 1, initials: (string) "jgr" }, { id: (byte)(number) 8, initials: (string) "hbg" } }
+(const struct Person*) persons[] = { { id: (byte)(number) 1, initials: (string) "jgr" }, { id: (byte)(number) 8, initials: (string) "hbg" } }
(void()) print_person((struct Person*) print_person::person)
(byte~) print_person::$0
(byte*~) print_person::$1
@@ -705,7 +705,7 @@ FINAL SYMBOL TABLE
(label) @end
(const byte) OFFSET_STRUCT_PERSON_INITIALS = (byte) 1
(byte) Person::id
-(const byte*) Person::initials = { fill( 4, 0) }
+(const byte*) Person::initials[(number) 4] = { fill( 4, 0) }
(const byte*) SCREEN = (byte*) 1024
(const byte) SIZEOF_STRUCT_PERSON = (byte) 5
(byte) idx
@@ -721,7 +721,7 @@ FINAL SYMBOL TABLE
(label) main::@return
(struct Person*) main::person
(const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON
-(const struct Person*) persons = { { id: (byte) 1, initials: (string) "jgr" }, { id: (byte) 8, initials: (string) "hbg" } }
+(const struct Person*) persons[] = { { id: (byte) 1, initials: (string) "jgr" }, { id: (byte) 8, initials: (string) "hbg" } }
(void()) print_person((struct Person*) print_person::person)
(byte~) print_person::$0 reg byte a 4.0
(byte*~) print_person::$3 zp[2]:4 4.0
diff --git a/src/test/ref/struct-ptr-23.sym b/src/test/ref/struct-ptr-23.sym
index d54764ad1..c25f4dc81 100644
--- a/src/test/ref/struct-ptr-23.sym
+++ b/src/test/ref/struct-ptr-23.sym
@@ -3,7 +3,7 @@
(label) @end
(const byte) OFFSET_STRUCT_PERSON_INITIALS = (byte) 1
(byte) Person::id
-(const byte*) Person::initials = { fill( 4, 0) }
+(const byte*) Person::initials[(number) 4] = { fill( 4, 0) }
(const byte*) SCREEN = (byte*) 1024
(const byte) SIZEOF_STRUCT_PERSON = (byte) 5
(byte) idx
@@ -19,7 +19,7 @@
(label) main::@return
(struct Person*) main::person
(const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON
-(const struct Person*) persons = { { id: (byte) 1, initials: (string) "jgr" }, { id: (byte) 8, initials: (string) "hbg" } }
+(const struct Person*) persons[] = { { id: (byte) 1, initials: (string) "jgr" }, { id: (byte) 8, initials: (string) "hbg" } }
(void()) print_person((struct Person*) print_person::person)
(byte~) print_person::$0 reg byte a 4.0
(byte*~) print_person::$3 zp[2]:4 4.0
diff --git a/src/test/ref/struct-ptr-26.log b/src/test/ref/struct-ptr-26.log
index 1d5ff5789..84c077113 100644
--- a/src/test/ref/struct-ptr-26.log
+++ b/src/test/ref/struct-ptr-26.log
@@ -231,7 +231,7 @@ SYMBOL TABLE SSA
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_screen
@@ -901,7 +901,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#18 print_char_cursor zp[2]:2 4.0
(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 0.6666666666666666
(byte*) print_char_cursor#24 print_char_cursor zp[2]:2 1.3333333333333333
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_screen
(void()) print_word((word) print_word::w)
diff --git a/src/test/ref/struct-ptr-26.sym b/src/test/ref/struct-ptr-26.sym
index 28e17b226..0efefb02d 100644
--- a/src/test/ref/struct-ptr-26.sym
+++ b/src/test/ref/struct-ptr-26.sym
@@ -34,7 +34,7 @@
(byte*) print_char_cursor#18 print_char_cursor zp[2]:2 4.0
(byte*) print_char_cursor#19 print_char_cursor zp[2]:2 0.6666666666666666
(byte*) print_char_cursor#24 print_char_cursor zp[2]:2 1.3333333333333333
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_screen
(void()) print_word((word) print_word::w)
diff --git a/src/test/ref/struct-ptr-30.log b/src/test/ref/struct-ptr-30.log
index cb0e5fcb2..b57db3c72 100644
--- a/src/test/ref/struct-ptr-30.log
+++ b/src/test/ref/struct-ptr-30.log
@@ -119,7 +119,7 @@ SYMBOL TABLE SSA
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
-(const struct Point*) points = { { x: (byte)(number) 1, y: (signed word)(number) $83f }, { x: (byte)(number) 3, y: (signed word)(number) $107e } }
+(const struct Point*) points[(number) 4] = { { x: (byte)(number) 1, y: (signed word)(number) $83f }, { x: (byte)(number) 3, y: (signed word)(number) $107e } }
(void()) print((byte) print::p_x , (signed word) print::p_y)
(byte~) print::$0
(byte~) print::$1
@@ -705,7 +705,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 7.333333333333333
-(const struct Point*) points = { { x: (byte) 1, y: (signed word) $83f }, { x: (byte) 3, y: (signed word) $107e } }
+(const struct Point*) points[(number) 4] = { { x: (byte) 1, y: (signed word) $83f }, { x: (byte) 3, y: (signed word) $107e } }
(void()) print((byte) print::p_x , (signed word) print::p_y)
(byte~) print::$0 reg byte a 4.0
(byte~) print::$1 reg byte a 4.0
diff --git a/src/test/ref/struct-ptr-30.sym b/src/test/ref/struct-ptr-30.sym
index 84e5de185..bee102a3c 100644
--- a/src/test/ref/struct-ptr-30.sym
+++ b/src/test/ref/struct-ptr-30.sym
@@ -20,7 +20,7 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 7.333333333333333
-(const struct Point*) points = { { x: (byte) 1, y: (signed word) $83f }, { x: (byte) 3, y: (signed word) $107e } }
+(const struct Point*) points[(number) 4] = { { x: (byte) 1, y: (signed word) $83f }, { x: (byte) 3, y: (signed word) $107e } }
(void()) print((byte) print::p_x , (signed word) print::p_y)
(byte~) print::$0 reg byte a 4.0
(byte~) print::$1 reg byte a 4.0
diff --git a/src/test/ref/struct-ptr-31.log b/src/test/ref/struct-ptr-31.log
index 66d1055b7..4aac5090a 100644
--- a/src/test/ref/struct-ptr-31.log
+++ b/src/test/ref/struct-ptr-31.log
@@ -92,11 +92,11 @@ SYMBOL TABLE SSA
(label) @3
(label) @begin
(label) @end
-(const byte*) DIGIT = (string) "0123456789"
+(const byte*) DIGIT[] = (string) "0123456789"
(const byte) OFFSET_STRUCT_PERSON_ID = (byte) 0
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(byte) Person::id
-(const byte*) Person::name = { fill( $10, 0) }
+(const byte*) Person::name[(number) $10] = { fill( $10, 0) }
(const byte*) SCREEN = (byte*)(number) $400
(const byte) SIZEOF_STRUCT_PERSON = (byte) $11
(byte) idx
@@ -125,7 +125,7 @@ SYMBOL TABLE SSA
(label) main::@1
(label) main::@2
(label) main::@return
-(const struct Person*) persons = { { id: (byte)(number) 4, name: (string) "jesper" }, { id: (byte)(number) 7, name: (string) "henriette" } }
+(const struct Person*) persons[] = { { id: (byte)(number) 4, name: (string) "jesper" }, { id: (byte)(number) 7, name: (string) "henriette" } }
(void()) print_person((struct Person*) print_person::person)
(byte*~) print_person::$0
(byte*~) print_person::$1
@@ -725,10 +725,10 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) DIGIT = (string) "0123456789"
+(const byte*) DIGIT[] = (string) "0123456789"
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(byte) Person::id
-(const byte*) Person::name = { fill( $10, 0) }
+(const byte*) Person::name[(number) $10] = { fill( $10, 0) }
(const byte*) SCREEN = (byte*) 1024
(const byte) SIZEOF_STRUCT_PERSON = (byte) $11
(byte) idx
@@ -741,7 +741,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@1
(label) main::@return
-(const struct Person*) persons = { { id: (byte) 4, name: (string) "jesper" }, { id: (byte) 7, name: (string) "henriette" } }
+(const struct Person*) persons[] = { { id: (byte) 4, name: (string) "jesper" }, { id: (byte) 7, name: (string) "henriette" } }
(void()) print_person((struct Person*) print_person::person)
(byte*~) print_person::$1 zp[2]:4 22.0
(byte*~) print_person::$2 zp[2]:6 22.0
diff --git a/src/test/ref/struct-ptr-31.sym b/src/test/ref/struct-ptr-31.sym
index 3ce58a8ce..57202c8e7 100644
--- a/src/test/ref/struct-ptr-31.sym
+++ b/src/test/ref/struct-ptr-31.sym
@@ -1,10 +1,10 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) DIGIT = (string) "0123456789"
+(const byte*) DIGIT[] = (string) "0123456789"
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(byte) Person::id
-(const byte*) Person::name = { fill( $10, 0) }
+(const byte*) Person::name[(number) $10] = { fill( $10, 0) }
(const byte*) SCREEN = (byte*) 1024
(const byte) SIZEOF_STRUCT_PERSON = (byte) $11
(byte) idx
@@ -17,7 +17,7 @@
(void()) main()
(label) main::@1
(label) main::@return
-(const struct Person*) persons = { { id: (byte) 4, name: (string) "jesper" }, { id: (byte) 7, name: (string) "henriette" } }
+(const struct Person*) persons[] = { { id: (byte) 4, name: (string) "jesper" }, { id: (byte) 7, name: (string) "henriette" } }
(void()) print_person((struct Person*) print_person::person)
(byte*~) print_person::$1 zp[2]:4 22.0
(byte*~) print_person::$2 zp[2]:6 22.0
diff --git a/src/test/ref/struct-ptr-32.log b/src/test/ref/struct-ptr-32.log
index 680b8f83d..1c7d215e4 100644
--- a/src/test/ref/struct-ptr-32.log
+++ b/src/test/ref/struct-ptr-32.log
@@ -69,7 +69,7 @@ SYMBOL TABLE SSA
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(word) Person::age
(byte) Person::id
-(const byte*) Person::name = { fill( $d, 0) }
+(const byte*) Person::name[(number) $d] = { fill( $d, 0) }
(const byte) SIZEOF_STRUCT_PERSON = (byte) $10
(void()) main()
(number~) main::$0
@@ -93,7 +93,7 @@ SYMBOL TABLE SSA
(struct Person*) main::person
(struct Person*) main::person#0
(struct Person*) main::person#1
-(const struct Person*) persons = { fill( 2, 0) }
+(const struct Person*) persons[(number) 2] = { fill( 2, 0) }
Adding number conversion cast (unumber) 0 in (number~) main::$0 ← (number) 0 * (const byte) SIZEOF_STRUCT_PERSON
Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (unumber)(number) 0 * (const byte) SIZEOF_STRUCT_PERSON
@@ -479,14 +479,14 @@ FINAL SYMBOL TABLE
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(word) Person::age
(byte) Person::id
-(const byte*) Person::name = { fill( $d, 0) }
+(const byte*) Person::name[(number) $d] = { fill( $d, 0) }
(const byte) SIZEOF_STRUCT_PERSON = (byte) $10
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
(struct Person*) main::person
(const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON
-(const struct Person*) persons = { fill( 2, 0) }
+(const struct Person*) persons[(number) 2] = { fill( 2, 0) }
diff --git a/src/test/ref/struct-ptr-32.sym b/src/test/ref/struct-ptr-32.sym
index e3d980b5a..74f5aa487 100644
--- a/src/test/ref/struct-ptr-32.sym
+++ b/src/test/ref/struct-ptr-32.sym
@@ -5,12 +5,12 @@
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(word) Person::age
(byte) Person::id
-(const byte*) Person::name = { fill( $d, 0) }
+(const byte*) Person::name[(number) $d] = { fill( $d, 0) }
(const byte) SIZEOF_STRUCT_PERSON = (byte) $10
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
(struct Person*) main::person
(const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON
-(const struct Person*) persons = { fill( 2, 0) }
+(const struct Person*) persons[(number) 2] = { fill( 2, 0) }
diff --git a/src/test/ref/struct-ptr-33.log b/src/test/ref/struct-ptr-33.log
index 853ca220b..b69b442d5 100644
--- a/src/test/ref/struct-ptr-33.log
+++ b/src/test/ref/struct-ptr-33.log
@@ -35,7 +35,7 @@ SYMBOL TABLE SSA
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(word) Person::age
(byte) Person::id
-(const byte*) Person::name = { fill( $d, 0) }
+(const byte*) Person::name[(number) $d] = { fill( $d, 0) }
(const byte) SIZEOF_STRUCT_PERSON = (byte) $10
(void()) main()
(byte*~) main::$0
@@ -45,7 +45,7 @@ SYMBOL TABLE SSA
(struct Person*) main::person
(struct Person*) main::person#0
(struct Person*) main::person#1
-(const struct Person*) persons = { { id: (byte)(number) 7, name: (string) "jesper", age: (word)(number) $141 }, { id: (byte)(number) 9, name: (string) "henry", age: (word)(number) $7b } }
+(const struct Person*) persons[(number) 2] = { { id: (byte)(number) 7, name: (string) "jesper", age: (word)(number) $141 }, { id: (byte)(number) 9, name: (string) "henry", age: (word)(number) $7b } }
Adding number conversion cast (unumber) 2 in *((const byte*) main::SCREEN + (number) 0) ← *((byte*~) main::$0 + (number) 2)
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← *((byte*~) main::$0 + (unumber)(number) 2)
@@ -282,14 +282,14 @@ FINAL SYMBOL TABLE
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(word) Person::age
(byte) Person::id
-(const byte*) Person::name = { fill( $d, 0) }
+(const byte*) Person::name[(number) $d] = { fill( $d, 0) }
(const byte) SIZEOF_STRUCT_PERSON = (byte) $10
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
(struct Person*) main::person
(const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON
-(const struct Person*) persons = { { id: (byte) 7, name: (string) "jesper", age: (word) $141 }, { id: (byte) 9, name: (string) "henry", age: (word) $7b } }
+(const struct Person*) persons[(number) 2] = { { id: (byte) 7, name: (string) "jesper", age: (word) $141 }, { id: (byte) 9, name: (string) "henry", age: (word) $7b } }
diff --git a/src/test/ref/struct-ptr-33.sym b/src/test/ref/struct-ptr-33.sym
index e56310d13..0e8c4d221 100644
--- a/src/test/ref/struct-ptr-33.sym
+++ b/src/test/ref/struct-ptr-33.sym
@@ -4,12 +4,12 @@
(const byte) OFFSET_STRUCT_PERSON_NAME = (byte) 1
(word) Person::age
(byte) Person::id
-(const byte*) Person::name = { fill( $d, 0) }
+(const byte*) Person::name[(number) $d] = { fill( $d, 0) }
(const byte) SIZEOF_STRUCT_PERSON = (byte) $10
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
(struct Person*) main::person
(const struct Person*) main::person#1 person = (const struct Person*) persons+(const byte) SIZEOF_STRUCT_PERSON
-(const struct Person*) persons = { { id: (byte) 7, name: (string) "jesper", age: (word) $141 }, { id: (byte) 9, name: (string) "henry", age: (word) $7b } }
+(const struct Person*) persons[(number) 2] = { { id: (byte) 7, name: (string) "jesper", age: (word) $141 }, { id: (byte) 9, name: (string) "henry", age: (word) $7b } }
diff --git a/src/test/ref/struct-ptr-7.log b/src/test/ref/struct-ptr-7.log
index 1004c27c8..6adc7394a 100644
--- a/src/test/ref/struct-ptr-7.log
+++ b/src/test/ref/struct-ptr-7.log
@@ -85,7 +85,7 @@ SYMBOL TABLE SSA
(byte*~) main::$9
(label) main::@return
(const byte*) main::SCREEN = (byte*)(number) $400
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
Adding number conversion cast (unumber) 0 in (number~) main::$0 ← (number) 0 * (const byte) SIZEOF_STRUCT_POINT
Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (unumber)(number) 0 * (const byte) SIZEOF_STRUCT_POINT
@@ -455,7 +455,7 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
diff --git a/src/test/ref/struct-ptr-7.sym b/src/test/ref/struct-ptr-7.sym
index 89ed3eb58..685959537 100644
--- a/src/test/ref/struct-ptr-7.sym
+++ b/src/test/ref/struct-ptr-7.sym
@@ -8,5 +8,5 @@
(void()) main()
(label) main::@return
(const byte*) main::SCREEN = (byte*) 1024
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
diff --git a/src/test/ref/struct-ptr-8.log b/src/test/ref/struct-ptr-8.log
index 92961019a..84c6f474a 100644
--- a/src/test/ref/struct-ptr-8.log
+++ b/src/test/ref/struct-ptr-8.log
@@ -103,7 +103,7 @@ SYMBOL TABLE SSA
(byte) main::idx#2
(byte) main::idx#3
(byte) main::idx#4
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
Adding number conversion cast (unumber) 2 in (number~) main::$0 ← (number) 2 + (byte) main::i#2
Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (unumber)(number) 2 + (byte) main::i#2
@@ -666,7 +666,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#2 reg byte x 16.5
(byte) main::idx#3 reg byte x 7.333333333333333
(byte) main::idx#4 reg byte x 11.0
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
zp[1]:2 [ main::i#2 main::i#1 ]
zp[1]:3 [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-8.sym b/src/test/ref/struct-ptr-8.sym
index 49013c01d..a83cb5c57 100644
--- a/src/test/ref/struct-ptr-8.sym
+++ b/src/test/ref/struct-ptr-8.sym
@@ -24,7 +24,7 @@
(byte) main::idx#2 reg byte x 16.5
(byte) main::idx#3 reg byte x 7.333333333333333
(byte) main::idx#4 reg byte x 11.0
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
zp[1]:2 [ main::i#2 main::i#1 ]
zp[1]:3 [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-9.log b/src/test/ref/struct-ptr-9.log
index f37e42fea..ac6a38b74 100644
--- a/src/test/ref/struct-ptr-9.log
+++ b/src/test/ref/struct-ptr-9.log
@@ -86,7 +86,7 @@ SYMBOL TABLE SSA
(byte) main::i1#0
(byte) main::i1#1
(byte) main::i1#2
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
Adding number conversion cast (unumber) 2 in *((byte*~) main::$4 + (byte~) main::$2) ← (number) 2
Successful SSA optimization PassNAddNumberTypeConversions
@@ -513,7 +513,7 @@ FINAL SYMBOL TABLE
(byte) main::i1
(byte) main::i1#1 reg byte x 16.5
(byte) main::i1#2 reg byte x 8.25
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/struct-ptr-9.sym b/src/test/ref/struct-ptr-9.sym
index 144d1eb4a..d31849863 100644
--- a/src/test/ref/struct-ptr-9.sym
+++ b/src/test/ref/struct-ptr-9.sym
@@ -17,7 +17,7 @@
(byte) main::i1
(byte) main::i1#1 reg byte x 16.5
(byte) main::i1#2 reg byte x 8.25
-(const struct Point*) points = { fill( 2, 0) }
+(const struct Point*) points[(number) 2] = { fill( 2, 0) }
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::i1#2 main::i1#1 ]
diff --git a/src/test/ref/test-comparisons-sword.log b/src/test/ref/test-comparisons-sword.log
index 0432d56d2..a19b8366e 100644
--- a/src/test/ref/test-comparisons-sword.log
+++ b/src/test/ref/test-comparisons-sword.log
@@ -735,12 +735,12 @@ SYMBOL TABLE SSA
(bool~) compare::$20
(bool~) compare::$21
(bool~) compare::$22
-(const string) compare::$23 = (string) "!="
-(const string) compare::$24 = (string) "=="
-(const string) compare::$25 = (string) ">="
-(const string) compare::$26 = (string) "> "
-(const string) compare::$27 = (string) "<="
-(const string) compare::$28 = (string) "< "
+(const string) compare::$23[] = (string) "!="
+(const string) compare::$24[] = (string) "=="
+(const string) compare::$25[] = (string) ">="
+(const string) compare::$26[] = (string) "> "
+(const string) compare::$27[] = (string) "<="
+(const string) compare::$28[] = (string) "< "
(bool~) compare::$3
(bool~) compare::$4
(bool~) compare::$5
@@ -1126,7 +1126,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -1211,7 +1211,7 @@ SYMBOL TABLE SSA
(word) print_word::w#0
(word) print_word::w#1
(word) print_word::w#2
-(const signed word*) swords = { (signed word)(number) -$6fed, (signed word)(number) $12, (signed word)(number) $7fed }
+(const signed word*) swords[] = { (signed word)(number) -$6fed, (signed word)(number) $12, (signed word)(number) $7fed }
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#2)
@@ -4378,7 +4378,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#81 print_char_cursor zp[2]:8 7.333333333333333
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0
(byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889
@@ -4415,7 +4415,7 @@ FINAL SYMBOL TABLE
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0 w zp[2]:10 2.0
-(const signed word*) swords = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed }
+(const signed word*) swords[] = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed }
zp[1]:2 [ main::i#2 main::i#1 ]
zp[1]:3 [ main::j#2 main::j#1 ]
diff --git a/src/test/ref/test-comparisons-sword.sym b/src/test/ref/test-comparisons-sword.sym
index 4fd74c1ec..2e5b42252 100644
--- a/src/test/ref/test-comparisons-sword.sym
+++ b/src/test/ref/test-comparisons-sword.sym
@@ -141,7 +141,7 @@
(byte*) print_char_cursor#81 print_char_cursor zp[2]:8 7.333333333333333
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0
(byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889
@@ -178,7 +178,7 @@
(label) print_word::@return
(word) print_word::w
(word) print_word::w#0 w zp[2]:10 2.0
-(const signed word*) swords = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed }
+(const signed word*) swords[] = { (signed word) -$6fed, (signed word) $12, (signed word) $7fed }
zp[1]:2 [ main::i#2 main::i#1 ]
zp[1]:3 [ main::j#2 main::j#1 ]
diff --git a/src/test/ref/test-comparisons-word.log b/src/test/ref/test-comparisons-word.log
index 769dbd0ac..84f073bc6 100644
--- a/src/test/ref/test-comparisons-word.log
+++ b/src/test/ref/test-comparisons-word.log
@@ -686,12 +686,12 @@ SYMBOL TABLE SSA
(bool~) compare::$21
(bool~) compare::$22
(bool~) compare::$23
-(const string) compare::$24 = (string) "!="
-(const string) compare::$25 = (string) "=="
-(const string) compare::$26 = (string) ">="
-(const string) compare::$27 = (string) "> "
-(const string) compare::$28 = (string) "<="
-(const string) compare::$29 = (string) "< "
+(const string) compare::$24[] = (string) "!="
+(const string) compare::$25[] = (string) "=="
+(const string) compare::$26[] = (string) ">="
+(const string) compare::$27[] = (string) "> "
+(const string) compare::$28[] = (string) "<="
+(const string) compare::$29[] = (string) "< "
(bool~) compare::$3
(bool~) compare::$4
(bool~) compare::$5
@@ -1067,7 +1067,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -1132,7 +1132,7 @@ SYMBOL TABLE SSA
(word) print_word::w#1
(word) print_word::w#2
(word) print_word::w#3
-(const word*) words = { (word)(number) $12, (word)(number) $3f34, (word)(number) $cfed }
+(const word*) words[] = { (word)(number) $12, (word)(number) $3f34, (word)(number) $cfed }
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#2)
@@ -4123,7 +4123,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#71 print_char_cursor zp[2]:10 7.333333333333333
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0
(byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889
@@ -4150,7 +4150,7 @@ FINAL SYMBOL TABLE
(word) print_word::w#0 w zp[2]:8 4.0
(word) print_word::w#1 w zp[2]:8 4.0
(word) print_word::w#2 w zp[2]:8 2.6666666666666665
-(const word*) words = { (word) $12, (word) $3f34, (word) $cfed }
+(const word*) words[] = { (word) $12, (word) $3f34, (word) $cfed }
zp[1]:2 [ main::i#2 main::i#1 ]
zp[1]:3 [ main::j#2 main::j#1 ]
diff --git a/src/test/ref/test-comparisons-word.sym b/src/test/ref/test-comparisons-word.sym
index 02d24c952..a7de53ae8 100644
--- a/src/test/ref/test-comparisons-word.sym
+++ b/src/test/ref/test-comparisons-word.sym
@@ -137,7 +137,7 @@
(byte*) print_char_cursor#71 print_char_cursor zp[2]:10 7.333333333333333
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:13 6401.0
(byte*) print_line_cursor#19 print_line_cursor zp[2]:13 233.8888888888889
@@ -164,7 +164,7 @@
(word) print_word::w#0 w zp[2]:8 4.0
(word) print_word::w#1 w zp[2]:8 4.0
(word) print_word::w#2 w zp[2]:8 2.6666666666666665
-(const word*) words = { (word) $12, (word) $3f34, (word) $cfed }
+(const word*) words[] = { (word) $12, (word) $3f34, (word) $cfed }
zp[1]:2 [ main::i#2 main::i#1 ]
zp[1]:3 [ main::j#2 main::j#1 ]
diff --git a/src/test/ref/test-comparisons.log b/src/test/ref/test-comparisons.log
index 979513588..42fd79214 100644
--- a/src/test/ref/test-comparisons.log
+++ b/src/test/ref/test-comparisons.log
@@ -1284,7 +1284,7 @@ SYMBOL TABLE SSA
(byte) main::b#7
(byte) main::b#8
(byte) main::b#9
-(const byte*) main::cs = { (byte)(number) 7, (byte)(number) $c7, (byte)(number) $37, (byte)(number) $97, (byte)(number) $67 }
+(const byte*) main::cs[(number) 5] = { (byte)(number) 7, (byte)(number) $c7, (byte)(number) $37, (byte)(number) $97, (byte)(number) $67 }
(byte) main::i
(byte) main::i#0
(byte) main::i#1
@@ -1354,26 +1354,26 @@ SYMBOL TABLE SSA
(byte) main::i#7
(byte) main::i#8
(byte) main::i#9
-(const string) main::op = (string) "< "
-(const string) main::op1 = (string) "< "
-(const string) main::op10 = (string) "<="
-(const string) main::op11 = (string) "<="
-(const string) main::op12 = (string) ">="
-(const string) main::op13 = (string) ">="
-(const string) main::op14 = (string) ">="
-(const string) main::op15 = (string) ">="
-(const string) main::op16 = (string) "=="
-(const string) main::op17 = (string) "=="
-(const string) main::op18 = (string) "=="
-(const string) main::op19 = (string) "=="
-(const string) main::op2 = (string) "< "
-(const string) main::op3 = (string) "< "
-(const string) main::op4 = (string) "> "
-(const string) main::op5 = (string) "> "
-(const string) main::op6 = (string) "> "
-(const string) main::op7 = (string) "> "
-(const string) main::op8 = (string) "<="
-(const string) main::op9 = (string) "<="
+(const string) main::op[] = (string) "< "
+(const string) main::op1[] = (string) "< "
+(const string) main::op10[] = (string) "<="
+(const string) main::op11[] = (string) "<="
+(const string) main::op12[] = (string) ">="
+(const string) main::op13[] = (string) ">="
+(const string) main::op14[] = (string) ">="
+(const string) main::op15[] = (string) ">="
+(const string) main::op16[] = (string) "=="
+(const string) main::op17[] = (string) "=="
+(const string) main::op18[] = (string) "=="
+(const string) main::op19[] = (string) "=="
+(const string) main::op2[] = (string) "< "
+(const string) main::op3[] = (string) "< "
+(const string) main::op4[] = (string) "> "
+(const string) main::op5[] = (string) "> "
+(const string) main::op6[] = (string) "> "
+(const string) main::op7[] = (string) "> "
+(const string) main::op8[] = (string) "<="
+(const string) main::op9[] = (string) "<="
(byte) main::r
(byte) main::r#0
(byte) main::r#1
@@ -1643,7 +1643,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -6769,15 +6769,15 @@ FINAL SYMBOL TABLE
(byte) main::a#10 a zp[1]:2 3.860927152317884
(byte) main::b
(byte) main::b#0 b zp[1]:12 0.9758064516129035
-(const byte*) main::cs = { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 }
+(const byte*) main::cs[(number) 5] = { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 }
(byte) main::i
(byte) main::i#1 i zp[1]:3 11.0
(byte) main::i#10 i zp[1]:3 0.8684210526315792
-(const string) main::op = (string) "< "
-(const string) main::op12 = (string) ">="
-(const string) main::op16 = (string) "=="
-(const string) main::op4 = (string) "> "
-(const string) main::op8 = (string) "<="
+(const string) main::op[] = (string) "< "
+(const string) main::op12[] = (string) ">="
+(const string) main::op16[] = (string) "=="
+(const string) main::op4[] = (string) "> "
+(const string) main::op8[] = (string) "<="
(byte) main::r
(byte) main::r#41 reg byte x 3.6666666666666665
(byte) main::r#42 reg byte x 5.5
@@ -6846,7 +6846,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#95 print_char_cursor zp[2]:7 222.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:10 3.2265625
(byte*) print_line_cursor#13 print_line_cursor zp[2]:10 204.0
diff --git a/src/test/ref/test-comparisons.sym b/src/test/ref/test-comparisons.sym
index d6fe97889..ce5e67f2e 100644
--- a/src/test/ref/test-comparisons.sym
+++ b/src/test/ref/test-comparisons.sym
@@ -79,15 +79,15 @@
(byte) main::a#10 a zp[1]:2 3.860927152317884
(byte) main::b
(byte) main::b#0 b zp[1]:12 0.9758064516129035
-(const byte*) main::cs = { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 }
+(const byte*) main::cs[(number) 5] = { (byte) 7, (byte) $c7, (byte) $37, (byte) $97, (byte) $67 }
(byte) main::i
(byte) main::i#1 i zp[1]:3 11.0
(byte) main::i#10 i zp[1]:3 0.8684210526315792
-(const string) main::op = (string) "< "
-(const string) main::op12 = (string) ">="
-(const string) main::op16 = (string) "=="
-(const string) main::op4 = (string) "> "
-(const string) main::op8 = (string) "<="
+(const string) main::op[] = (string) "< "
+(const string) main::op12[] = (string) ">="
+(const string) main::op16[] = (string) "=="
+(const string) main::op4[] = (string) "> "
+(const string) main::op8[] = (string) "<="
(byte) main::r
(byte) main::r#41 reg byte x 3.6666666666666665
(byte) main::r#42 reg byte x 5.5
@@ -156,7 +156,7 @@
(byte*) print_char_cursor#95 print_char_cursor zp[2]:7 222.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:10 3.2265625
(byte*) print_line_cursor#13 print_line_cursor zp[2]:10 204.0
diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log
index 4a557ee2a..0dda50aba 100644
--- a/src/test/ref/test-division.log
+++ b/src/test/ref/test-division.log
@@ -2126,7 +2126,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -2539,13 +2539,13 @@ SYMBOL TABLE SSA
(signed word) test_16s::dividend
(signed word) test_16s::dividend#0
(signed word) test_16s::dividend#1
-(const signed word*) test_16s::dividends = { (signed word)(number) $7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff, (signed word)(number) -$7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff }
+(const signed word*) test_16s::dividends[] = { (signed word)(number) $7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff, (signed word)(number) -$7fff, (signed word)(number) $7fff, (signed word)(number) -$7fff }
(signed word) test_16s::divisor
(signed word) test_16s::divisor#0
(signed word) test_16s::divisor#1
(signed word) test_16s::divisor#2
(signed word) test_16s::divisor#3
-(const signed word*) test_16s::divisors = { (signed word)(number) 5, (signed word)(number) -7, (signed word)(number) $b, (signed word)(number) -$d, (signed word)(number) -$11, (signed word)(number) $13 }
+(const signed word*) test_16s::divisors[] = { (signed word)(number) 5, (signed word)(number) -7, (signed word)(number) $b, (signed word)(number) -$d, (signed word)(number) -$11, (signed word)(number) $13 }
(byte) test_16s::i
(byte) test_16s::i#0
(byte) test_16s::i#1
@@ -2565,9 +2565,9 @@ SYMBOL TABLE SSA
(signed word) test_16s::res#2
(signed word) test_16s::res#3
(signed word) test_16s::res#4
-(const string) test_16s::str = (string) " / "
-(const string) test_16s::str1 = (string) " = "
-(const string) test_16s::str2 = (string) " "
+(const string) test_16s::str[] = (string) " / "
+(const string) test_16s::str1[] = (string) " = "
+(const string) test_16s::str2[] = (string) " "
(void()) test_16u()
(word~) test_16u::$0
(byte~) test_16u::$10
@@ -2587,13 +2587,13 @@ SYMBOL TABLE SSA
(word) test_16u::dividend
(word) test_16u::dividend#0
(word) test_16u::dividend#1
-(const word*) test_16u::dividends = { (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff }
+(const word*) test_16u::dividends[] = { (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff, (word)(number) $ffff }
(word) test_16u::divisor
(word) test_16u::divisor#0
(word) test_16u::divisor#1
(word) test_16u::divisor#2
(word) test_16u::divisor#3
-(const word*) test_16u::divisors = { (word)(number) 5, (word)(number) 7, (word)(number) $b, (word)(number) $d, (word)(number) $11, (word)(number) $13 }
+(const word*) test_16u::divisors[] = { (word)(number) 5, (word)(number) 7, (word)(number) $b, (word)(number) $d, (word)(number) $11, (word)(number) $13 }
(byte) test_16u::i
(byte) test_16u::i#0
(byte) test_16u::i#1
@@ -2613,9 +2613,9 @@ SYMBOL TABLE SSA
(word) test_16u::res#2
(word) test_16u::res#3
(word) test_16u::res#4
-(const string) test_16u::str = (string) " / "
-(const string) test_16u::str1 = (string) " = "
-(const string) test_16u::str2 = (string) " "
+(const string) test_16u::str[] = (string) " / "
+(const string) test_16u::str1[] = (string) " = "
+(const string) test_16u::str2[] = (string) " "
(void()) test_8s()
(signed byte~) test_8s::$0
(bool~) test_8s::$9
@@ -2633,13 +2633,13 @@ SYMBOL TABLE SSA
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0
(signed byte) test_8s::dividend#1
-(const signed byte*) test_8s::dividends = { (signed byte)(number) $7f, (signed byte)(number) -$7f, (signed byte)(number) -$7f, (signed byte)(number) $7f, (signed byte)(number) $7f, (signed byte)(number) $7f }
+(const signed byte*) test_8s::dividends[] = { (signed byte)(number) $7f, (signed byte)(number) -$7f, (signed byte)(number) -$7f, (signed byte)(number) $7f, (signed byte)(number) $7f, (signed byte)(number) $7f }
(signed byte) test_8s::divisor
(signed byte) test_8s::divisor#0
(signed byte) test_8s::divisor#1
(signed byte) test_8s::divisor#2
(signed byte) test_8s::divisor#3
-(const signed byte*) test_8s::divisors = { (signed byte)(number) 5, (signed byte)(number) 7, (signed byte)(number) -$b, (signed byte)(number) -$d, (signed byte)(number) $11, (signed byte)(number) $13 }
+(const signed byte*) test_8s::divisors[] = { (signed byte)(number) 5, (signed byte)(number) 7, (signed byte)(number) -$b, (signed byte)(number) -$d, (signed byte)(number) $11, (signed byte)(number) $13 }
(byte) test_8s::i
(byte) test_8s::i#0
(byte) test_8s::i#1
@@ -2659,9 +2659,9 @@ SYMBOL TABLE SSA
(signed byte) test_8s::res#2
(signed byte) test_8s::res#3
(signed byte) test_8s::res#4
-(const string) test_8s::str = (string) " / "
-(const string) test_8s::str1 = (string) " = "
-(const string) test_8s::str2 = (string) " "
+(const string) test_8s::str[] = (string) " / "
+(const string) test_8s::str1[] = (string) " = "
+(const string) test_8s::str2[] = (string) " "
(void()) test_8u()
(byte~) test_8u::$0
(bool~) test_8u::$9
@@ -2679,13 +2679,13 @@ SYMBOL TABLE SSA
(byte) test_8u::dividend
(byte) test_8u::dividend#0
(byte) test_8u::dividend#1
-(const byte*) test_8u::dividends = { (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff }
+(const byte*) test_8u::dividends[] = { (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff, (byte)(number) $ff }
(byte) test_8u::divisor
(byte) test_8u::divisor#0
(byte) test_8u::divisor#1
(byte) test_8u::divisor#2
(byte) test_8u::divisor#3
-(const byte*) test_8u::divisors = { (byte)(number) 5, (byte)(number) 7, (byte)(number) $b, (byte)(number) $d, (byte)(number) $11, (byte)(number) $13 }
+(const byte*) test_8u::divisors[] = { (byte)(number) 5, (byte)(number) 7, (byte)(number) $b, (byte)(number) $d, (byte)(number) $11, (byte)(number) $13 }
(byte) test_8u::i
(byte) test_8u::i#0
(byte) test_8u::i#1
@@ -2705,9 +2705,9 @@ SYMBOL TABLE SSA
(byte) test_8u::res#2
(byte) test_8u::res#3
(byte) test_8u::res#4
-(const string) test_8u::str = (string) " / "
-(const string) test_8u::str1 = (string) " = "
-(const string) test_8u::str2 = (string) " "
+(const string) test_8u::str[] = (string) " / "
+(const string) test_8u::str1[] = (string) " = "
+(const string) test_8u::str2[] = (string) " "
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#13)
@@ -9757,7 +9757,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#84 print_char_cursor zp[2]:5 8.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:15 3.833333333333334
(byte*) print_line_cursor#20 print_line_cursor zp[2]:15 204.0
@@ -9825,9 +9825,9 @@ FINAL SYMBOL TABLE
(signed byte) rem8s#33 reg byte x 4.0
(byte) rem8u
(byte) rem8u#17 reg byte x 0.5
-(const string) str = (string) " / "
-(const string) str1 = (string) " = "
-(const string) str2 = (string) " "
+(const string) str[] = (string) " / "
+(const string) str1[] = (string) " = "
+(const string) str2[] = (string) " "
(void()) test_16s()
(byte~) test_16s::$11 reg byte x 16.5
(label) test_16s::@1
@@ -9843,10 +9843,10 @@ FINAL SYMBOL TABLE
(label) test_16s::@return
(signed word) test_16s::dividend
(signed word) test_16s::dividend#0 dividend zp[2]:3 4.714285714285714
-(const signed word*) test_16s::dividends = { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff }
+(const signed word*) test_16s::dividends[] = { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff }
(signed word) test_16s::divisor
(signed word) test_16s::divisor#0 divisor zp[2]:17 3.0
-(const signed word*) test_16s::divisors = { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 }
+(const signed word*) test_16s::divisors[] = { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 }
(byte) test_16s::i
(byte) test_16s::i#1 i zp[1]:13 16.5
(byte) test_16s::i#10 i zp[1]:13 1.2692307692307692
@@ -9867,10 +9867,10 @@ FINAL SYMBOL TABLE
(label) test_16u::@return
(word) test_16u::dividend
(word) test_16u::dividend#0 dividend zp[2]:3 4.714285714285714
-(const word*) test_16u::dividends = { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff }
+(const word*) test_16u::dividends[] = { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff }
(word) test_16u::divisor
(word) test_16u::divisor#0 divisor zp[2]:7 3.0
-(const word*) test_16u::divisors = { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 }
+(const word*) test_16u::divisors[] = { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 }
(byte) test_16u::i
(byte) test_16u::i#1 i zp[1]:14 16.5
(byte) test_16u::i#10 i zp[1]:14 1.2692307692307692
@@ -9890,10 +9890,10 @@ FINAL SYMBOL TABLE
(label) test_8s::@return
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0 dividend zp[1]:2 4.714285714285714
-(const signed byte*) test_8s::dividends = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f }
+(const signed byte*) test_8s::dividends[] = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f }
(signed byte) test_8s::divisor
(signed byte) test_8s::divisor#0 divisor zp[1]:19 3.0
-(const signed byte*) test_8s::divisors = { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 }
+(const signed byte*) test_8s::divisors[] = { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 }
(byte) test_8s::i
(byte) test_8s::i#1 i zp[1]:13 16.5
(byte) test_8s::i#10 i zp[1]:13 1.76
@@ -9914,10 +9914,10 @@ FINAL SYMBOL TABLE
(label) test_8u::@return
(byte) test_8u::dividend
(byte) test_8u::dividend#0 dividend zp[1]:2 4.714285714285714
-(const byte*) test_8u::dividends = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff }
+(const byte*) test_8u::dividends[] = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff }
(byte) test_8u::divisor
(byte) test_8u::divisor#0 divisor zp[1]:21 3.3000000000000003
-(const byte*) test_8u::divisors = { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 }
+(const byte*) test_8u::divisors[] = { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 }
(byte) test_8u::i
(byte) test_8u::i#1 i zp[1]:19 11.0
(byte) test_8u::i#10 i zp[1]:19 1.8333333333333333
diff --git a/src/test/ref/test-division.sym b/src/test/ref/test-division.sym
index fe4e21e71..caa9452a4 100644
--- a/src/test/ref/test-division.sym
+++ b/src/test/ref/test-division.sym
@@ -244,7 +244,7 @@
(byte*) print_char_cursor#84 print_char_cursor zp[2]:5 8.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:15 3.833333333333334
(byte*) print_line_cursor#20 print_line_cursor zp[2]:15 204.0
@@ -312,9 +312,9 @@
(signed byte) rem8s#33 reg byte x 4.0
(byte) rem8u
(byte) rem8u#17 reg byte x 0.5
-(const string) str = (string) " / "
-(const string) str1 = (string) " = "
-(const string) str2 = (string) " "
+(const string) str[] = (string) " / "
+(const string) str1[] = (string) " = "
+(const string) str2[] = (string) " "
(void()) test_16s()
(byte~) test_16s::$11 reg byte x 16.5
(label) test_16s::@1
@@ -330,10 +330,10 @@
(label) test_16s::@return
(signed word) test_16s::dividend
(signed word) test_16s::dividend#0 dividend zp[2]:3 4.714285714285714
-(const signed word*) test_16s::dividends = { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff }
+(const signed word*) test_16s::dividends[] = { (signed word) $7fff, (signed word) $7fff, (signed word) -$7fff, (signed word) -$7fff, (signed word) $7fff, (signed word) -$7fff }
(signed word) test_16s::divisor
(signed word) test_16s::divisor#0 divisor zp[2]:17 3.0
-(const signed word*) test_16s::divisors = { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 }
+(const signed word*) test_16s::divisors[] = { (signed word) 5, (signed word) -7, (signed word) $b, (signed word) -$d, (signed word) -$11, (signed word) $13 }
(byte) test_16s::i
(byte) test_16s::i#1 i zp[1]:13 16.5
(byte) test_16s::i#10 i zp[1]:13 1.2692307692307692
@@ -354,10 +354,10 @@
(label) test_16u::@return
(word) test_16u::dividend
(word) test_16u::dividend#0 dividend zp[2]:3 4.714285714285714
-(const word*) test_16u::dividends = { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff }
+(const word*) test_16u::dividends[] = { (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff, (word) $ffff }
(word) test_16u::divisor
(word) test_16u::divisor#0 divisor zp[2]:7 3.0
-(const word*) test_16u::divisors = { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 }
+(const word*) test_16u::divisors[] = { (word) 5, (word) 7, (word) $b, (word) $d, (word) $11, (word) $13 }
(byte) test_16u::i
(byte) test_16u::i#1 i zp[1]:14 16.5
(byte) test_16u::i#10 i zp[1]:14 1.2692307692307692
@@ -377,10 +377,10 @@
(label) test_8s::@return
(signed byte) test_8s::dividend
(signed byte) test_8s::dividend#0 dividend zp[1]:2 4.714285714285714
-(const signed byte*) test_8s::dividends = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f }
+(const signed byte*) test_8s::dividends[] = { (signed byte) $7f, (signed byte) -$7f, (signed byte) -$7f, (signed byte) $7f, (signed byte) $7f, (signed byte) $7f }
(signed byte) test_8s::divisor
(signed byte) test_8s::divisor#0 divisor zp[1]:19 3.0
-(const signed byte*) test_8s::divisors = { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 }
+(const signed byte*) test_8s::divisors[] = { (signed byte) 5, (signed byte) 7, (signed byte) -$b, (signed byte) -$d, (signed byte) $11, (signed byte) $13 }
(byte) test_8s::i
(byte) test_8s::i#1 i zp[1]:13 16.5
(byte) test_8s::i#10 i zp[1]:13 1.76
@@ -401,10 +401,10 @@
(label) test_8u::@return
(byte) test_8u::dividend
(byte) test_8u::dividend#0 dividend zp[1]:2 4.714285714285714
-(const byte*) test_8u::dividends = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff }
+(const byte*) test_8u::dividends[] = { (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff }
(byte) test_8u::divisor
(byte) test_8u::divisor#0 divisor zp[1]:21 3.3000000000000003
-(const byte*) test_8u::divisors = { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 }
+(const byte*) test_8u::divisors[] = { (byte) 5, (byte) 7, (byte) $b, (byte) $d, (byte) $11, (byte) $13 }
(byte) test_8u::i
(byte) test_8u::i#1 i zp[1]:19 11.0
(byte) test_8u::i#10 i zp[1]:19 1.8333333333333333
diff --git a/src/test/ref/test-keyboard-space.log b/src/test/ref/test-keyboard-space.log
index c7b9f5861..33ec7b113 100644
--- a/src/test/ref/test-keyboard-space.log
+++ b/src/test/ref/test-keyboard-space.log
@@ -148,7 +148,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#4
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -163,7 +163,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) main()
(bool~) main::$1
(byte~) main::$2
@@ -796,7 +796,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -804,7 +804,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1
diff --git a/src/test/ref/test-keyboard-space.sym b/src/test/ref/test-keyboard-space.sym
index c71b766e4..f658894ab 100644
--- a/src/test/ref/test-keyboard-space.sym
+++ b/src/test/ref/test-keyboard-space.sym
@@ -24,7 +24,7 @@
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -32,7 +32,7 @@
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1
diff --git a/src/test/ref/test-keyboard.log b/src/test/ref/test-keyboard.log
index 6a71be647..d39c3c619 100644
--- a/src/test/ref/test-keyboard.log
+++ b/src/test/ref/test-keyboard.log
@@ -314,7 +314,7 @@ SYMBOL TABLE SSA
(const byte) KEY_Y = (number) $19
(const byte) KEY_Z = (number) $c
(const byte*) RASTER = (byte*)(number) $d012
-(const byte*) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f }
+(const byte*) keyboard_char_keycodes[] = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte)(number) $3f, (const byte) KEY_POUND, (byte)(number) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (byte)(number) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte)(number) $3f, (const byte) KEY_EQUALS, (byte)(number) $3f, (byte)(number) $3f }
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -349,7 +349,7 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#4
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(const byte*) keyboard_matrix_col_bitmask = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -367,7 +367,7 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid#0
(byte) keyboard_matrix_read::rowid#1
(byte) keyboard_matrix_read::rowid#2
-(const byte*) keyboard_matrix_row_bitmask = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte)(number) $fe, (byte)(number) $fd, (byte)(number) $fb, (byte)(number) $f7, (byte)(number) $ef, (byte)(number) $df, (byte)(number) $bf, (byte)(number) $7f }
(void()) main()
(bool~) main::$1
(byte*~) main::$10
@@ -2172,7 +2172,7 @@ FINAL SYMBOL TABLE
(const byte) KEY_Y = (number) $19
(const byte) KEY_Z = (number) $c
(const byte*) RASTER = (byte*) 53266
-(const byte*) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
+(const byte*) keyboard_char_keycodes[] = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -2195,7 +2195,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -2207,7 +2207,7 @@ FINAL SYMBOL TABLE
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
(byte) keyboard_matrix_read::rowid#1 reg byte y 202.0
(byte) keyboard_matrix_read::rowid#2 reg byte y 105.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$14 reg byte a 202.0
(byte~) main::$4 reg byte a 2002.0
diff --git a/src/test/ref/test-keyboard.sym b/src/test/ref/test-keyboard.sym
index bc64caa90..b5b5c478a 100644
--- a/src/test/ref/test-keyboard.sym
+++ b/src/test/ref/test-keyboard.sym
@@ -56,7 +56,7 @@
(const byte) KEY_Y = (number) $19
(const byte) KEY_Z = (number) $c
(const byte*) RASTER = (byte*) 53266
-(const byte*) keyboard_char_keycodes = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
+(const byte*) keyboard_char_keycodes[] = { (const byte) KEY_AT, (const byte) KEY_A, (const byte) KEY_B, (const byte) KEY_C, (const byte) KEY_D, (const byte) KEY_E, (const byte) KEY_F, (const byte) KEY_G, (const byte) KEY_H, (const byte) KEY_I, (const byte) KEY_J, (const byte) KEY_K, (const byte) KEY_L, (const byte) KEY_M, (const byte) KEY_N, (const byte) KEY_O, (const byte) KEY_P, (const byte) KEY_Q, (const byte) KEY_R, (const byte) KEY_S, (const byte) KEY_T, (const byte) KEY_U, (const byte) KEY_V, (const byte) KEY_W, (const byte) KEY_X, (const byte) KEY_Y, (const byte) KEY_Z, (byte) $3f, (const byte) KEY_POUND, (byte) $3f, (const byte) KEY_ARROW_UP, (const byte) KEY_ARROW_LEFT, (const byte) KEY_SPACE, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (byte) $3f, (const byte) KEY_ASTERISK, (const byte) KEY_PLUS, (const byte) KEY_COMMA, (const byte) KEY_MINUS, (const byte) KEY_DOT, (const byte) KEY_SLASH, (const byte) KEY_0, (const byte) KEY_1, (const byte) KEY_2, (const byte) KEY_3, (const byte) KEY_4, (const byte) KEY_5, (const byte) KEY_6, (const byte) KEY_7, (const byte) KEY_8, (const byte) KEY_9, (const byte) KEY_COLON, (const byte) KEY_SEMICOLON, (byte) $3f, (const byte) KEY_EQUALS, (byte) $3f, (byte) $3f }
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -79,7 +79,7 @@
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
+(const byte*) keyboard_matrix_col_bitmask[(number) 8] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -91,7 +91,7 @@
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
(byte) keyboard_matrix_read::rowid#1 reg byte y 202.0
(byte) keyboard_matrix_read::rowid#2 reg byte y 105.0
-(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
+(const byte*) keyboard_matrix_row_bitmask[(number) 8] = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
(void()) main()
(byte~) main::$14 reg byte a 202.0
(byte~) main::$4 reg byte a 2002.0
diff --git a/src/test/ref/test-lowhigh.log b/src/test/ref/test-lowhigh.log
index f309acd5b..caea165e2 100644
--- a/src/test/ref/test-lowhigh.log
+++ b/src/test/ref/test-lowhigh.log
@@ -673,7 +673,7 @@ SYMBOL TABLE SSA
(dword) print_dword::dw#0
(dword) print_dword::dw#1
(dword) print_dword::dw#2
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -2855,7 +2855,7 @@ FINAL SYMBOL TABLE
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:10 3.75
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:16 54.16666666666666
(byte*) print_line_cursor#15 print_line_cursor_1 zp[2]:6 0.325
diff --git a/src/test/ref/test-lowhigh.sym b/src/test/ref/test-lowhigh.sym
index 5ed2d44bf..6356f1cdb 100644
--- a/src/test/ref/test-lowhigh.sym
+++ b/src/test/ref/test-lowhigh.sym
@@ -86,7 +86,7 @@
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp[4]:10 3.75
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:16 54.16666666666666
(byte*) print_line_cursor#15 print_line_cursor_1 zp[2]:6 0.325
diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log
index 3e6d54332..2c1cd31d7 100644
--- a/src/test/ref/test-multiply-16bit.log
+++ b/src/test/ref/test-multiply-16bit.log
@@ -1784,8 +1784,8 @@ SYMBOL TABLE SSA
(byte) mul16s_compare::ok#2
(byte) mul16s_compare::ok#3
(byte) mul16s_compare::ok#4
-(const string) mul16s_compare::str = (string) "."
-(const string) mul16s_compare::str1 = (string) "signed word multiply results match!"
+(const string) mul16s_compare::str[] = (string) "."
+(const string) mul16s_compare::str1[] = (string) "signed word multiply results match!"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1
(label) mul16s_error::@10
@@ -1839,11 +1839,11 @@ SYMBOL TABLE SSA
(signed dword) mul16s_error::ms#4
(signed dword) mul16s_error::ms#5
(signed dword) mul16s_error::ms#6
-(const string) mul16s_error::str = (string) "signed word multiply mismatch "
-(const string) mul16s_error::str1 = (string) "*"
-(const string) mul16s_error::str2 = (string) " slow:"
-(const string) mul16s_error::str3 = (string) " / normal:"
-(const string) mul16s_error::str4 = (string) " / fast:"
+(const string) mul16s_error::str[] = (string) "signed word multiply mismatch "
+(const string) mul16s_error::str1[] = (string) "*"
+(const string) mul16s_error::str2[] = (string) " slow:"
+(const string) mul16s_error::str3[] = (string) " / normal:"
+(const string) mul16s_error::str4[] = (string) " / fast:"
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(bool~) mul16u::$0
(number~) mul16u::$1
@@ -2016,8 +2016,8 @@ SYMBOL TABLE SSA
(byte) mul16u_compare::ok#2
(byte) mul16u_compare::ok#3
(byte) mul16u_compare::ok#4
-(const string) mul16u_compare::str = (string) "."
-(const string) mul16u_compare::str1 = (string) "word multiply results match!"
+(const string) mul16u_compare::str[] = (string) "."
+(const string) mul16u_compare::str1[] = (string) "word multiply results match!"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1
(label) mul16u_error::@10
@@ -2071,11 +2071,11 @@ SYMBOL TABLE SSA
(dword) mul16u_error::ms#4
(dword) mul16u_error::ms#5
(dword) mul16u_error::ms#6
-(const string) mul16u_error::str = (string) "multiply mismatch "
-(const string) mul16u_error::str1 = (string) "*"
-(const string) mul16u_error::str2 = (string) " slow:"
-(const string) mul16u_error::str3 = (string) " / normal:"
-(const string) mul16u_error::str4 = (string) " / fast:"
+(const string) mul16u_error::str[] = (string) "multiply mismatch "
+(const string) mul16u_error::str1[] = (string) "*"
+(const string) mul16u_error::str2[] = (string) " slow:"
+(const string) mul16u_error::str3[] = (string) " / normal:"
+(const string) mul16u_error::str4[] = (string) " / fast:"
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$0
(word~) mulf16s::$1
@@ -2233,10 +2233,10 @@ SYMBOL TABLE SSA
(byte) mulf_init::x_255#3
(byte) mulf_init::x_255#4
(byte) mulf_init::x_255#5
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
(bool~) muls16s::$0
(bool~) muls16s::$1
@@ -2559,7 +2559,7 @@ SYMBOL TABLE SSA
(dword) print_dword::dw#3
(dword) print_dword::dw#4
(dword) print_dword::dw#5
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -11084,7 +11084,7 @@ FINAL SYMBOL TABLE
(byte) mul16s_compare::ok
(byte) mul16s_compare::ok#3 reg byte x 202.0
(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul16s_compare::str1 = (string) "signed word multiply results match!"
+(const string) mul16s_compare::str1[] = (string) "signed word multiply results match!"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1
(label) mul16s_error::@10
@@ -11107,7 +11107,7 @@ FINAL SYMBOL TABLE
(signed dword) mul16s_error::mn#0 mn zp[4]:6 0.25
(signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0 ms zp[4]:2 0.3076923076923077
-(const string) mul16s_error::str = (string) "signed word multiply mismatch "
+(const string) mul16s_error::str[] = (string) "signed word multiply mismatch "
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 2002.0
(label) mul16u::@1
@@ -11175,7 +11175,7 @@ FINAL SYMBOL TABLE
(byte) mul16u_compare::ok
(byte) mul16u_compare::ok#3 reg byte x 202.0
(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul16u_compare::str1 = (string) "word multiply results match!"
+(const string) mul16u_compare::str1[] = (string) "word multiply results match!"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1
(label) mul16u_error::@10
@@ -11198,7 +11198,7 @@ FINAL SYMBOL TABLE
(dword) mul16u_error::mn#0 mn zp[4]:6 0.25
(dword) mul16u_error::ms
(dword) mul16u_error::ms#0 ms zp[4]:2 0.3076923076923077
-(const string) mul16u_error::str = (string) "multiply mismatch "
+(const string) mul16u_error::str[] = (string) "multiply mismatch "
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$13 zp[2]:30 4.0
(word~) mulf16s::$16 zp[2]:28 4.0
@@ -11284,10 +11284,10 @@ FINAL SYMBOL TABLE
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
(label) muls16s::@1
(label) muls16s::@2
@@ -11373,7 +11373,7 @@ FINAL SYMBOL TABLE
(dword) print_dword::dw#2 dw zp[4]:2 4.0
(dword) print_dword::dw#3 dw zp[4]:2 4.0
(dword) print_dword::dw#4 dw zp[4]:2 3.9999999999999996
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:19 0.6025641025641025
(byte*) print_line_cursor#22 print_line_cursor zp[2]:19 24.0
@@ -11425,11 +11425,11 @@ FINAL SYMBOL TABLE
(word) print_word::w#3 w zp[2]:14 4.0
(word) print_word::w#4 w zp[2]:14 4.0
(word) print_word::w#5 w zp[2]:14 4.666666666666666
-(const string) str = (string) "."
-(const string) str1 = (string) "*"
-(const string) str2 = (string) " slow:"
-(const string) str3 = (string) " / normal:"
-(const string) str4 = (string) " / fast:"
+(const string) str[] = (string) "."
+(const string) str1[] = (string) "*"
+(const string) str2[] = (string) " slow:"
+(const string) str3[] = (string) " / normal:"
+(const string) str4[] = (string) " / fast:"
reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ]
reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
diff --git a/src/test/ref/test-multiply-16bit.sym b/src/test/ref/test-multiply-16bit.sym
index cc916a4ec..c2482200c 100644
--- a/src/test/ref/test-multiply-16bit.sym
+++ b/src/test/ref/test-multiply-16bit.sym
@@ -91,7 +91,7 @@
(byte) mul16s_compare::ok
(byte) mul16s_compare::ok#3 reg byte x 202.0
(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul16s_compare::str1 = (string) "signed word multiply results match!"
+(const string) mul16s_compare::str1[] = (string) "signed word multiply results match!"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1
(label) mul16s_error::@10
@@ -114,7 +114,7 @@
(signed dword) mul16s_error::mn#0 mn zp[4]:6 0.25
(signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0 ms zp[4]:2 0.3076923076923077
-(const string) mul16s_error::str = (string) "signed word multiply mismatch "
+(const string) mul16s_error::str[] = (string) "signed word multiply mismatch "
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 2002.0
(label) mul16u::@1
@@ -182,7 +182,7 @@
(byte) mul16u_compare::ok
(byte) mul16u_compare::ok#3 reg byte x 202.0
(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul16u_compare::str1 = (string) "word multiply results match!"
+(const string) mul16u_compare::str1[] = (string) "word multiply results match!"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1
(label) mul16u_error::@10
@@ -205,7 +205,7 @@
(dword) mul16u_error::mn#0 mn zp[4]:6 0.25
(dword) mul16u_error::ms
(dword) mul16u_error::ms#0 ms zp[4]:2 0.3076923076923077
-(const string) mul16u_error::str = (string) "multiply mismatch "
+(const string) mul16u_error::str[] = (string) "multiply mismatch "
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$13 zp[2]:30 4.0
(word~) mulf16s::$16 zp[2]:28 4.0
@@ -291,10 +291,10 @@
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
(byte) mulf_init::x_255#2 reg byte x 8.8
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
(label) muls16s::@1
(label) muls16s::@2
@@ -380,7 +380,7 @@
(dword) print_dword::dw#2 dw zp[4]:2 4.0
(dword) print_dword::dw#3 dw zp[4]:2 4.0
(dword) print_dword::dw#4 dw zp[4]:2 3.9999999999999996
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:19 0.6025641025641025
(byte*) print_line_cursor#22 print_line_cursor zp[2]:19 24.0
@@ -432,11 +432,11 @@
(word) print_word::w#3 w zp[2]:14 4.0
(word) print_word::w#4 w zp[2]:14 4.0
(word) print_word::w#5 w zp[2]:14 4.666666666666666
-(const string) str = (string) "."
-(const string) str1 = (string) "*"
-(const string) str2 = (string) " slow:"
-(const string) str3 = (string) " / normal:"
-(const string) str4 = (string) " / fast:"
+(const string) str[] = (string) "."
+(const string) str1[] = (string) "*"
+(const string) str2[] = (string) " slow:"
+(const string) str3[] = (string) " / normal:"
+(const string) str4[] = (string) " / fast:"
reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ]
reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
diff --git a/src/test/ref/test-multiply-8bit.log b/src/test/ref/test-multiply-8bit.log
index a5c30225f..965c8c06f 100644
--- a/src/test/ref/test-multiply-8bit.log
+++ b/src/test/ref/test-multiply-8bit.log
@@ -1848,7 +1848,7 @@ SYMBOL TABLE SSA
(byte) mul8s_compare::ok#2
(byte) mul8s_compare::ok#3
(byte) mul8s_compare::ok#4
-(const string) mul8s_compare::str = (string) "signed multiply results match!"
+(const string) mul8s_compare::str[] = (string) "signed multiply results match!"
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(label) mul8s_error::@1
(label) mul8s_error::@10
@@ -1902,11 +1902,11 @@ SYMBOL TABLE SSA
(signed word) mul8s_error::ms#4
(signed word) mul8s_error::ms#5
(signed word) mul8s_error::ms#6
-(const string) mul8s_error::str = (string) "signed multiply mismatch "
-(const string) mul8s_error::str1 = (string) "*"
-(const string) mul8s_error::str2 = (string) " slow:"
-(const string) mul8s_error::str3 = (string) " / normal:"
-(const string) mul8s_error::str4 = (string) " / fast:"
+(const string) mul8s_error::str[] = (string) "signed multiply mismatch "
+(const string) mul8s_error::str1[] = (string) "*"
+(const string) mul8s_error::str2[] = (string) " slow:"
+(const string) mul8s_error::str3[] = (string) " / normal:"
+(const string) mul8s_error::str4[] = (string) " / fast:"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(bool~) mul8u::$0
(number~) mul8u::$1
@@ -2044,7 +2044,7 @@ SYMBOL TABLE SSA
(byte) mul8u_compare::ok#2
(byte) mul8u_compare::ok#3
(byte) mul8u_compare::ok#4
-(const string) mul8u_compare::str = (string) "multiply results match!"
+(const string) mul8u_compare::str[] = (string) "multiply results match!"
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(label) mul8u_error::@1
(label) mul8u_error::@10
@@ -2098,15 +2098,15 @@ SYMBOL TABLE SSA
(word) mul8u_error::ms#4
(word) mul8u_error::ms#5
(word) mul8u_error::ms#6
-(const string) mul8u_error::str = (string) "multiply mismatch "
-(const string) mul8u_error::str1 = (string) "*"
-(const string) mul8u_error::str2 = (string) " slow:"
-(const string) mul8u_error::str3 = (string) " / normal:"
-(const string) mul8u_error::str4 = (string) " / fast:"
-(const byte*) mula_sqr1_hi = { fill( $200, 0) }
-(const byte*) mula_sqr1_lo = { fill( $200, 0) }
-(const byte*) mula_sqr2_hi = { fill( $200, 0) }
-(const byte*) mula_sqr2_lo = { fill( $200, 0) }
+(const string) mul8u_error::str[] = (string) "multiply mismatch "
+(const string) mul8u_error::str1[] = (string) "*"
+(const string) mul8u_error::str2[] = (string) " slow:"
+(const string) mul8u_error::str3[] = (string) " / normal:"
+(const string) mul8u_error::str4[] = (string) " / fast:"
+(const byte*) mula_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr2_lo[(number) $200] = { fill( $200, 0) }
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(signed word~) mulf8s::$1
(label) mulf8s::@2
@@ -2306,10 +2306,10 @@ SYMBOL TABLE SSA
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(const byte*) mulf_init_asm::mem = (byte*)(number) $ff
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) mulf_tables_cmp()
(bool~) mulf_tables_cmp::$2
(bool~) mulf_tables_cmp::$3
@@ -2346,9 +2346,9 @@ SYMBOL TABLE SSA
(byte*) mulf_tables_cmp::kc_sqr#6
(byte*) mulf_tables_cmp::kc_sqr#7
(byte*) mulf_tables_cmp::kc_sqr#8
-(const string) mulf_tables_cmp::str = (string) "multiply tables match!"
-(const string) mulf_tables_cmp::str1 = (string) "multiply table mismatch at "
-(const string) mulf_tables_cmp::str2 = (string) " / "
+(const string) mulf_tables_cmp::str[] = (string) "multiply tables match!"
+(const string) mulf_tables_cmp::str1[] = (string) "multiply table mismatch at "
+(const string) mulf_tables_cmp::str2[] = (string) " / "
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(bool~) muls8s::$0
(bool~) muls8s::$1
@@ -2671,7 +2671,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -10931,7 +10931,7 @@ FINAL SYMBOL TABLE
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 reg byte x 202.0
(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul8s_compare::str = (string) "signed multiply results match!"
+(const string) mul8s_compare::str[] = (string) "signed multiply results match!"
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(label) mul8s_error::@1
(label) mul8s_error::@10
@@ -10954,7 +10954,7 @@ FINAL SYMBOL TABLE
(signed word) mul8s_error::mn#0 mn zp[2]:8 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp[2]:4 0.3076923076923077
-(const string) mul8s_error::str = (string) "signed multiply mismatch "
+(const string) mul8s_error::str[] = (string) "signed multiply mismatch "
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
@@ -11013,7 +11013,7 @@ FINAL SYMBOL TABLE
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#3 reg byte x 202.0
(byte) mul8u_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul8u_compare::str = (string) "multiply results match!"
+(const string) mul8u_compare::str[] = (string) "multiply results match!"
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(label) mul8u_error::@1
(label) mul8u_error::@10
@@ -11036,11 +11036,11 @@ FINAL SYMBOL TABLE
(word) mul8u_error::mn#0 mn zp[2]:8 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp[2]:4 0.3076923076923077
-(const string) mul8u_error::str = (string) "multiply mismatch "
-(const byte*) mula_sqr1_hi = { fill( $200, 0) }
-(const byte*) mula_sqr1_lo = { fill( $200, 0) }
-(const byte*) mula_sqr2_hi = { fill( $200, 0) }
-(const byte*) mula_sqr2_lo = { fill( $200, 0) }
+(const string) mul8u_error::str[] = (string) "multiply mismatch "
+(const byte*) mula_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr2_lo[(number) $200] = { fill( $200, 0) }
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(label) mulf8s::@1
(label) mulf8s::@2
@@ -11152,10 +11152,10 @@ FINAL SYMBOL TABLE
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(const byte*) mulf_init_asm::mem = (byte*) 255
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) mulf_tables_cmp()
(label) mulf_tables_cmp::@1
(label) mulf_tables_cmp::@10
@@ -11174,9 +11174,9 @@ FINAL SYMBOL TABLE
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:2 22.0
(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:2 4.4
-(const string) mulf_tables_cmp::str = (string) "multiply tables match!"
-(const string) mulf_tables_cmp::str1 = (string) "multiply table mismatch at "
-(const string) mulf_tables_cmp::str2 = (string) " / "
+(const string) mulf_tables_cmp::str[] = (string) "multiply tables match!"
+(const string) mulf_tables_cmp::str1[] = (string) "multiply table mismatch at "
+(const string) mulf_tables_cmp::str2[] = (string) " / "
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(label) muls8s::@1
(label) muls8s::@2
@@ -11254,7 +11254,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#86 print_char_cursor zp[2]:6 8.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6428571428571428
(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 0.09523809523809523
@@ -11308,10 +11308,10 @@ FINAL SYMBOL TABLE
(word) print_word::w#4 w zp[2]:4 4.0
(word) print_word::w#5 w zp[2]:4 4.0
(word) print_word::w#6 w zp[2]:4 5.333333333333333
-(const string) str1 = (string) "*"
-(const string) str2 = (string) " slow:"
-(const string) str3 = (string) " / normal:"
-(const string) str4 = (string) " / fast:"
+(const string) str1[] = (string) "*"
+(const string) str2[] = (string) " slow:"
+(const string) str3[] = (string) " / normal:"
+(const string) str4[] = (string) " / fast:"
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
diff --git a/src/test/ref/test-multiply-8bit.sym b/src/test/ref/test-multiply-8bit.sym
index 4fa43070f..6cda2bbe0 100644
--- a/src/test/ref/test-multiply-8bit.sym
+++ b/src/test/ref/test-multiply-8bit.sym
@@ -83,7 +83,7 @@
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 reg byte x 202.0
(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul8s_compare::str = (string) "signed multiply results match!"
+(const string) mul8s_compare::str[] = (string) "signed multiply results match!"
(void()) mul8s_error((signed byte) mul8s_error::a , (signed byte) mul8s_error::b , (signed word) mul8s_error::ms , (signed word) mul8s_error::mn , (signed word) mul8s_error::mf)
(label) mul8s_error::@1
(label) mul8s_error::@10
@@ -106,7 +106,7 @@
(signed word) mul8s_error::mn#0 mn zp[2]:8 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp[2]:4 0.3076923076923077
-(const string) mul8s_error::str = (string) "signed multiply mismatch "
+(const string) mul8s_error::str[] = (string) "signed multiply mismatch "
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1
@@ -165,7 +165,7 @@
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#3 reg byte x 202.0
(byte) mul8u_compare::ok#4 reg byte x 33.666666666666664
-(const string) mul8u_compare::str = (string) "multiply results match!"
+(const string) mul8u_compare::str[] = (string) "multiply results match!"
(void()) mul8u_error((byte) mul8u_error::a , (byte) mul8u_error::b , (word) mul8u_error::ms , (word) mul8u_error::mn , (word) mul8u_error::mf)
(label) mul8u_error::@1
(label) mul8u_error::@10
@@ -188,11 +188,11 @@
(word) mul8u_error::mn#0 mn zp[2]:8 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp[2]:4 0.3076923076923077
-(const string) mul8u_error::str = (string) "multiply mismatch "
-(const byte*) mula_sqr1_hi = { fill( $200, 0) }
-(const byte*) mula_sqr1_lo = { fill( $200, 0) }
-(const byte*) mula_sqr2_hi = { fill( $200, 0) }
-(const byte*) mula_sqr2_lo = { fill( $200, 0) }
+(const string) mul8u_error::str[] = (string) "multiply mismatch "
+(const byte*) mula_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mula_sqr2_lo[(number) $200] = { fill( $200, 0) }
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
(label) mulf8s::@1
(label) mulf8s::@2
@@ -304,10 +304,10 @@
(void()) mulf_init_asm()
(label) mulf_init_asm::@return
(const byte*) mulf_init_asm::mem = (byte*) 255
-(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
-(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
-(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
+(const byte*) mulf_sqr1_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr1_lo[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_hi[(number) $200] = { fill( $200, 0) }
+(const byte*) mulf_sqr2_lo[(number) $200] = { fill( $200, 0) }
(void()) mulf_tables_cmp()
(label) mulf_tables_cmp::@1
(label) mulf_tables_cmp::@10
@@ -326,9 +326,9 @@
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp[2]:2 22.0
(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp[2]:2 4.4
-(const string) mulf_tables_cmp::str = (string) "multiply tables match!"
-(const string) mulf_tables_cmp::str1 = (string) "multiply table mismatch at "
-(const string) mulf_tables_cmp::str2 = (string) " / "
+(const string) mulf_tables_cmp::str[] = (string) "multiply tables match!"
+(const string) mulf_tables_cmp::str1[] = (string) "multiply table mismatch at "
+(const string) mulf_tables_cmp::str2[] = (string) " / "
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(label) muls8s::@1
(label) muls8s::@2
@@ -406,7 +406,7 @@
(byte*) print_char_cursor#86 print_char_cursor zp[2]:6 8.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 0.6428571428571428
(byte*) print_line_cursor#11 print_line_cursor zp[2]:2 0.09523809523809523
@@ -460,10 +460,10 @@
(word) print_word::w#4 w zp[2]:4 4.0
(word) print_word::w#5 w zp[2]:4 4.0
(word) print_word::w#6 w zp[2]:4 5.333333333333333
-(const string) str1 = (string) "*"
-(const string) str2 = (string) " slow:"
-(const string) str3 = (string) " / normal:"
-(const string) str4 = (string) " / fast:"
+(const string) str1[] = (string) "*"
+(const string) str2[] = (string) " slow:"
+(const string) str3[] = (string) " / normal:"
+(const string) str4[] = (string) " / fast:"
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ]
diff --git a/src/test/ref/test-signed-word-minus-byte.log b/src/test/ref/test-signed-word-minus-byte.log
index e93ec8c88..9feb5d824 100644
--- a/src/test/ref/test-signed-word-minus-byte.log
+++ b/src/test/ref/test-signed-word-minus-byte.log
@@ -518,7 +518,7 @@ SYMBOL TABLE SSA
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -2129,7 +2129,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 22.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 46.42857142857143
(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 1.1818181818181819
diff --git a/src/test/ref/test-signed-word-minus-byte.sym b/src/test/ref/test-signed-word-minus-byte.sym
index 76823fa6d..beb32f52e 100644
--- a/src/test/ref/test-signed-word-minus-byte.sym
+++ b/src/test/ref/test-signed-word-minus-byte.sym
@@ -60,7 +60,7 @@
(byte*) print_char_cursor#63 print_char_cursor zp[2]:6 22.0
(void()) print_cls()
(label) print_cls::@return
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:2 46.42857142857143
(byte*) print_line_cursor#19 print_line_cursor zp[2]:2 1.1818181818181819
diff --git a/src/test/ref/textbox.log b/src/test/ref/textbox.log
index f207f58de..804621c88 100644
--- a/src/test/ref/textbox.log
+++ b/src/test/ref/textbox.log
@@ -637,8 +637,8 @@ SYMBOL TABLE SSA
(byte) main::x#6
(byte) main::x#7
(const byte*) screen = (byte*)(number) $400
-(const byte*) text = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!"
-(const byte*) text2 = (string) "textbox by scan of desire"
+(const byte*) text[] = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!"
+(const byte*) text2[] = (string) "textbox by scan of desire"
(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
(number~) textbox::$1
(bool~) textbox::$10
@@ -4417,8 +4417,8 @@ FINAL SYMBOL TABLE
(byte) main::x#1 x zp[1]:2 22.0
(byte) main::x#2 x zp[1]:2 8.0
(const byte*) screen = (byte*) 1024
-(const byte*) text = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!"
-(const byte*) text2 = (string) "textbox by scan of desire"
+(const byte*) text[] = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!"
+(const byte*) text2[] = (string) "textbox by scan of desire"
(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
(byte~) textbox::$15 reg byte y 101.0
(byte~) textbox::$17 zp[1]:10 101.0
diff --git a/src/test/ref/textbox.sym b/src/test/ref/textbox.sym
index 843e28425..27b02328e 100644
--- a/src/test/ref/textbox.sym
+++ b/src/test/ref/textbox.sym
@@ -92,8 +92,8 @@
(byte) main::x#1 x zp[1]:2 22.0
(byte) main::x#2 x zp[1]:2 8.0
(const byte*) screen = (byte*) 1024
-(const byte*) text = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!"
-(const byte*) text2 = (string) "textbox by scan of desire"
+(const byte*) text[] = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!"
+(const byte*) text2[] = (string) "textbox by scan of desire"
(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
(byte~) textbox::$15 reg byte y 101.0
(byte~) textbox::$17 zp[1]:10 101.0
diff --git a/src/test/ref/travis1.log b/src/test/ref/travis1.log
index 35041f9d2..1bdd05233 100644
--- a/src/test/ref/travis1.log
+++ b/src/test/ref/travis1.log
@@ -311,7 +311,7 @@ SYMBOL TABLE SSA
(bool) game_ready::return#2
(bool) game_ready::return#3
(bool) game_ready::return#4
-(const string) game_ready::str = (string) "ready"
+(const string) game_ready::str[] = (string) "ready"
(void()) main()
(bool~) main::$0
(bool~) main::$1
@@ -330,7 +330,7 @@ SYMBOL TABLE SSA
(byte) main::i#4
(byte) main::i#5
(byte) main::i#6
-(const string) main::str = (string) "ready!"
+(const string) main::str[] = (string) "ready!"
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
@@ -1475,7 +1475,7 @@ FINAL SYMBOL TABLE
(bool) game_ready::return
(bool) game_ready::return#0 reg byte a 22.0
(bool) game_ready::return#1 reg byte a 4.333333333333333
-(const string) game_ready::str = (string) "ready"
+(const string) game_ready::str[] = (string) "ready"
(void()) main()
(bool~) main::$0 reg byte a 22.0
(label) main::@1
@@ -1487,7 +1487,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 i zp[1]:2 11.0
(byte) main::i#2 i zp[1]:2 3.142857142857143
-(const string) main::str = (string) "ready!"
+(const string) main::str[] = (string) "ready!"
(byte*) print_char_cursor
(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 40.6
(byte*) print_char_cursor#27 print_char_cursor zp[2]:7 5.0
diff --git a/src/test/ref/travis1.sym b/src/test/ref/travis1.sym
index f371d40cc..3066871bd 100644
--- a/src/test/ref/travis1.sym
+++ b/src/test/ref/travis1.sym
@@ -18,7 +18,7 @@
(bool) game_ready::return
(bool) game_ready::return#0 reg byte a 22.0
(bool) game_ready::return#1 reg byte a 4.333333333333333
-(const string) game_ready::str = (string) "ready"
+(const string) game_ready::str[] = (string) "ready"
(void()) main()
(bool~) main::$0 reg byte a 22.0
(label) main::@1
@@ -30,7 +30,7 @@
(byte) main::i
(byte) main::i#1 i zp[1]:2 11.0
(byte) main::i#2 i zp[1]:2 3.142857142857143
-(const string) main::str = (string) "ready!"
+(const string) main::str[] = (string) "ready!"
(byte*) print_char_cursor
(byte*) print_char_cursor#17 print_char_cursor zp[2]:7 40.6
(byte*) print_char_cursor#27 print_char_cursor zp[2]:7 5.0
diff --git a/src/test/ref/true-inline-words.log b/src/test/ref/true-inline-words.log
index e46ae4622..337e399aa 100644
--- a/src/test/ref/true-inline-words.log
+++ b/src/test/ref/true-inline-words.log
@@ -53,7 +53,7 @@ SYMBOL TABLE SSA
(label) main::@return
(const byte) main::b = (byte) 4
(const byte*) main::bgcol = (byte*)(number) $d021
-(const byte*) main::bs = { (byte) 'c', (byte) 'm' }
+(const byte*) main::bs[] = { (byte) 'c', (byte) 'm' }
(const byte*) main::pos = (byte*)(number) $501
(byte*) main::sc
(byte*) main::sc#0
@@ -367,7 +367,7 @@ FINAL SYMBOL TABLE
(label) main::@return
(const byte) main::b = (byte) 4
(const byte*) main::bgcol = (byte*) 53281
-(const byte*) main::bs = { (byte) 'c', (byte) 'm' }
+(const byte*) main::bs[] = { (byte) 'c', (byte) 'm' }
(const byte*) main::pos = (byte*) 1281
(byte*) main::sc
(const byte*) main::sc#0 sc = (byte*)(const word) main::w2#0
diff --git a/src/test/ref/true-inline-words.sym b/src/test/ref/true-inline-words.sym
index c8f1f92f9..b54455330 100644
--- a/src/test/ref/true-inline-words.sym
+++ b/src/test/ref/true-inline-words.sym
@@ -7,7 +7,7 @@
(label) main::@return
(const byte) main::b = (byte) 4
(const byte*) main::bgcol = (byte*) 53281
-(const byte*) main::bs = { (byte) 'c', (byte) 'm' }
+(const byte*) main::bs[] = { (byte) 'c', (byte) 'm' }
(const byte*) main::pos = (byte*) 1281
(byte*) main::sc
(const byte*) main::sc#0 sc = (byte*)(const word) main::w2#0
diff --git a/src/test/ref/type-signed.log b/src/test/ref/type-signed.log
index eec72e464..dd3988a9d 100644
--- a/src/test/ref/type-signed.log
+++ b/src/test/ref/type-signed.log
@@ -389,7 +389,7 @@ SYMBOL TABLE SSA
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
@@ -1727,7 +1727,7 @@ FINAL SYMBOL TABLE
(byte*) print_char_cursor#33 print_char_cursor zp[2]:11 11.5
(byte*) print_char_cursor#47 print_char_cursor zp[2]:11 2.142857142857143
(byte*) print_char_cursor#56 print_char_cursor zp[2]:11 22.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 46.42857142857143
(byte*) print_line_cursor#13 print_line_cursor zp[2]:6 1.1818181818181819
diff --git a/src/test/ref/type-signed.sym b/src/test/ref/type-signed.sym
index ce6fb6c3a..27355dd9c 100644
--- a/src/test/ref/type-signed.sym
+++ b/src/test/ref/type-signed.sym
@@ -42,7 +42,7 @@
(byte*) print_char_cursor#33 print_char_cursor zp[2]:11 11.5
(byte*) print_char_cursor#47 print_char_cursor zp[2]:11 2.142857142857143
(byte*) print_char_cursor#56 print_char_cursor zp[2]:11 22.0
-(const byte*) print_hextab = (string) "0123456789abcdef"z
+(const byte*) print_hextab[] = (string) "0123456789abcdef"z
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp[2]:6 46.42857142857143
(byte*) print_line_cursor#13 print_line_cursor zp[2]:6 1.1818181818181819
diff --git a/src/test/ref/typeinference-problem.log b/src/test/ref/typeinference-problem.log
index 432a43ab9..06871c3cb 100644
--- a/src/test/ref/typeinference-problem.log
+++ b/src/test/ref/typeinference-problem.log
@@ -40,7 +40,7 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const byte*) table = { fill( $100, 0) }
+(const byte*) table[(number) $100] = { fill( $100, 0) }
Adding number conversion cast (unumber) $ff in (number~) main::$0 ← (number) $ff - (byte) main::i#2
Adding number conversion cast (unumber) main::$0 in (number~) main::$0 ← (unumber)(number) $ff - (byte) main::i#2
@@ -311,7 +311,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte y 16.5
(byte) main::i#2 reg byte y 11.0
-(const byte*) table = { fill( $100, 0) }
+(const byte*) table[(number) $100] = { fill( $100, 0) }
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::$0 ]
diff --git a/src/test/ref/typeinference-problem.sym b/src/test/ref/typeinference-problem.sym
index 974f178a8..4577d33aa 100644
--- a/src/test/ref/typeinference-problem.sym
+++ b/src/test/ref/typeinference-problem.sym
@@ -8,7 +8,7 @@
(byte) main::i
(byte) main::i#1 reg byte y 16.5
(byte) main::i#2 reg byte y 11.0
-(const byte*) table = { fill( $100, 0) }
+(const byte*) table[(number) $100] = { fill( $100, 0) }
reg byte y [ main::i#2 main::i#1 ]
reg byte x [ main::$0 ]
diff --git a/src/test/ref/var-export.log b/src/test/ref/var-export.log
index 18cab7f34..960be38c6 100644
--- a/src/test/ref/var-export.log
+++ b/src/test/ref/var-export.log
@@ -23,7 +23,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "camelot!"
+(const byte*) MESSAGE[] = (string) "camelot!"
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
(label) main::@return
@@ -187,7 +187,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "camelot!"
+(const byte*) MESSAGE[] = (string) "camelot!"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@return
diff --git a/src/test/ref/var-export.sym b/src/test/ref/var-export.sym
index ceeb273af..69c965bca 100644
--- a/src/test/ref/var-export.sym
+++ b/src/test/ref/var-export.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MESSAGE = (string) "camelot!"
+(const byte*) MESSAGE[] = (string) "camelot!"
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(label) main::@return
diff --git a/src/test/ref/var-register-noarg.log b/src/test/ref/var-register-noarg.log
index 521dd0e57..65b8c7287 100644
--- a/src/test/ref/var-register-noarg.log
+++ b/src/test/ref/var-register-noarg.log
@@ -38,7 +38,7 @@ SYMBOL TABLE SSA
(label) @2
(label) @begin
(label) @end
-(const byte*) MSG = (string) "CAMELOT!"su
+(const byte*) MSG[] = (string) "CAMELOT!"su
(const byte*) SCREEN = (byte*)(number) $400
(void()) main()
(bool~) main::$0
@@ -313,7 +313,7 @@ FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
-(const byte*) MSG = (string) "CAMELOT!"su
+(const byte*) MSG[] = (string) "CAMELOT!"su
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(byte~) main::$1 reg byte a 22.0
diff --git a/src/test/ref/var-register-noarg.sym b/src/test/ref/var-register-noarg.sym
index 8a992b934..9901d0752 100644
--- a/src/test/ref/var-register-noarg.sym
+++ b/src/test/ref/var-register-noarg.sym
@@ -1,7 +1,7 @@
(label) @1
(label) @begin
(label) @end
-(const byte*) MSG = (string) "CAMELOT!"su
+(const byte*) MSG[] = (string) "CAMELOT!"su
(const byte*) SCREEN = (byte*) 1024
(void()) main()
(byte~) main::$1 reg byte a 22.0
diff --git a/src/test/ref/var-register-zp-3.log b/src/test/ref/var-register-zp-3.log
index b2731944e..c159489a7 100644
--- a/src/test/ref/var-register-zp-3.log
+++ b/src/test/ref/var-register-zp-3.log
@@ -93,8 +93,8 @@ SYMBOL TABLE SSA
(label) main::@1
(label) main::@2
(label) main::@return
-(const string) main::msg = (string) "hello"
-(const string) main::msg1 = (string) "world"
+(const string) main::msg[] = (string) "hello"
+(const string) main::msg1[] = (string) "world"
(void()) print2((byte*) print2::at , (byte*) print2::msg)
(bool~) print2::$1
(label) print2::@1
@@ -702,8 +702,8 @@ FINAL SYMBOL TABLE
(void()) main()
(label) main::@1
(label) main::@return
-(const string) main::msg = (string) "hello"
-(const string) main::msg1 = (string) "world"
+(const string) main::msg[] = (string) "hello"
+(const string) main::msg1[] = (string) "world"
(void()) print2((byte*) print2::at , (byte*) print2::msg)
(label) print2::@1
(label) print2::@2
diff --git a/src/test/ref/var-register-zp-3.sym b/src/test/ref/var-register-zp-3.sym
index d4a12d66e..ba51e6cea 100644
--- a/src/test/ref/var-register-zp-3.sym
+++ b/src/test/ref/var-register-zp-3.sym
@@ -4,8 +4,8 @@
(void()) main()
(label) main::@1
(label) main::@return
-(const string) main::msg = (string) "hello"
-(const string) main::msg1 = (string) "world"
+(const string) main::msg[] = (string) "hello"
+(const string) main::msg1[] = (string) "world"
(void()) print2((byte*) print2::at , (byte*) print2::msg)
(label) print2::@1
(label) print2::@2
diff --git a/src/test/ref/voronoi.log b/src/test/ref/voronoi.log
index 8a214979b..50d652027 100644
--- a/src/test/ref/voronoi.log
+++ b/src/test/ref/voronoi.log
@@ -335,11 +335,11 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) COLORS = (byte*)(number) $d800
-(const byte*) COLS = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 7 }
+(const byte*) COLS[] = { (byte)(number) 1, (byte)(number) 2, (byte)(number) 3, (byte)(number) 4, (byte)(number) 5, (byte)(number) 7 }
(const byte) FILL = (byte) $e6
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) XPOS = { (byte)(number) 5, (byte)(number) $f, (byte)(number) 6, (byte)(number) $22, (byte)(number) $15, (byte)(number) $1f }
-(const byte*) YPOS = { (byte)(number) 5, (byte)(number) 8, (byte)(number) $e, (byte)(number) 2, (byte)(number) $11, (byte)(number) $16 }
+(const byte*) XPOS[] = { (byte)(number) 5, (byte)(number) $f, (byte)(number) 6, (byte)(number) $22, (byte)(number) $15, (byte)(number) $1f }
+(const byte*) YPOS[] = { (byte)(number) 5, (byte)(number) 8, (byte)(number) $e, (byte)(number) 2, (byte)(number) $11, (byte)(number) $16 }
(void()) animate()
(number~) animate::$0
(bool~) animate::$1
@@ -2500,11 +2500,11 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) COLORS = (byte*) 55296
-(const byte*) COLS = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 }
+(const byte*) COLS[] = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 }
(const byte) FILL = (byte) $e6
(const byte*) SCREEN = (byte*) 1024
-(const byte*) XPOS = { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f }
-(const byte*) YPOS = { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 }
+(const byte*) XPOS[] = { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f }
+(const byte*) YPOS[] = { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 }
(void()) animate()
(byte~) animate::$0 reg byte x 4.0
(byte~) animate::$12 reg byte x 4.0
diff --git a/src/test/ref/voronoi.sym b/src/test/ref/voronoi.sym
index 60c712da3..34b2d04a6 100644
--- a/src/test/ref/voronoi.sym
+++ b/src/test/ref/voronoi.sym
@@ -2,11 +2,11 @@
(label) @begin
(label) @end
(const byte*) COLORS = (byte*) 55296
-(const byte*) COLS = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 }
+(const byte*) COLS[] = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 }
(const byte) FILL = (byte) $e6
(const byte*) SCREEN = (byte*) 1024
-(const byte*) XPOS = { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f }
-(const byte*) YPOS = { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 }
+(const byte*) XPOS[] = { (byte) 5, (byte) $f, (byte) 6, (byte) $22, (byte) $15, (byte) $1f }
+(const byte*) YPOS[] = { (byte) 5, (byte) 8, (byte) $e, (byte) 2, (byte) $11, (byte) $16 }
(void()) animate()
(byte~) animate::$0 reg byte x 4.0
(byte~) animate::$12 reg byte x 4.0
diff --git a/src/test/ref/wfragment1.log b/src/test/ref/wfragment1.log
index 63bef911b..6cb6f30e7 100644
--- a/src/test/ref/wfragment1.log
+++ b/src/test/ref/wfragment1.log
@@ -102,7 +102,7 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte) MAX_OBJECTS = (number) $10
-(const word*) OBJ_WORLD_X = { fill( MAX_OBJECTS, 0) }
+(const word*) OBJ_WORLD_X[(const byte) MAX_OBJECTS] = { fill( MAX_OBJECTS, 0) }
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
@@ -469,7 +469,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte) MAX_OBJECTS = (number) $10
-(const word*) OBJ_WORLD_X = { fill( MAX_OBJECTS, 0) }
+(const word*) OBJ_WORLD_X[(const byte) MAX_OBJECTS] = { fill( MAX_OBJECTS, 0) }
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
diff --git a/src/test/ref/wfragment1.sym b/src/test/ref/wfragment1.sym
index 552bf404d..8d8d9905e 100644
--- a/src/test/ref/wfragment1.sym
+++ b/src/test/ref/wfragment1.sym
@@ -2,7 +2,7 @@
(label) @begin
(label) @end
(const byte) MAX_OBJECTS = (number) $10
-(const word*) OBJ_WORLD_X = { fill( MAX_OBJECTS, 0) }
+(const word*) OBJ_WORLD_X[(const byte) MAX_OBJECTS] = { fill( MAX_OBJECTS, 0) }
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
diff --git a/src/test/ref/word-array-0.log b/src/test/ref/word-array-0.log
index 10fd2fd68..efff6fc9d 100644
--- a/src/test/ref/word-array-0.log
+++ b/src/test/ref/word-array-0.log
@@ -49,7 +49,7 @@ SYMBOL TABLE SSA
(word) main::w1#0
(word) main::w2
(word) main::w2#0
-(const word*) main::words = (word*)(number) $400
+(const word*) main::words[(number) 3] = (word*)(number) $400
Adding number conversion cast (unumber) 1 in (number~) main::$4 ← (number) 1 * (const byte) SIZEOF_WORD
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (unumber)(number) 1 * (const byte) SIZEOF_WORD
@@ -366,7 +366,7 @@ FINAL SYMBOL TABLE
(word) main::w1#0 w1 zp[2]:2 2.0
(word) main::w2
(word) main::w2#0 w2 zp[2]:4 2.0
-(const word*) main::words = (word*) 1024
+(const word*) main::words[(number) 3] = (word*) 1024
zp[2]:2 [ main::w1#0 ]
reg byte a [ main::$0 ]
diff --git a/src/test/ref/word-array-0.sym b/src/test/ref/word-array-0.sym
index fa6eb84f1..55de208c0 100644
--- a/src/test/ref/word-array-0.sym
+++ b/src/test/ref/word-array-0.sym
@@ -13,7 +13,7 @@
(word) main::w1#0 w1 zp[2]:2 2.0
(word) main::w2
(word) main::w2#0 w2 zp[2]:4 2.0
-(const word*) main::words = (word*) 1024
+(const word*) main::words[(number) 3] = (word*) 1024
zp[2]:2 [ main::w1#0 ]
reg byte a [ main::$0 ]
diff --git a/src/test/ref/word-array-1.log b/src/test/ref/word-array-1.log
index a32259031..ba653b386 100644
--- a/src/test/ref/word-array-1.log
+++ b/src/test/ref/word-array-1.log
@@ -62,7 +62,7 @@ SYMBOL TABLE SSA
(byte) main::idx#4
(word) main::w
(word) main::w#0
-(const word*) main::words = { (word)(number) $3031, (word)(number) $3233, (word)(number) $3435, (word)(number) $3637 }
+(const word*) main::words[] = { (word)(number) $3031, (word)(number) $3233, (word)(number) $3435, (word)(number) $3637 }
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
@@ -476,7 +476,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#4 idx zp[1]:2 6.6000000000000005
(word) main::w
(word) main::w#0 w zp[2]:3 8.25
-(const word*) main::words = { (word) $3031, (word) $3233, (word) $3435, (word) $3637 }
+(const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435, (word) $3637 }
reg byte x [ main::i#2 main::i#1 ]
zp[1]:2 [ main::idx#4 main::idx#3 ]
diff --git a/src/test/ref/word-array-1.sym b/src/test/ref/word-array-1.sym
index 8132a647a..5aca87cac 100644
--- a/src/test/ref/word-array-1.sym
+++ b/src/test/ref/word-array-1.sym
@@ -18,7 +18,7 @@
(byte) main::idx#4 idx zp[1]:2 6.6000000000000005
(word) main::w
(word) main::w#0 w zp[2]:3 8.25
-(const word*) main::words = { (word) $3031, (word) $3233, (word) $3435, (word) $3637 }
+(const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435, (word) $3637 }
reg byte x [ main::i#2 main::i#1 ]
zp[1]:2 [ main::idx#4 main::idx#3 ]
diff --git a/src/test/ref/word-array-2.log b/src/test/ref/word-array-2.log
index 91db2f50c..736213d85 100644
--- a/src/test/ref/word-array-2.log
+++ b/src/test/ref/word-array-2.log
@@ -60,7 +60,7 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const word*) words = { fill( $100, 0) }
+(const word*) words[(number) $100] = { fill( $100, 0) }
Adding number conversion cast (unumber) $100 in (number~) main::$2 ← (word~) main::$1 * (number) $100
Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (word~) main::$1 * (unumber)(number) $100
@@ -521,7 +521,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 4.125
-(const word*) words = { fill( $100, 0) }
+(const word*) words[(number) $100] = { fill( $100, 0) }
reg byte x [ main::i#2 main::i#1 ]
zp[2]:2 [ main::$0 main::$5 main::$8 ]
diff --git a/src/test/ref/word-array-2.sym b/src/test/ref/word-array-2.sym
index f3d3cbcf3..9c33e725b 100644
--- a/src/test/ref/word-array-2.sym
+++ b/src/test/ref/word-array-2.sym
@@ -16,7 +16,7 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 4.125
-(const word*) words = { fill( $100, 0) }
+(const word*) words[(number) $100] = { fill( $100, 0) }
reg byte x [ main::i#2 main::i#1 ]
zp[2]:2 [ main::$0 main::$5 main::$8 ]
diff --git a/src/test/ref/word-pointer-compound.log b/src/test/ref/word-pointer-compound.log
index 223919a89..8250bb1b5 100644
--- a/src/test/ref/word-pointer-compound.log
+++ b/src/test/ref/word-pointer-compound.log
@@ -82,7 +82,7 @@ SYMBOL TABLE SSA
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
-(const word*) main::words = { (word)(number) $3031, (word)(number) $3233, (word)(number) $3435 }
+(const word*) main::words[] = { (word)(number) $3031, (word)(number) $3233, (word)(number) $3435 }
Adding number conversion cast (unumber) $101 in *((const word*) main::words + (byte~) main::$7) ← *((const word*) main::words + (byte~) main::$7) + (number) $101
Adding number conversion cast (unumber) 0 in (number~) main::$8 ← (number) 0 * (const byte) SIZEOF_WORD
@@ -583,7 +583,7 @@ FINAL SYMBOL TABLE
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 11.0
-(const word*) main::words = { (word) $3031, (word) $3233, (word) $3435 }
+(const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435 }
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::$7 ]
diff --git a/src/test/ref/word-pointer-compound.sym b/src/test/ref/word-pointer-compound.sym
index e6aa2c913..40b778298 100644
--- a/src/test/ref/word-pointer-compound.sym
+++ b/src/test/ref/word-pointer-compound.sym
@@ -17,7 +17,7 @@
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 11.0
-(const word*) main::words = { (word) $3031, (word) $3233, (word) $3435 }
+(const word*) main::words[] = { (word) $3031, (word) $3233, (word) $3435 }
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::$7 ]
diff --git a/src/test/ref/word-pointer-iteration.log b/src/test/ref/word-pointer-iteration.log
index f29d5b470..b1cdf853a 100644
--- a/src/test/ref/word-pointer-iteration.log
+++ b/src/test/ref/word-pointer-iteration.log
@@ -63,7 +63,7 @@ SYMBOL TABLE SSA
(byte) main::idx#4
(word) main::w
(word) main::w#0
-(const word*) main::words = { (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 }
+(const word*) main::words[] = { (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 }
(word*) main::wp
(word*) main::wp#0
(word*) main::wp#1
@@ -508,7 +508,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#4 idx zp[1]:4 6.6000000000000005
(word) main::w
(word) main::w#0 w zp[2]:5 6.6000000000000005
-(const word*) main::words = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
+(const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
(word*) main::wp
(word*) main::wp#1 wp zp[2]:2 2.2
(word*) main::wp#2 wp zp[2]:2 16.5
diff --git a/src/test/ref/word-pointer-iteration.sym b/src/test/ref/word-pointer-iteration.sym
index ced09dd28..8e2e05701 100644
--- a/src/test/ref/word-pointer-iteration.sym
+++ b/src/test/ref/word-pointer-iteration.sym
@@ -18,7 +18,7 @@
(byte) main::idx#4 idx zp[1]:4 6.6000000000000005
(word) main::w
(word) main::w#0 w zp[2]:5 6.6000000000000005
-(const word*) main::words = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
+(const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
(word*) main::wp
(word*) main::wp#1 wp zp[2]:2 2.2
(word*) main::wp#2 wp zp[2]:2 16.5
diff --git a/src/test/ref/word-pointer-math.log b/src/test/ref/word-pointer-math.log
index bd906a6eb..da7c9479a 100644
--- a/src/test/ref/word-pointer-math.log
+++ b/src/test/ref/word-pointer-math.log
@@ -64,7 +64,7 @@ SYMBOL TABLE SSA
(byte) main::idx#4
(word) main::w
(word) main::w#0
-(const word*) main::words = { (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 }
+(const word*) main::words[] = { (word)(number) $3130, (word)(number) $3332, (word)(number) $3534, (word)(number) $3736 }
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
Successful SSA optimization PassNAddNumberTypeConversions
@@ -481,7 +481,7 @@ FINAL SYMBOL TABLE
(byte) main::idx#4 idx zp[1]:2 6.6000000000000005
(word) main::w
(word) main::w#0 w zp[2]:3 8.25
-(const word*) main::words = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
+(const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
reg byte x [ main::i#2 main::i#1 ]
zp[1]:2 [ main::idx#4 main::idx#3 ]
diff --git a/src/test/ref/word-pointer-math.sym b/src/test/ref/word-pointer-math.sym
index d20347567..c6deb6547 100644
--- a/src/test/ref/word-pointer-math.sym
+++ b/src/test/ref/word-pointer-math.sym
@@ -18,7 +18,7 @@
(byte) main::idx#4 idx zp[1]:2 6.6000000000000005
(word) main::w
(word) main::w#0 w zp[2]:3 8.25
-(const word*) main::words = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
+(const word*) main::words[] = { (word) $3130, (word) $3332, (word) $3534, (word) $3736 }
reg byte x [ main::i#2 main::i#1 ]
zp[1]:2 [ main::idx#4 main::idx#3 ]
diff --git a/src/test/ref/zeropage-sinus.log b/src/test/ref/zeropage-sinus.log
index 0527c7db3..f4fe066b1 100644
--- a/src/test/ref/zeropage-sinus.log
+++ b/src/test/ref/zeropage-sinus.log
@@ -100,15 +100,15 @@ SYMBOL TABLE SSA
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*)(number) $400
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*cos(toRadians(360*i/256)))
}}
-(const byte*) SPRITE = kickasm {{ .fill $40,$ff }}
+(const byte*) SPRITE[(number) $40] = kickasm {{ .fill $40,$ff }}
(const byte*) SPRITES_ENABLE = (byte*)(number) $d015
(const byte*) SPRITES_XPOS = (byte*)(number) $d000
(const byte*) SPRITES_YPOS = (byte*)(number) $d001
(const word) SPRITE_PTRS = (number) $3f8
-(const byte*) ZP_STORAGE = { fill( $100, 0) }
+(const byte*) ZP_STORAGE[(number) $100] = { fill( $100, 0) }
(void()) animSprite()
(label) animSprite::@return
(void()) main()
@@ -687,15 +687,15 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*cos(toRadians(360*i/256)))
}}
-(const byte*) SPRITE = kickasm {{ .fill $40,$ff }}
+(const byte*) SPRITE[(number) $40] = kickasm {{ .fill $40,$ff }}
(const byte*) SPRITES_ENABLE = (byte*) 53269
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(const word) SPRITE_PTRS = (number) $3f8
-(const byte*) ZP_STORAGE = { fill( $100, 0) }
+(const byte*) ZP_STORAGE[(number) $100] = { fill( $100, 0) }
(void()) animSprite()
(label) animSprite::@return
(void()) main()
diff --git a/src/test/ref/zeropage-sinus.sym b/src/test/ref/zeropage-sinus.sym
index eccc9b26a..0b6171d5c 100644
--- a/src/test/ref/zeropage-sinus.sym
+++ b/src/test/ref/zeropage-sinus.sym
@@ -2,15 +2,15 @@
(label) @begin
(label) @end
(const byte*) SCREEN = (byte*) 1024
-(const byte*) SINTABLE = kickasm {{ .for(var i=0;i<$100;i++)
+(const byte*) SINTABLE[(number) $100] = kickasm {{ .for(var i=0;i<$100;i++)
.byte round(127.5+127.5*cos(toRadians(360*i/256)))
}}
-(const byte*) SPRITE = kickasm {{ .fill $40,$ff }}
+(const byte*) SPRITE[(number) $40] = kickasm {{ .fill $40,$ff }}
(const byte*) SPRITES_ENABLE = (byte*) 53269
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(const word) SPRITE_PTRS = (number) $3f8
-(const byte*) ZP_STORAGE = { fill( $100, 0) }
+(const byte*) ZP_STORAGE[(number) $100] = { fill( $100, 0) }
(void()) animSprite()
(label) animSprite::@return
(void()) main()