diff --git a/index.html b/index.html
index 9d76488..17bc43b 100644
--- a/index.html
+++ b/index.html
@@ -76,7 +76,7 @@ By Joshua Bell
-
+
@@ -104,6 +104,12 @@ By Joshua Bell
+
+
+
+
+
+
diff --git a/samples/sample.3dhat.txt b/samples/sample.3dhat.txt
new file mode 100644
index 0000000..58decba
--- /dev/null
+++ b/samples/sample.3dhat.txt
@@ -0,0 +1,29 @@
+1 rem MTU 80 Column 3D HAT Program
+2 REM Micro, the 6502 magazine, may 1981 page 2
+3 REM http://archive.6502.org/publications/micro/micro_36_may_1981.pdf
+4 rem https://archive.org/details/creativecomputing-1981-05/page/n67
+ 10 HGR2 : HCOLOR=3
+ 20 P=140 : Q=100 : rem original was 160 but 140 is centered on Apple II
+ 30 XP=120:XR=1.5*3.1415927
+ 40 YP=56:YR=1:ZP=64
+ 50 XF=XR/XP:YF=YP/YR:ZF=XR/ZP
+ 60 FOR ZI=-Q TO Q-1
+ 70 IF ZI<-ZP OR ZI>ZP GOTO 150
+ 80 ZT=ZI*XP/ZP:ZZ=ZI
+ 90 XL=INT(.5+SQR(XP*XP-ZT*ZT))
+ 100 FOR XI=-XL TO XL
+ 110 XT=SQR(XI*XI+ZT*ZT)*XF:XX=XI
+ 120 YY=(SIN(XT)+.4*SIN(3*XT))*YF
+ 130 GOSUB 170
+ 140 NEXT XI
+ 150 NEXT ZI
+ 160 END
+ 170 X1=XX+ZZ+P
+ 180 Y1=YY-ZZ+Q
+ 181 IF Y1<1 THEN Y1=1 : REM MUST BE 1 OR ERROR IN 210
+ 182 IF Y1>191 THEN Y1=191
+ 183 IF X1<0 THEN X1=0
+ 184 IF X1>279 THEN X1=279
+ 190 HCOLOR=3:HPLOT X1,191-Y1
+ 210 HCOLOR=0:HPLOT X1,191-(Y1-1) TO X1,191-0
+ 220 RETURN
\ No newline at end of file
diff --git a/samples/sample.dbconverge.txt b/samples/sample.dbconverge.txt
new file mode 100644
index 0000000..39a1d43
--- /dev/null
+++ b/samples/sample.dbconverge.txt
@@ -0,0 +1,49 @@
+10 rem Converge on a value demo
+15 rem Testing a routine that will smoothly converge on a value, easing into a stop
+20 rem by Golden Child
+100 hgr
+110 c=0:d=100 :gosub 5000 : ct=0
+120 co=3:x1=c:y1=0:x2=cl:y2=50:gosub 5100:x1=c2:y1=100:gosub 5100:gosub 5500 :c2=cl::c2=cl:cl=c:gosub 9000
+125 if abs(c-d)<.1 then ? "DIST="di" FRAMES="ct:d=rnd(1)*279 : ct=0 : di=d-c:?d,c,di
+130 ct=ct+1:goto 120
+
+9000 rem converge c=cur value, d=desired value, mr=max rate, md=max dist, ch=change, cd=dist to go
+9010 mr=10:md=100
+9020 cd=d-c
+9030 if cd>md then cd=md
+9040 if abs(cd)<0.1 then c=d
+9045 ch = cd/md*mr
+9050 c=c+ch: rem ?"c="c" d="d" ch="ch" ct="ct
+9051 if abs(ch)<0.1 then c=d
+9060 return
+
+5000 rem init display list : rem SC = screen to draw
+5001 dim dl(2,100,5):hgr2:hgr
+5002 SC=0 : DL(0,0,0)=0 : DL(1,0,0)=0 :gosub 5500: rem DL(X,0,0) = NUM OF POINTS
+5003 return
+
+5100 rem draw line on other screen
+5110 poke 230,(SC+1) * 32 : rem forgot the +1 part
+5111 if not(x1>=0 and x1 <=279 and x2 >=0 and x2<=279 and y1>=0 and y1 <=159 and y2>=0 and y2<=159) then return
+5120 rem bug should be DL SP = DL(SC,0,0) + 1 : SL(SC,0,0)=SP : ? sp
+5120 SP = DL(SC,0,0) + 1 : DL(SC,0,0)=SP : rem ? sp
+5130 DL(SC,SP,0)=CO
+5131 DL(SC,SP,1)=X1
+5132 DL(SC,SP,2)=Y1
+5133 DL(SC,SP,3)=X2
+5134 DL(SC,SP,4)=Y2
+5140 HCOLOR=CO : HPLOT X1,Y1 TO X2,Y2
+5190 RETURN
+
+5400 rem erase lines
+5410 for SP = 1 TO DL(SC,0,0) : HCOLOR=0 : rem ? "erase" sc ,sp
+5411 HPLOT DL(SC,SP,1),DL(SC,SP,2) TO DL(SC,SP,3),DL(SC,SP,4) : NEXT
+5412 DL(SC,0,0)=0 : rem clear the list after erasing
+5420 RETURN
+
+5500 rem swap screens
+5510 SC = NOT SC
+5511 POKE 49236+(NOT SC),0 : rem select page that we're drawing to
+5514 rem ? "SC="sc
+5515 poke 230,32*(sc+1):gosub 5400 : rem forgot to switch the drawing page
+5520 RETURN
diff --git a/samples/sample.dbpendulum.txt b/samples/sample.dbpendulum.txt
new file mode 100644
index 0000000..5dedd2a
--- /dev/null
+++ b/samples/sample.dbpendulum.txt
@@ -0,0 +1,61 @@
+1 rem Physics Pendulum Simulation by Golden Child
+2 rem A simple demo to show double buffering
+3 rem GOSUB 5000 to initialize
+4 rem GOSUB 5100 to draw a line
+5 rem GOSUB 5500 to switch pages
+10 text:home:PRINT "Hello - Pendulum Simulation"
+15 print "Double Buffering Demo by Golden Child" :
+20 fi=fi+1 : if fi>1 then home : rem first run don't clear screen
+25 vtab 23: print "Enter Gravity "+chr$(13)+"(between 0.1 and 2 work best) ";:input g : if g=0 then g=1
+26 print"GRAVITY=";g ", press a key for new gravity:"
+100 gosub 5000
+200 xv=0 : yv=0:x1=140:x2=140+80*cos(10/180*3.14)::y1=0:y2=sin(10/180*3.14)*80
+210 xa=0 : ya=+10.5:ya=g : if peek(49152)>128 then goto 20
+215 xd=x1-x2: yd=y1-y2 : al=sqr(xa^2+ya^2):dl=sqr(xd^2+yd^2):dp=(xd*xa+yd*ya)/dl:el=sqr(xv^2+yv^2):ep=(xd*xv+yd*yv)/dl
+216 rem ? "al="al" dl="dl" dp="dp " xa="xa" ya="ya" xd="xd" yd="yd" xv="xv" yv="yv
+217 xz=xd/dl*(dp):yz=yd/dl*(dp): xx=xa-xz:yx=ya-yz
+218 xv=xv+xx-xd/dl*ep*2
+219 yv=yv+yx-yd/dl*ep*2 : rem my physics routines are terrible, why *2 here?
+230 co=3:gosub 5100 :
+231 x3=x1:y3=y1:x1=x2+50*xv/sqr(xv^2+yv^2):
+232 co=5:y1=y2+50*yv/sqr(xv^2+yv^2):gosub 5100:x1=x3:y1=y3 : rem orange
+233 x3=x1:y3=y1:x1=x2+50*xa/sqr(xa^2+ya^2):
+234 co=6:y1=y2+50*ya/sqr(xa^2+ya^2):gosub 5100:x1=x3:y1=y3 : rem blue
+235 x3=x1:y3=y1:x1=x2-50*xz/sqr(xz^2+yz^2):
+236 co=1:y1=y2-50*yz/sqr(xz^2+yz^2):gosub 5100:x1=x3:y1=y3 : rem green
+237 x3=x1:y3=y1:x1=x2+50*xx/sqr(xx^2+yx^2):
+238 co=2:y1=y2+50*yx/sqr(xx^2+yx^2):gosub 5100:x1=x3:y1=y3 : rem purple
+240 gosub 5500
+241 x2=x2+xv:y2=y2+yv
+242 ct=ct+1:if ct>150 then ct=1:? dl : rem every 150 frames show length of pendulum
+250 goto 210
+
+5000 rem init display list : rem SC = screen to draw
+5001 IF NOT (dk) then dim dl(2,100,5) : dk=1
+5002 hgr2:hgr
+5003 SC=0 : DL(0,0,0)=0 : DL(1,0,0)=0 :gosub 5500: rem DL(X,0,0) = NUM OF POINTS
+5004 return
+
+5100 rem draw line on other screen
+5110 poke 230,(SC+1) * 32
+5111 if not(x1>=0 and x1 <=279 and x2 >=0 and x2<=279 and y1>=0 and y1 <=159 and y2>=0 and y2<=159) then return
+5120 SP = DL(SC,0,0) + 1 : DL(SC,0,0)=SP : rem ? sp
+5130 DL(SC,SP,0)=CO
+5131 DL(SC,SP,1)=X1
+5132 DL(SC,SP,2)=Y1
+5133 DL(SC,SP,3)=X2
+5134 DL(SC,SP,4)=Y2
+5140 HCOLOR=CO : HPLOT X1,Y1 TO X2,Y2
+5190 RETURN
+
+5400 rem erase lines
+5410 for SP = 1 TO DL(SC,0,0) : HCOLOR=0
+5411 HPLOT DL(SC,SP,1),DL(SC,SP,2) TO DL(SC,SP,3),DL(SC,SP,4) : NEXT
+5412 DL(SC,0,0)=0 : rem clear the list after erasing
+5420 RETURN
+
+5500 rem swap screens
+5510 SC = NOT SC
+5511 POKE 49236+(NOT SC),0 : rem select visible page that we're not drawing to
+5515 poke 230,32*(sc+1):gosub 5400 : rem switch drawing page and erase lines
+5520 RETURN
diff --git a/samples/sample.dbvectorship.txt b/samples/sample.dbvectorship.txt
new file mode 100644
index 0000000..f68b8f4
--- /dev/null
+++ b/samples/sample.dbvectorship.txt
@@ -0,0 +1,72 @@
+10 rem Asteroids Ship Demo
+20 rem Double Buffering Demo by Golden Child
+
+500 dim a(10,4)
+510 read p
+520 for i = 1 to p:read x,y:a(i,1)=x:a(i,2)=y:? p,i,a(p,1),a(p,2):next
+530 hgr :hcolor=3 : VTAB 23: PRINT "Double Buffering Demo:"
+531 print "END/PAGE DOWN to turn":PRINT "HOME/PAGE UP for thrust"
+532 print "click on window to set input focus";
+533 x0=139:y0=79:gosub 5000:goto 4000
+
+540 rem draw ship
+590 x2=-999 : rem dont draw first segment
+601 sz=2:for i = 1 to p:x=a(i,1)*sz:y=a(i,2)*sz:x1=x0+x*cos(a0)-y*sin(a0):y1=y0+y*cos(a0)+x*sin(a0)
+610 if x2<>-999 then if x1 > 0 and x1 < 279 and x2 > 0 and x2< 279 and y1 > 0 and y1 < 191 and y2 > 0 and y2<191 then c=3:gosub 5100
+615 x2=x1:y2=y1
+620 next
+
+621 g=0.04 :yv=yv+g : rem gravity
+622 fr=0.01 : rem friction
+623 if sqr(xv^2 + yv^2) < fr then xv=0 : yv=0: goto 630
+624 xd = xv / sqr(xv^2 + yv^2):yd=yv / sqr(xv^2 + yv^2)
+625 xv = xv - xd * fr : yv=yv - yd * fr
+630 return
+
+1000 data 5,3,0,-2,2,0,0,-2,-2,3,0,-999
+
+4000 co=3:gosub 540:gosub 5500
+4001 t=3.14/24
+4010 if peek(49248)>=128 then a0=a0+t
+4020 if peek(49250)>=128 then a0=a0-t
+4021 if peek(49249)>=128 then xv=xv+0.5*cos(a0):yv=yv+0.5*sin(a0)
+4022 if peek(49251)>=128 then xv=xv-0.5*cos(a0):yv=yv-0.5*sin(a0)
+4023 if x0 < 20 then x0=280-20
+4024 if x0 > 280-20 then x0=20
+4025 if y0<20 then y0=160-20
+4026 if y0>160-20 then y0=20
+4030 x0=x0+xv : y0=y0+yv
+4040 rem ? xv,yv
+4050 goto 4000
+
+
+
+5000 rem init display list : rem SC = screen to draw
+5001 IF NOT (dk) then dim dl(2,100,5) : dk=1
+5002 hgr2:hgr
+5003 SC=0 : DL(0,0,0)=0 : DL(1,0,0)=0 :gosub 5500: rem DL(X,0,0) = NUM OF POINTS
+5004 return
+
+5100 rem draw line on other screen
+5110 poke 230,(SC+1) * 32
+5111 if not(x1>=0 and x1 <=279 and x2 >=0 and x2<=279 and y1>=0 and y1 <=159 and y2>=0 and y2<=159) then return
+5120 SP = DL(SC,0,0) + 1 : DL(SC,0,0)=SP : rem ? sp
+5130 DL(SC,SP,0)=CO
+5131 DL(SC,SP,1)=X1
+5132 DL(SC,SP,2)=Y1
+5133 DL(SC,SP,3)=X2
+5134 DL(SC,SP,4)=Y2
+5140 HCOLOR=CO : HPLOT X1,Y1 TO X2,Y2
+5190 RETURN
+
+5400 rem erase lines
+5410 for SP = 1 TO DL(SC,0,0) : HCOLOR=0
+5411 HPLOT DL(SC,SP,1),DL(SC,SP,2) TO DL(SC,SP,3),DL(SC,SP,4) : NEXT
+5412 DL(SC,0,0)=0 : rem clear the list after erasing
+5420 RETURN
+
+5500 rem swap screens
+5510 SC = NOT SC
+5511 POKE 49236+(NOT SC),0 : rem select visible page that we're not drawing to
+5515 poke 230,32*(sc+1):gosub 5400 : rem switch drawing page and erase lines
+5520 RETURN
diff --git a/samples/sample.dbvectortext.txt b/samples/sample.dbvectortext.txt
new file mode 100644
index 0000000..f5f1c52
--- /dev/null
+++ b/samples/sample.dbvectortext.txt
@@ -0,0 +1,228 @@
+0 rem VECTOR FONT by Golden Child
+1 rem enter a message, it will render the text, hit space to enter a new message
+
+2 gosub 10000 : hgr : a$="":for i=32 to 127:a$=a$+chr$(i):next:de$="Apple Soft Basic"
+
+10 gosub 5000 : GOSUB 7000
+
+15 INPUT "Message?";a$ : if a$="" then a$=de$
+
+20 sz=16:xo=5:yo=0:x9=139:y9=80:
+21 rem for sz=2 to 8 step .5:for an=0 to 350 step 15 : REM ? an,an/180*3.1415
+22 for w=0 to 24 : sz=(8-2)*w/24+2 : an=w*360/24
+23 xo=-len(a$)/2*4:xp=-2*4:xo=xp:yo=0:for i=1 to len(a$):
+24 c1= asc(mid$(a$,i,1)) : if (c1>=asc(" ")) and (c1<=127) then c=c1-asc(" ")+1:rem ?C;" ";i;" ";CHR$(C1) : rem ? c1,c
+
+25 x2=-999:for pt=1 to l(c,0,0): x1=l(c,pt,1):y1=l(c,pt,2) :rem ? c,pt
+26 a=an/180*3.14159265359:x3=x9+(xo+x1)*sz*cos(a)-(yo+y1)*sz*sin(a):y3=y9-(yo+y1)*sz*cos(a)-(xo+x1)*sz*sin(a):rem ? x1","y1" ("x2","y2")"
+
+
+28 REM s2=1.75:a2=340/180*3.14:x8=120:y8=120:x5=xo:y5=yo:x6=x8+(x5+x1)*s2*cos(a2)-(y5+y1)*s2*sin(a2):y6=y8-(y5+y1)*s2*cos(a2)-(x5+x1)*s2*sin(a2):rem ? x1","y1" ("x2","y2")"
+
+29 rem if (x2<>-999) and (x1<>-999) then hcolor=6: if x6>0 and x6 < 280 and y6>0 and y6<160 and x7>0 and x7<280 and y7>0 and y7<160 then hplot x6,y6 to x7,y7 : rem hplot x1*sz+xo,-(y1*sz)+yo to x2*sz+xo,-(y2*sz)+yo
+35 rem if (x2<>-999) and (x1<>-999) then hcolor=5: if x6>0 and x6 < 280 and y6>0 and y6<160 and x7>0 and x7<280 and y7>0 and y7<160 and x3 < 280 and y3>0 and y3<160 and x4>0 and x4<280 and y4>0 and y4<160 then hplot x3,y3 to x6,y6 : HPLOT x4,y4 to x7,y7
+36 if (x2<>-999) and (x1<>-999) then hcolor=3: if x3>0 and x3 < 280 and y3>0 and y3<160 and x4>0 and x4<280 and y4>0 and y4<160 then s1=x1:s2=y2:s3=x2:s4=y2:x1=x3:x2=x4:y1=y3:y2=y4:co=3:gosub 5100:GOSUB 7100:x1=s1:y2=s2:x2=s3:y2=s4:rem hplot x3,y3 to x4,y4 :
+
+37 x7=x6:y7=y6
+38 x2=x1:y2=y1:x4=x3:y4=y3:next: xo=xo+4: if xo > 8*4 OR C=1 then xo=xp:yo=yo-5
+
+39 next
+
+40 gosub 5500 : GOSUB 7500 : rem ? an
+50 next
+60 rem next
+70 GOSUB 7900
+71 IF PEEK(49152)>128 THEN GOTO 15
+75 PRINT "loop. hit space for new message":GOTO 70
+
+99 end
+
+
+5000 rem init display list : rem SC = screen to draw
+5001 IF NOT (dk) then dim dl(2,100,5) : dk=1
+5002 hgr2:hgr
+5003 SC=0 : DL(0,0,0)=0 : DL(1,0,0)=0 :gosub 5500: rem DL(X,0,0) = NUM OF POINTS
+5004 return
+
+5100 rem draw line on other screen
+5110 poke 230,(SC+1) * 32
+5111 if not(x1>=0 and x1 <=279 and x2 >=0 and x2<=279 and y1>=0 and y1 <=159 and y2>=0 and y2<=159) then return
+5120 SP = DL(SC,0,0) + 1 : DL(SC,0,0)=SP : rem ? sp
+5130 DL(SC,SP,0)=CO
+5131 DL(SC,SP,1)=X1
+5132 DL(SC,SP,2)=Y1
+5133 DL(SC,SP,3)=X2
+5134 DL(SC,SP,4)=Y2
+5140 HCOLOR=CO : HPLOT X1,Y1 TO X2,Y2
+5190 RETURN
+
+5400 rem erase lines
+5410 for SP = 1 TO DL(SC,0,0) : HCOLOR=0
+5411 HPLOT DL(SC,SP,1),DL(SC,SP,2) TO DL(SC,SP,3),DL(SC,SP,4) : NEXT
+5412 DL(SC,0,0)=0 : rem clear the list after erasing
+5420 RETURN
+
+5500 rem swap screens
+5510 SC = NOT SC
+5511 POKE 49236+(NOT SC),0 : rem select visible page that we're not drawing to
+5515 poke 230,32*(sc+1):gosub 5400 : rem switch drawing page and erase lines
+5520 RETURN
+
+8032 data 0,0,-998 : rem space
+8033 data 1.5,4,1.5,1.5,-999,1.25,0,1.25,.5,1.75,.5,1.75,0,1.25,0,-998 : rem !
+8034 DATA 1,4,1,3,-999,2,4,2,3,-998 : REM "
+8035 data 1,4,1,0,-999,2,4,2,0,-999,0,1.5,3,1.5,-999,0,2.5,3,2.5,-998: rem #
+8036 data 3,3.5,2.5,4,.5,4,0,3.5,0,2.5,.5,2,2.5,2,3,1.5,3,.5,2.5,0,.5,0,0,.5,-999,1.0,0,1.0,4,-999,2,0,2,4,-998 : rem $
+8037 data 0,0,3,4,-999,0,3,1,3,1,4,0,4,0,3,-999,2,0,2,1,3,1,3,0,2,0,-998 : rem %
+
+8038 data 3,2,1.5,0,.5,0,0,1,0,2,1.5,3,1.5,3.5,1,4,.5,4,0,3.5,0,3,3,0,-998 : rem &
+
+8039 data 1.5,4,1.5,3,-998 : rem '
+8040 data 2,4,1,3,1,1,2,0,-998 : rem (
+8041 data 1,4,2,3,2,1,1,0,-998 : rem )
+8042 data 1.5,.5,1.5,3.5,-999,0,2,3,2,-999,0,1,3,3,-999,0,3,3,1,-998 : rem *
+8043 data 1.5,.5,1.5,3.5,-999,0,2,3,2,-998 : rem +
+8044 data 1.25,.5,1.25,1,1.75,1,1.75,.5,1.5,0,1,0,1.5,0,1.5,.5,1.25,.5,-998 : rem ,
+8045 data 0,2,3,2,-998 : rem -
+8046 data 1.25,.5,1.25,1,1.75,1,1.75,.5,1.25,.5,-998 : rem .
+8047 data 0,0,3,4,-998 : rem /
+
+
+8048 DATA 0,0,0,4,3,4,3,0,0,0,3,4,-998 : REM 0
+8049 DATA 3,0,3,4,-998 : REM 1
+8050 DATA 0,4,3,4,3,2,0,2,0,0,3,0,-998 : REM 2
+8051 DATA 0,4,3,4,3,2,0,2,3,2,3,0,0,0,-998 : REM 3
+8052 DATA 0,4,0,2,3,2,3,4,3,0,-998 : REM 4
+8053 DATA 3,4,0,4,0,2,3,2,3,0,0,0,-998 : REM 5
+8054 DATA 3,4,0,4,0,0,3,0,3,2,0,2,-998 : REM 6
+8055 DATA 0,4,3,4,3,0,-998 : REM 7
+8056 DATA 0,0,3,0,3,4,0,4,0,0,-999,0,2,3,2,-998 : REM 8
+8057 DATA 0,0,3,0,3,4,0,4,0,2,3,2,-998 : REM 9
+
+8058 data 1.25,.5,1.25,1,1.75,1,1.75,.5,1.25,.5,-999,1.25,2,1.25,2.5,1.75,2.5,1.75,2,1.25,2,-998 : rem :
+8059 data 1.25,.5,1.25,1,1.75,1,1.75,.5,1.5,0,1,0,1.5,0,1.5,.5,1.25,.5,-999,1.25,2,1.25,2.5,1.75,2.5,1.75,2,1.25,2,-998 : rem ;
+
+8060 data 3,4,0,2,3,0, -998 : rem <
+8061 data 0,2.5,3,2.5,-999,0,1.5,3,1.5,-998 : rem =
+8062 data 0,4,3,2,0,0, -998 : rem >
+8063 data 0,3.5,.5,4,2.5,4,3,3.5,3,2.5,2.5,2,1.5,2,1.5,1.5,-999,1.25,.5,1.25,1,1.75,1,1.75,.5,1.25,.5,-998 : rem ?
+8064 data 2,2.5,1,2.5,1,1.5,2,1.5,2,2.5,2,1.5,3,2,3,3,2,4,1,4,0,3,0,1,1,0,2,0,-998 : rem @
+
+9000 DATA 0,0,0,3.5,0.5,4,2.5,4,3,3.5,3,0,-999,0,2,3,2,-998 : rem a
+9001 data 0,0,0,4,2.5,4,3,3.5,3,2.5,2.5,2,0,2,-999,2.5,2,3,1.5,3,.5,2.5,0,0,0,-998 : rem b
+9002 data 3,.5,2.5,0,.5,0,0,.5,0,3.5,.5,4,2.5,4,3,3.5,-998 : rem c
+9003 data 0,0,0,4,2.5,4,3,3.5,3,.5,2.5,0,0,0,-998 : rem d
+9004 DATA 3,4,0,4,0,0,3,0,-999,0,2,3,2,-998 : rem e
+9005 DATA 0,0,0,4,3,4,-999,0,2,2,2,-998 : rem f
+9006 DATA 3,3.5,2.5,4,.5,4,0,3.5,0,.5,.5,0,2.5,0,3,.5,3,2,1.5,2,-998 : rem g
+9007 DATA 0,0,0,4,-999,3,0,3,4,-999,0,2,3,2,-998 : rem h
+9008 DATA 1.5,0,1.5,4,-998 : rem i
+9009 DATA 3,4,3,.5,2.5,0,.5,0,0,.5,-998 : rem j
+
+9011 DATA 0,0,0,4,-999,0,2,1,2,3,4,-999,1,2,3,0,-998 : rem k
+9012 DATA 0,4,0,0,3,0,-998 : rem L
+9013 data 0,0,0,4,1.5,2.5,3,4,3,0,-998 : rem m
+9014 data 0,0,0,4,3,0,3,4,-998 : rem n
+9015 data 3,.5,2.5,0,.5,0,0,.5,0,3.5,.5,4,2.5,4,3,3.5,3,.5,-998 : rem o
+9016 DATA 0,0,0,4,2.5,4,3,3.5,3,2.5,2.5,2,0,2,-998 : rem p
+9017 data 3,.5,2.5,0,.5,0,0,.5,0,3.5,.5,4,2.5,4,3,3.5,3,.5,-999,3,0,1.5,1.5,-998 : rem q
+9010 DATA 0,0,0,4,2.5,4,3,3.5,3,2.5,2.5,2,0,2,-999,1,2,3,0,-998 : rem r
+9019 data 3,3.5,2.5,4,.5,4,0,3.5,0,2.5,.5,2,2.5,2,3,1.5,3,.5,2.5,0,.5,0,0,.5,-998 : rem s
+9020 data 0,4,3,4,-999,1.5,0,1.5,4,-998 :rem T
+9021 data 0,4,0,.5,.5,0,2.5,0,3,.5,3,4,-998 :rem u
+9022 data 0,4,0,1.5,1.5,0,3,1.5,3,4,-998 :rem v
+9023 data 0,4,0,0,1.5,1.5,3,0,3,4,-998 :rem w
+9024 data 0,4,0,3,3,1,3,0,-999,3,4,3,3,0,1,0,0,-998 :rem x
+9025 data 0,4,0,3,1.5,2,3,3,3,4,-999,1.5,2,1.5,0,-998: rem y
+9026 data 0,4,3,4,3,3,0,1,0,0,3,0,-998: rem z
+
+9091 data 2,4,1,4,1,0,2,0,-998 : rem [
+9092 data 0,4,3,0,-998 : rem \
+9093 data 1,4,2,4,2,0,1,0,-998 : rem ]
+9094 data 0,2.5,1.5,4,3,2.5,-998 : rem ^
+9095 data 0,0,3,0,-998 : rem _
+
+9096 data 1,4,2,3, -998 : rem `
+9097 data 0,2.5,3,2.5,3,0,0,0,0,1.5,3,1.5, -998 : rem a lowercase
+9098 data 0,4,0,0,3,0,3,2.5,0,2.5,-998 : rem b
+9099 data 3,2.5,0,2.5,0,0,3,0,-998 : rem c
+9100 data 3,4,3,0,0,0,0,2.5,3,2.5, -998 : rem d
+9101 data 0,1.5,3,1.5,3,2.5,0,2.5,0,0,3,0,-998 : rem e
+9102 data 3,2.5,.5,2.5,0,2,0,1.5,2,1.5,0,1.5,0,0, -998 : rem f
+
+9103 data 3,1.5,0,1.5,0,2.5,3,2.5,3,0,0,0,-998 : rem g
+9104 data 0,4,0,0,0,2.5,3,2.5,3,0,-998 : rem h
+9105 data 1.5,0,1.5,2,-999,1.5,2.5,1.5,3,-998 : rem i
+9106 data 3,2,3,0,0,0,-999,3,2.5,3,3,-998 : rem j
+9107 data 0,4,0,0,0,1.5,3,2.5,0,1.5,3,0, -998 : rem k
+9108 data 1.5,0,1.5,4,1.0,4,-998 : rem l
+9109 data 0,0,0,2.5,1.5,2.5,1.5,0,-999,1.5,2.5,3,2.5,3,0,-998 : rem m
+9110 data 0,0,0,2.5,2.5,2.5,3,2.0,3,0,-998 : rem n
+9111 data 0,0,0,2.5,3,2.5,3,0,0,0,-998 : rem o
+9112 data 0,0,0,2.5,3,2.5,3,1.5,0,1.5,-998 : rem p
+9113 data 3,0,3,2.5,0,2.5,0,1.5,3,1.5,-998 : rem q
+9114 data 0,0,0,2,.5,2.5,3,2.5,-998 : rem r
+9115 data 3,2.5,0,2.5,0,1.5,3,1.5,3,0,0,0,-998 : rem s
+9116 data 0,2.5,3,2.5,-999,1.5,4,1.5,0,-998 : rem t
+9117 data 0,2.5,0,.5,.5,0,3,0,3,2.5,-998 : rem u
+9118 data 0,2.5,0,1.5,1.5,0,3,1.5,3,2.5,-998 : rem v
+9119 data 0,2.5,0,0.5,.5,0,1.5,0,1.5,2.5,-999,1.5,0,3,0,3,2.5,-998 : rem w
+9120 data 0,2.5,3,0,-999,3,2.5,0,0,-998 : rem x
+9121 data 0,2.5,0,1.5,3,1.5,3,2.5,3,0,0,0,-998 : rem y
+9122 data 0,2.5,3,2.5,0,0,3,0,-998 : rem z
+9123 data 2,4,1,3,1,2.5,.5,2,1,1.5,1,1,2,0,-998 : rem {
+9124 data 1.5,4,1.5,0,-998 : rem |
+9125 data 1,4,2,3, 2,2.5, 2.5,2, 2,1.5,2,1,1,0,-998 : rem }
+9126 data 0,3,1,4,2,3,3,4,-998 : rem ~
+9127 data 0,3,1,4,-999,0,2,2,4,-999,0,1,3,4,-999,0,0,3,3,-999,1,0,3,2,-999,2,0,3,1,-999,0,0,0,4,3,4,3,0,0,0,-998 : rem del
+9128 data -997
+
+
+
+
+10000 dim l(128,24,2) : rem 5,0,0 is number of points
+10005 nm=1
+10010 pt=0
+10020 read n :
+10025 if n = -997 then return
+10030 if n = -998 then nm=nm+1 : goto 10010
+10040 ? "nm="nm" pt="pt" ";:pt=pt+1:l(nm,pt,1)=n : l(nm,0,0)=pt
+10050 if n<>-999 then read n
+10060 l(nm,pt,2)=n
+10065 ? l(nm,pt,1)","l(nm,pt,2)
+10070 goto 10020
+
+
+6000 rem converge 1,2, current value of x,y 3,4, target 56 distance 7 maxspeed 8 maxdist
+6100
+
+7000 dim FL(2000,100,6) : F = 1 : REM FRAMELIST F
+7001 return
+
+7100 rem draw line on frame
+7111 if not(x1>=0 and x1 <=279 and x2 >=0 and x2<=279 and y1>=0 and y1 <=159 and y2>=0 and y2<=159) then return
+7120 FP = FL(F,0,0) + 1 : FL(F,0,0)=FP : rem ? FP FRAME POINT, F=FRAME NUMBER
+7130 FL(F,FP,0)=CO
+7131 FL(F,FP,1)=X1
+7132 FL(F,FP,2)=Y1
+7133 FL(F,FP,3)=X2
+7134 FL(F,FP,4)=Y2
+7140 REM HCOLOR=CO : HPLOT X1,Y1 TO X2,Y2
+7199 RETURN
+
+7500 rem swap screens and return
+7501 F=F+1
+7599 return
+
+7900 FC=F: REM GOSUB 5000:
+7905 FOR F=1 TO FC-1
+7910 for FP = 1 TO FL(F,0,0) : CO=FL(F,FP,0)
+7911 X1=FL(F,FP,1) : Y1=FL(F,FP,2) :X2=FL(F,FP,3):Y2=FL(F,FP,4) : GOSUB 5100
+7915 NEXT : GOSUB 5500 : NEXT : F = FC
+
+7925 FC=F : FOR F=FC-1 TO 1 STEP -1
+7930 for FP = 1 TO FL(F,0,0) : CO=FL(F,FP,0)
+7941 X1=FL(F,FP,1) : Y1=FL(F,FP,2) :X2=FL(F,FP,3):Y2=FL(F,FP,4) : GOSUB 5100
+7955 NEXT : GOSUB 5500 : NEXT : F = FC
+
+7960 RETURN