16 bit means you'll use word instead of dword. I've modify this to work in that mode.
`Ashingda - This example will use 32x32 and 256x192.
set display mode 640,480,16
sync on
sync rate 80
IMG32x32 = 1
IMG256x192 = 2
MEM32x32 = 1
MEM256x192 = 2
`Ashingda - Creating the 32x32 image memblock, (Cyan box with red X)
ink rgb(0,155,155),0
box 0,0,32,32
ink rgb(0,255,255),0
box 1,1,31,31
ink rgb(255,0,0),0
line 0,0,32,32
line 0,32,32,0
get image IMG32x32,0,0,32,32,1
sync
make memblock from image MEM32x32,IMG32x32
WD_Small = 32
HT_Small = 32
`Ashingda - Setting up the 256x192 memblock
make memblock MEM256x192,12+(256+192*256)*2
write memblock dword MEM256x192,0,256
write memblock dword MEM256x192,4,192
write memblock dword MEM256x192,8,16
WD_Large = 256
HT_Large = 192
`Ashingda - Memblock data transfer
for Y_Large = 0 to HT_Large - 1 step HT_Small
for X_Large = 0 to WD_Large - 1 step WD_Small
for Y_Small = 0 to HT_Small - 1
for X_Small = 0 to WD_Small - 1
`Ashingda - Reading from the small 32x32
Pos_Small = 12 + (X_Small + Y_Small * WD_Small) * 2
Color = memblock word(MEM32x32,Pos_Small)
`Ashingda - Writing to the large 256x192
Pos_Large = 12 + ( (X_Large+X_Small) + (Y_Large+Y_Small) * WD_Large)*2
write memblock word MEM256x192,Pos_Large,Color
next X_Small
next Y_Small
next X_Large
next Y_Large
`Ashingda - Creating the 256x192 image.
make image from memblock IMG256x192,MEM256x192
`Ashingda - Displaying the image.
do
paste image IMG256x192,100,100
sync
cls
loop