'- i really don't know if there is some stack issue, and if we can solve this way
asm
  ld sp,$EFFF
  ;ld sp,$43AF
  end asm

#include "./library/pacmandelay.bas"
#include "./library/pacmanputsprite.bas"
#include "./library/smsrnd.bas"

dim i as uinteger at $4C00
dim eee as uinteger at $4C02
dim seed as uinteger at $4C04

dim ee2 as uinteger at $4C06
dim ee3 as uinteger at $4C08
dim ee4 as ubyte at $4C0A
dim ecsp as ubyte at $4C0C
dim ecsq as ubyte at $4C0E

dim ex0 as uinteger at $4C10
dim ey0 as uinteger at $4C12
dim ex1 as uinteger at $4C14
dim ey1 as uinteger at $4C16
dim ex2 as uinteger at $4C18
dim ey2 as uinteger at $4C1A
dim ex3 as uinteger at $4C1C
dim ey3 as uinteger at $4C1E

dim ex4 as uinteger at $4C20
dim ey4 as uinteger at $4C22
dim ex5 as uinteger at $4C24
dim ey5 as uinteger at $4C26
dim ex6 as uinteger at $4C28
dim ey6 as uinteger at $4C2A
dim ex7 as uinteger at $4C2C
dim ey7 as uinteger at $4C2E

dim ej0 as uinteger at $4C30
dim ej1 as uinteger at $4C32

function test1(t1 as uinteger,t2 as uinteger,t3 as uinteger,t4 as uinteger)  as uinteger
  end function

sub zpoke(t1 as uinteger,t2 as ubyte)
  poke t1,t2
  end sub

sub putchar(tx1 as uinteger, ty1 as uinteger, tch1 as uinteger)
  poke ($4000+(tx1*32)+ty1) bxor %0000001111100000,(tch1 band 255)
  end sub

pacmanputsprite(0,21,10,4,3)
pacmanputsprite(1,21,30,4,3)
pacmanputsprite(2,21,50,4,3)
pacmanputsprite(3,21,70,4,3)
pacmanputsprite(4,21,90,4,3)
pacmanputsprite(5,21,110,4,3)
pacmanputsprite(6,21,130,4,3)
pacmanputsprite(7,21,150,4,3)

seed=0

poke $4300,code("*")
poke $4200,code("*")
poke $4100,code("*")

poke $4010,code("0")
poke $400F,code("1")
poke $4030,code("2")
poke $402F,code("3")

poke $43D0,code("0")
poke $43CF,code("1")
poke $43F0,code("2")
poke $43EF,code("3")

for ee2=0 to 11
  poke ($4000+((ee2+12)*32)+13) bxor %0000001111100000,peek(@text01+ee2)
  next

for ee2=0 to 11
  poke ($4000+(0*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+64
  next

for ee2=0 to 11
  poke ($4000+(31*32)+(ee2+12)) bxor %0000000000011111,peek(@text01+ee2)+128
  next

ee4=0
for ee3=15 to 15+15
  for ee2=12 to 12+15
    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,ee4
    ee4=ee4+1
    next
    next

for ee2=22 to 25
  for ee3=6 to 9
    poke ($4000+(ee2*32)+ee3) bxor %0000001111100000,code("X")
    next
    next

test1(377,2445,63888,2342)

eee=$4207
i=code("Q")
poke eee,i
eee=eee+1
i=code("T")
poke eee,i

seed=0
for eee=$4400 to $47FF
  seed=smsrnd(seed)
  poke eee,seed
  next

ex0=20:ey0=10
ex1=20:ey1=30
ex2=20:ey2=50
ex3=20:ey3=70
ex4=20:ey4=90
ex5=20:ey5=110
ex6=20:ey6=130
ex7=20:ey7=150
eee=0
ecsp=0:ecsq=0

do
poke $50C0,255 '- watchdog? - it seems to work! thanks, Jim Bagley!!!!

ej0=peek($5000) bxor $ff
ej1=peek($5040) bxor $ff

poke ($4000+(6*32)+20) bxor %0000001111100000,ej0
poke ($4000+(7*32)+20) bxor %0000001111100000,ej1

poke ($4000+(8*32)+22) bxor %0000001111100000,48+(ex0 mod 10)
poke ($4000+(7*32)+22) bxor %0000001111100000,48+((int(ex0/10)) mod 10)
poke ($4000+(6*32)+22) bxor %0000001111100000,48+((int(ex0/100)) mod 10)

poke ($4000+(8*32)+23) bxor %0000001111100000,48+(ey0 mod 10)
poke ($4000+(7*32)+23) bxor %0000001111100000,48+((int(ey0/10)) mod 10)
poke ($4000+(6*32)+23) bxor %0000001111100000,48+((int(ey0/100)) mod 10)

poke ($4000+(8*32)+24) bxor %0000001111100000,48+(eee mod 10)
poke ($4000+(7*32)+24) bxor %0000001111100000,48+((int(eee/10)) mod 10)
poke ($4000+(6*32)+24) bxor %0000001111100000,48+((int(eee/100)) mod 10)
poke ($4000+(5*32)+24) bxor %0000001111100000,48+((int(eee/1000)) mod 10)
poke ($4000+(4*32)+24) bxor %0000001111100000,48+((int(eee/10000)) mod 10)

poke ($4000+(8*32)+25) bxor %0000001111100000,48+(ej0 mod 10)
poke ($4000+(7*32)+25) bxor %0000001111100000,48+((int(ej0/10)) mod 10)
poke ($4000+(6*32)+25) bxor %0000001111100000,48+((int(ej0/100)) mod 10)

poke ($4000+(8*32)+26) bxor %0000001111100000,48+(ej1 mod 10)
poke ($4000+(7*32)+26) bxor %0000001111100000,48+((int(ej1/10)) mod 10)
poke ($4000+(6*32)+26) bxor %0000001111100000,48+((int(ej1/100)) mod 10)

poke ($4000+(8*32)+27) bxor %0000001111100000,48+(ecsp mod 10)


if ecsp=0 then:
  if (ej0 band 1)<>0 then: ey0=ey0-1:end if
  if (ej0 band 2)<>0 then: ex0=ex0-1:end if
  if (ej0 band 4)<>0 then: ex0=ex0+1:end if
  if (ej0 band 8)<>0 then: ey0=ey0+1:end if
  end if

if ecsp=1 then:
  if (ej0 band 1)<>0 then: ey1=ey1-1:end if
  if (ej0 band 2)<>0 then: ex1=ex1-1:end if
  if (ej0 band 4)<>0 then: ex1=ex1+1:end if
  if (ej0 band 8)<>0 then: ey1=ey1+1:end if
  end if

if ecsp=2 then:
  if (ej0 band 1)<>0 then: ey2=ey2-1:end if
  if (ej0 band 2)<>0 then: ex2=ex2-1:end if
  if (ej0 band 4)<>0 then: ex2=ex2+1:end if
  if (ej0 band 8)<>0 then: ey2=ey2+1:end if
  end if

if ecsp=3 then:
  if (ej0 band 1)<>0 then: ey3=ey3-1:end if
  if (ej0 band 2)<>0 then: ex3=ex3-1:end if
  if (ej0 band 4)<>0 then: ex3=ex3+1:end if
  if (ej0 band 8)<>0 then: ey3=ey3+1:end if
  end if

if ecsp=4 then:
  if (ej0 band 1)<>0 then: ey4=ey4-1:end if
  if (ej0 band 2)<>0 then: ex4=ex4-1:end if
  if (ej0 band 4)<>0 then: ex4=ex4+1:end if
  if (ej0 band 8)<>0 then: ey4=ey4+1:end if
  end if

if ecsp=5 then:
  if (ej0 band 1)<>0 then: ey5=ey5-1:end if
  if (ej0 band 2)<>0 then: ex5=ex5-1:end if
  if (ej0 band 4)<>0 then: ex5=ex5+1:end if
  if (ej0 band 8)<>0 then: ey5=ey5+1:end if
  end if

if ecsp=6 then:
  if (ej0 band 1)<>0 then: ey6=ey6-1:end if
  if (ej0 band 2)<>0 then: ex6=ex6-1:end if
  if (ej0 band 4)<>0 then: ex6=ex6+1:end if
  if (ej0 band 8)<>0 then: ey6=ey6+1:end if
  end if

if ecsp=7 then:
  if (ej0 band 1)<>0 then: ey7=ey7-1:end if
  if (ej0 band 2)<>0 then: ex7=ex7-1:end if
  if (ej0 band 4)<>0 then: ex7=ex7+1:end if
  if (ej0 band 8)<>0 then: ey7=ey7+1:end if
  end if

if (ej1 band 15)<>0 then: ecsq=ecsq+1:end if
ecsp=(int(ecsq/4))mod 8

ee3=int(eee/4)

pacmanputsprite(0,ex0,ey0,4,3)  '- layer,x,y,id,clut
pacmanputsprite(1,ex1,ey1,ee3,3)  '- layer,x,y,id,clut
pacmanputsprite(2,ex2,ey2,4,ee3)  '- layer,x,y,id,clut
pacmanputsprite(3,ex3,ey3,ee3,ee3)  '- layer,x,y,id,clut
pacmanputsprite(4,ex4,ey4,4,3)  '- layer,x,y,id,clut
pacmanputsprite(5,ex5,ey5,ee3,3)  '- layer,x,y,id,clut
pacmanputsprite(6,ex6,ey6,4,ee3)  '- layer,x,y,id,clut
pacmanputsprite(7,ex7,ey7,ee3,ee3)  '- layer,x,y,id,clut

eee=eee+1
loop

'-------------------------------------------------------------------------------

do
loop

'-------------------------------------------------------------------------------

text01:
asm
  defb "HELLO WORLD!!!!!"
  end asm

'-------------------------------------------------------------------------------

poke $5000,255

'- this should put some characters on the pattern display area
for i=0 to 255
  poke $4040+i,i
  poke $4440+i,i
  next

do
loop

'-------------------------------------------------------------------------------



