If I have time, I will try to explain how to make and use matrices in Axe/Grammer/Assembly/Similar languages. For now, I have found these:

Tilemaps in Axe Basic

And this is a nice resource:

Specific Tutorials List (Axe)

Essentially, you need to figure out how large the matrix will be. For tilemaps,, you will typically use 1-byte for each element, so the size is the Width*Height. A 16x16 tilemap would then be 256 bytes. You need a pointer to the data, so let's say the pointer Z points to the tilemap data. If you want to read the element (x,y), you would do something like this (assuming you are storing by row first, then column)

I used the *2*2*2*2 because it is an optimised way of doing Y*16. Now you use the byte there to locate the sprite. You will typically have your sprites stored linearly and since they are 8x8, they will be 8 bytes each. If T points to your tiles, then T+8 should be the second tile, T+16 should be the third, et cetera. For this reason, we start our tiles at 0,1,2,… and we can access them like this:

```
{Y*2*2*2*2+X+Z}
*2*2*2 ;multiplying by 8
{+S}
```

Now we have a pointer to the sprite. To draw the sprite now:

```
{Y*2*2*2*2+X+Z}
*2*2*2 ;multiplying by 8
Pt-On({+S},X*2*2*2,Y*2*2*2
```

So if you use two For( loops looping through X and Y, your tilemap will be drawn :) Putting it all together and optimising a little:

```
[3C4281818181423C...]→Pic1 ;tileset
[000102030102030000010203...]→GDB1 ;tilemap
For(X,0,11
For(Y,0,56
Pt-On({{Y*2+X+GDB1}*2*2*2+Pic1},X*2*2*2,Y
Y+7→Y
End
End
DispGraph
```