now that i went over it you had another problem
you need to give each of your images different numbers instead of the same ones over and over
imagenumber=1
LOAD BITMAP "charwalkup.bmp", 1
FOR up = 1 to 4
GET IMAGE imagenumber, (up - 1) * 23, 0, up * 23, 32 ,1
inc imagenumber
NEXT up
delete bitmap 1
`split
load bitmap "charwalkdown.bmp", 2
For down = 1 to 4
get image imagenumber, (down - 1) * 23, 0, down * 23, 32, 1
inc imagenumber
Next down
delete bitmap 2
`split
load bitmap "charwalkleft.bmp", 3
For left = 1 to 4
get image imagenumber, (left - 1) * 23, 0, left * 23, 32, 1
inc imagenumber
Next left
delete bitmap 3
`split
load bitmap "charwalkright.bmp", 4
For right = 1 to 4
get image imagenumber, (right - 1) * 23, 0, right * 23, 32, 1
inc imagenumber
Next right
delete bitmap 4
up_still_frame = 1
up_start_frame = 2
up_end_frame = 4
up_frame = up_still_frame
down_still_frame = 5
down_start_frame = 6
down_end_frame = 8
down_frame = down_still_frame
left_still_frame = 9
left_start_frame = 10
left_end_frame = 12
left_frame = left_still_frame
right_STILL_FRAME = 13
right_START_FRAME = 14
right_END_FRAME = 16
right_FRAME = right_STILL_FRAME
anypos=1
xPOS = 100
yPOS = 100
DO
IF upkey()
yPOS = yPOS - 3
INC up_FRAME
IF up_FRAME > up_END_FRAME THEN up_FRAME = up_START_FRAME
anypos=up_FRAME
else
if anypos <= 4 then anypos=1
endif
`split
IF DOWNKEY()
ypos = ypos + 3
inc down_frame
if down_frame > down_end_frame then down_frame = down_start_frame
anypos=down_frame
else
if anypos <= 8 and anypos =>5 then anypos=5
endif
`split
IF LEFTKEY()
xpos = xpos - 3
inc left_frame
if left_frame > left_end_frame then left_frame = left_start_frame
anypos=left_frame
else
if anypos <= 12 and anypos =>9 then anypos=9
endif
`split
IF rightkey()
xpos = xpos + 3
inc right_frame
if right_frame > right_end_frame then right_frame = right_start_frame
anypos=right_frame
else
if anypos <= 16 and anypos =>13 then anypos=13
endif
sprite 1, xpos, ypos, anypos
FASTSYNC
LOOP
My advice is free -
unfortunately you get what you pay for (-: