setup() 
hits=0
nhits=1
move=5
plx=317
ply=482
enx=310
eny=100
open window 640,512
repeat
setdrawbuf d
d=1-d
setdispbuf d
clear window
setrgb 1,255,0,0
text 10,10,"Level:"
text 70,10,str$(nhits)
text 10,20,"Hits:"
text 70,20,str$(hits)
setrgb 1,29,195,65
fill rectangle 640,502 to 0,512
gosub draw_player
gosub enemy
c=peek("port1")
if and(c,32768)>0 gosub shoot
if and(c,32)>0 plx=plx+5
if and(c,128)>0 plx=plx-5
if plx>634 plx=634
if plx<0   plx=0
if ply>512 ply=512
if ply<0   ply=0
until (and(peek("port1"),1)>0)
clear window
repeat
setdrawbuf d
d=1-d
setdispbuf d
setrgb 1,255,0,0
scaletext(270,206,370,306,"Bye")
until(and(peek("port1"),1)>0)
exit

label enemy
setrgb 1,255,0,0
fill rectangle enx,eny to enx+20,eny+20
enx=enx+move
if enx>640 or enx<0 move=-move
return

label shoot
setrgb 1,0,153,255
fill rectangle plx,ply to plx+6,eny+20
if plx>enx-5 and plx<enx+25 hits=hits+1
if hits=nhits gosub nlevel
return

label nlevel
nhits=nhits+1
hits=0
if nhits=101 gosub endgame
return

label draw_player
setrgb 1,0,98,37
fill rectangle plx,ply to plx+6,ply+20
fill rectangle plx-6,ply+10 to plx+12,ply+16
setrgb 1,255,255,255
fill circle plx-5,ply+18,2
fill circle plx-1,ply+18,2
fill circle plx+3,ply+18,2
fill circle plx+7,ply+18,2
fill circle plx+11,ply+18,2
return


label endgame
repeat
setdispbuf d
d=1-d
setdrawbuf d
clear window
setrgb 0,0,255,0
setrgb 1,0,0,255
text 300,251,"You Win!"
until (and(peek("port1"),8)>0)
exit
return


SUB setup()
OPEN WINDOW 640,512
DIM chr(255,15)
READ width,height,c
FOR i=1 TO c
READ chr
FOR j=0 TO height-1
READ chr(chr,j)
NEXT j
NEXT i
END SUB

SUB scaletext(textx1,texty1,textx2,texty2,text$)
scalex=ABS(textx2-textx1)/(LEN(text$)*width)
scaley=ABS(texty2-texty1)/height
textx=MIN(textx1,textx2)-scalex
texty=MIN(texty1,texty2)
lent=LEN(text$)
addx=scalex*width
bit=2^width
position=0
REPEAT position=position+1
chr=ASC(MID$(text$,position,1))
textx=textx+addx
textline=0
ty=texty
REPEAT bits=1
chrline=chr(chr,textline)
tx=textx
REPEAT
IF AND(bits,chrline)>0 FILL RECTANGLE tx,ty TO tx+scalex,ty+scaley  
tx=tx-scalex
bits=bits*2
UNTIL (bits=bit)
ty=ty+scaley
textline=textline+1
UNTIL (textline=height)
UNTIL (position=lent)
END SUB

REM size of font (8 bits by 8 bytes)
DATA 8,8

REM number of characters defined
DATA 62

' *******************************
' The number set
' *******************************
DATA 48
DATA 0,60,70,74,82,98,60,0
DATA 49
DATA 0,48,80,16,16,16,124,0
DATA 50
DATA 0,60,66,2,60,64,126,0
DATA 51
DATA 0,60,66,12,2,66,60,0
DATA 52
DATA 0,8,24,40,72,126,8,0
DATA 53
DATA 0,126,64,124,2,66,60,0
DATA 54
DATA 0,60,64,124,66,66,60,0
DATA 55
DATA 0,126,2,4,8,16,16,0
DATA 56
DATA 0,60,66,60,66,66,60,0
DATA 57
DATA 0,60,66,66,62,2,60,0

' *******************************
' Capital letters
' *******************************
DATA 65
DATA 0,60,66,66,126,66,66,0
DATA 66
DATA 0,124,66,124,66,66,124,0
DATA 67
DATA 0,60,66,64,64,66,60,0
DATA 68
DATA 0,120,68,66,66,68,120,0
DATA 69
DATA 0,126,64,124,64,64,126,0
DATA 70
DATA 0,126,64,124,64,64,64,0
DATA 71
DATA 0,60,66,64,78,66,60,0
DATA 72
DATA 0,66,66,126,66,66,66,0
DATA 73
DATA 0,62,8,8,8,8,62,0
DATA 74
DATA 0,2,2,2,66,66,60,0
DATA 75
DATA 0,68,72,112,72,68,66,0
DATA 76
DATA 0,64,64,64,64,64,126,0
DATA 77
DATA 0,66,102,90,66,66,66,0
DATA 78
DATA 0,66,98,82,74,70,66,0
DATA 79
DATA 0,60,66,66,66,66,60,0
DATA 80
DATA 0,124,66,66,124,64,64,0
DATA 81
DATA 0,60,66,66,82,74,60,0
DATA 82
DATA 0,124,66,66,124,68,66,0
DATA 83
DATA 0,60,64,60,2,66,60,0
DATA 84
DATA 0,254,16,16,16,16,16,0
DATA 85
DATA 0,66,66,66,66,66,60,0
DATA 86
DATA 0,66,66,66,66,36,24,0
DATA 87
DATA 0,66,66,66,66,90,36,0
DATA 88
DATA 0,66,36,24,24,36,66,0
DATA 89
DATA 0,130,68,40,16,16,16,0
DATA 90
DATA 0,126,4,8,16,32,126,0

' *******************************
' Lower Case Letters
' *******************************
DATA 97
DATA 0,0,56,4,60,68,60,0
DATA 98
DATA 0,32,32,60,34,34,60,0
DATA 99
DATA 0,0,28,32,32,32,28,0
DATA 100
DATA 0,4,4,60,68,68,60,0
DATA 101
DATA 0,0,56,68,120,64,60,0
DATA 102
DATA 0,24,32,48,32,32,32,0
DATA 103
DATA 0,0,60,68,68,60,4,56
DATA 104
DATA 0,64,64,120,68,68,68,0
DATA 105
DATA 0,16,0,48,16,16,56,0
DATA 106
DATA 0,8,0,8,8,8,72,48
DATA 107
DATA 0,32,40,48,48,40,36,0
DATA 108
DATA 0,32,32,32,32,32,24,0
DATA 109
DATA 0,0,0,104,84,84,84,0
DATA 110
DATA 0,0,0,120,68,68,68,0
DATA 111
DATA 0,0,56,68,68,68,56,0
DATA 112
DATA 0,0,120,68,68,120,64,64
DATA 113
DATA 0,0,60,68,68,60,4,6
DATA 114
DATA 0,0,28,32,32,32,32,0
DATA 115
DATA 0,0,56,64,56,4,120,0
DATA 116
DATA 0,16,56,16,16,16,12,0
DATA 117
DATA 0,0,68,68,68,68,56,0
DATA 118
DATA 0,0,68,68,40,40,16,0
DATA 119
DATA 0,0,84,84,84,84,40,0
DATA 120
DATA 0,0,68,40,16,40,68,0
DATA 121
DATA 0,0,68,68,68,60,4,56
DATA 122
DATA 0,0,124,8,16,32,124,0



