swifturtle#1%%Swift Turtle 1.1 (Mcoder 3 version) (c) Arjun Nair - 2008/2009 specially for CGC 2008! 0:1:7: ****** Init section ***** Mnword=25:v$(25,2):7010b:f=1nword:v$(f):f papercol=1:inkcol=7:pe=0:pu=0:ht=0:mm=0:mlen=1:rep=0:oldht=0:nmacros=20:m$(20,10 ) r9 ,7;6;1;" Swift Turtle ";0;10 ,7;5;" Arjun Nair 2008" ?#0;4;" Type 'eh' for help anytime.":0: lorgx=100d:orgy=100d:h=90Z:head=h:origin and heading (in degrees), in polar co-ordinates 0x=orgx:y=orgy:x,y:6000p:turtle coords (***** input section ***** -5000:display hud 2\c$="":curx=1:0:#0;1,0;" " 3j#0;1,0;">";1,curx;1;"";0:0:a$=:a$=13 557 4{a$=12 #0;1,curx;" ":curx=curx-(curx>1):c$=c$(curx-1-(1curx>2)):513 5#a$=12 curx=2c$="" 6Bc$=c$+a$:#0;1,curx;a$:curx=curx+1:513 7&a$="":n=65535:reset commands 9c$="pu"c$="lm"c$="eh"c$="sv"c$="ld"c$="hm"c$="pd"c$="cs"c$="ht"c$="st"c$="pp"c$="pe"c$="ms"c$="me"c$="cm"c$="rm"c$=c$+" -1":we need a number so add a dummy for special commands <f=1̱c$ Fpc$(f)=" "a$=c$(f-1):85U:a$"sp"n=c$(f̱c$):f=c$:PRINT #0;AT 0,0;a$;" ";(STR$ n AND n>-1) P f:90Z ULc$(f+1̱c$)=""c$=c$+"0":a$="":sanity check for invalid 2nd input Va$="sp"f=c$:n=255 W Zha$=""n=65535#0;1,0;"INVALID INPUT! Try again!":1,10 :502 \found=0 _-f=1nword:a$=v$(f)found=f:f=nword ` f:found4000:98b aa$="":90Z bD6000p:found*100d:6000p:5000:rep>0 c 502 d***** Forward ***** nnx=n*(*h/180) xny=n*(*h/180) {x=x+nx:y=y+ny }pu=11;x,y: papercol;inkcol;nx,ny  ***** Right ***** !h=h-n:h<0h=360h+h  ,***** Left ***** 6#h=h+n:h>360hh=h-360h @ ***** Hide Turtle ***** ht=1: ***** Show Turtle ***** ht=0: X***** Back ***** b#nx=n*(*(h+180)/180) l#ny=n*(*(h+180)/180) ox=x+nx:y=y+ny qpu=11;x,y: vpapercol;inkcol;nx,ny  ***** Clear Screen *****  !x=orgx:y=orgy:h=90Z:x,y   ***** Pen Up ***** * pu=1 4 ***** Pen Down *****  pu=0  ***** Pen Erase ***** pe=1:1  L***** Pen Paint ***** Vpe=0:0 ` **** Macro Start **** mm=1:mlen=1  *** Repeat *** m$(1)="" #arep=n:oldht=ht:ht=1:#0;1,13 ;1;"Press SPACE to exit";0 ('c=1rep:t=1mlen-1 2 c$=m$(t) <(557:=" "t=mlen-1:c=rep Ft:c Prep=0:ht=oldht: x*** Macro end ***  mm=0  *** Clear Macro *** f=120  m$(f)="" f:mlen=1  @*** run macro *** Emlen=1 Gcrep=1:oldht=ht:ht=1:hack - use the rep variable to force a return in the main loop Jt=1mlen-1 T c$=m$(t) ^ 557 ht:rep=0:ht=oldht r *** List macro *** :1;"MACRO LISTING": f=1mlen-1 <m$(f,3);(m$(f,4)(m$(f,4)>-1)) f  0:: *** Home *** x=orgx:y=orgy:h=90Z: l*** Set Position *** q newx=x:newy=y vf=4̱c$ Hc$(f)=","newx=c$(4f-1):newy=c$(f+1̱c$):f=c$ newx<0newx>254 newy<0 newy>170#0;1,0;"INVALID x,y co-ordinates!":1,10 :newx=x:newy=y:f=c$ f x=newx:y=newy  *** Help ***  1;"COMMAND LIST" ,"ht :Hide Turtle":"st :Show Turtle" E"rt d :Turn Right (360>d>0 deg)":"lt d :Turn Left (360>d>0 deg)"  $"pu :Pen Up":"pd :Pen Down" -"fd n :Forward (n>0)":"bk n :Back (n>0)"  &"cs :Clear Screen":"hm :Home" %"ic n :Set Ink Colour = n" &"pc n :Set Paper Colour = n" ' "bc n :Set Border Colour = n" *("pe :Pen Erase":"pp :Pen Paint" ,*"ms :Macro Start":"me :Macro End" .*"cm :Clear Macro":"rm :Run Macro" /3"rp :Repeat":"sp x,y:Set Position (x>0, y>0)" 0*"lm :List Macro":"sv :Save Macro" 1$"ld :Load Macro":"eh :Help" 3 0:: 4*** Save Macro *** >'"Enter name for macro: ";s$:s$m$() H *** load macro *** l"Enter name of macro: ";s$:s$m$():f=1nmacros:f,m$(f):m$(f)=32 mlen=f:mlen:f=nmacros f  *** set ink colour ***  inkcol=n  `*** set paper colour *** j papercol=n t *** set border colour *** n  %*** macro mode command handler *** mm=0 a$="me"mm=0: nm$(mlen)=c$:mlen=mlen+1:mlen>nmacros#0;"MACRO limit reached! Exiting macro mode":mm=0   *** HUD *** head=h p0:#0;0,0;5;0;"X:";x;",Y:";y;4;0;" Heading:";head;" " Ipu=1#0;0,23;1;" PEN UP":5999o Ipe=1#0;0,23;1;"PEN ERASE":5999o Imm=1#0;0,23;1;" MACRO":5999o 1#0;0,23;1;" NORMAL" o p*** Draw turtle *** zht=1 )tx=3*(*(h+120x)/180) )ty=3*(*(h+120x)/180) /1:0:8;8;x+tx,y+ty _8;8;(6*(*(h-30)/180)),(6*(*(h-30)/180)) a8;8;(6*(*(h-150)/180)),(6*(*(h-150)/180)) _8;8;(5*(*(h+90Z)/180)),(5*(*(h+90Z)/180)) ,8;8;x,y:pe=11  0: X"***** turtle command vocab ***** b~"fd","rt","lt","ht","st","bk","cs","pu","pd","pe","pp","ms","rp","me","cm","rm","lm","hm","sp","eh","sv","ld","ic","pc","bc" wor7fdrtlthtstbkcspupdpeppmsrpmecmrmlmhmspehsvldicpcbc_aperconkcoleeldhmacro rt 16 fd 10 rgdrgdheaxR8 yyUkŎurn ounͱ)7u"\\((AfdC