; Hex is a crippled version of DispHex
; Dec is done by me, and it should work, did for me at least :P
; The rest is written by me too :)
macro Dec Num {
local d0,d1,d2,tp

if Num <=9
 d0 = '0' + Num
 db d0
else
 if Num <= 99
  d0 = Num/10
  tp = (d0)
  d0 = '0' + d0
  d1 = Num - (tp*10)
  d1 = '0' + d1

  db d0,d1
 end if
end if
if Num > 99
local ta
 d3 = Num/100
 ta = (d3)

 d0 = (Num-ta)/10
 tp = (d0)
 d0 = '0' + d0
 d1 = Num - (tp*10)
 d1 = '0' + d1

 db d0,d1,d3
end if
}

macro Hex Num {
local d8,d7
    d7 = '0'+ Num shr 4 and 0Fh
    d8 = '0'+ Num and 0Fh

    if d7>'9'
        d7 = d7 + 'A'-'9'-1
    end if
    if d8>'9'
        d8 = d8 + 'A'-'9'-1
    end if
    db "0x",d7, d8
}

macro image width, height{
 db "#define cursor_width "
 Dec width
 db 13,10, "#define cursor_height "
 Dec height
 db 13,10
 db "static char cursor_bits[] = {",13,10
}


macro idata [a,b,c,d,e,f,g,h]{
common
 local index
 index = 0
forward index = index + 1

forward
;  _char = (h + (g*2) + (f*4) + (e*8) + (d*16) + (c*32) + (b*64) + (a*128))
  _char = (h*128) + (g*64) + (f*32) + (e*16) + (d*8) + (c*4) + (b*2) + (a*1)
  Hex _char
  if index > 1
  db ','
  end if
  if (index mod 4) = 1
   db 13,10
  end if
  index = index - 1
}

macro eof{
  db "};"
}

image 8*4,10
idata \
0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,\
0,0,1,0,0,1,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,\
0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,\
0,0,1,0,0,0,0,0, 0,0,1,1,1,0,0,0, 0,0,1,1,1,0,0,0, 0,1,1,1,0,1,1,0,\
0,0,1,0,0,0,0,0, 0,0,0,0,0,1,0,0, 0,1,0,0,0,1,0,0, 0,1,0,0,1,0,0,1,\
0,1,1,1,0,0,0,0, 0,0,1,1,1,1,0,0, 0,1,0,0,0,0,0,0, 0,1,0,0,1,0,0,1,\
0,0,1,0,0,0,0,0, 0,1,0,0,0,1,0,0, 0,0,1,1,1,0,0,0, 0,1,0,0,1,0,0,1,\
0,0,1,0,0,0,0,0, 0,1,0,0,0,1,0,0, 0,0,0,0,0,1,0,0, 0,1,0,0,1,0,0,1,\
0,0,1,0,0,0,0,0, 0,1,0,0,0,1,0,0, 0,1,0,0,0,1,0,0, 0,1,0,0,1,0,0,1,\
0,0,1,0,0,0,0,0, 0,0,1,1,1,0,1,0, 0,0,1,1,1,0,0,0, 0,1,0,0,1,0,0,1
eof
