systemdict 
begin

    /LOGO 
    dictbegin
        /PenUp? false def
        /PenX 300 def
        /PenY 300 def
        /PenAng 0 def
        /PenDx 0 def
        /PenDy 1 def
        /PenColor 0 0 0 rgbcolor def
        /BgColor 1 1 1 rgbcolor def
        /PenDist 0 def
        /ShowTurtle? true def

        /MakeWin {
            userdict /win 
            framebuffer /new DefaultWindow send 
            put

            {
                /FrameLabel (Play window) def 
                200 200 700 700 reshape 
            } win send

            userdict /can 
            win /ClientCanvas get 
            put

            /map win send
            can setcanvas

            can /Retained true put
			pause pause pause pause
        } def


        /LOGO_drawturtle {
            ShowTurtle? {
                gsave
                    22 setrasteropcode
                    PenX PenY translate
                    0 PenAng sub rotate
                    -10 0 moveto
                    0 20 lineto
                    10 0 lineto
                    -10 0 lineto
                    stroke
                grestore
            } if
        } def
        /LOGO_eraseturtle /LOGO_drawturtle load def

        /penup {
            /PenUp? true store
            PenColor setcolor
        } def
        /pu /penup load def

        /pendown {
            /PenUp? false store
            PenColor setcolor
        } def
        /pd /pendown load def

        /penerase {
            /PenUp? false store
            BgColor setcolor
        } def
        /pe /penerase load def

        /penreverse {
            22 setrasteropcode
            /PenUp? false store
        } def
        /px /penreverse load def

        /hideturtle {
            LOGO_eraseturtle
            /ShowTurtle? false store
        } def
        /ht /hideturtle load def

        /showturtle {
            ShowTurtle? not {
                /ShowTurtle? true store
                LOGO_drawturtle
            } if
        } def
        /st /showturtle load def

        /setheading { % ang => -
            LOGO_eraseturtle
            /PenAng exch store
            /PenDx PenAng sin store
            /PenDy PenAng cos store
            LOGO_drawturtle
        } def
        /seth /setheading load def

        /left { % ang => -
            LOGO_eraseturtle
            /PenAng PenAng 3 -1 roll sub store
            /PenDx PenAng sin store
            /PenDy PenAng cos store
            LOGO_drawturtle
        } def
        /lt /left load def

        /right { % ang => -
            LOGO_eraseturtle
            /PenAng PenAng 3 -1 roll add store
            /PenDx PenAng sin store
            /PenDy PenAng cos store
            LOGO_drawturtle
        } def
        /rt /right load def

        /forward { % dist => -
            /PenDist exch store
            %  Assumption is made that the color is correct
            %  and that the current point is correct.
            LOGO_eraseturtle

            PenX PenY moveto

            /PenX PenX PenDx PenDist mul add store
            /PenY PenY PenDy PenDist mul add store

            PenUp? not {
                PenX PenY lineto stroke
            } if
            LOGO_drawturtle
        } def
        /fd /forward load def

        /back { % dist => -
            0 exch sub forward
        } def
        /bk /back load def

        /setxy { % x y => -
            LOGO_eraseturtle

            PenX PenY moveto

            /PenY exch store
            /PenX exch store

            PenUp? not {
                PenX PenY lineto stroke
            } if
            LOGO_drawturtle
        } def

        /clearscreen {
            gsave
                BgColor fillcanvas
            grestore
            /PenX 300 store
            /PenY 300 store
            /PenAng 0 store
            /PenDx 0 store
            /PenDy 1 store
            PenX PenY moveto
            LOGO_drawturtle
        } def
        /cs /clearscreen load def

        /wipeclean {
            gsave
                BgColor fillcanvas
                LOGO_drawturtle
            grestore
        } def
        /clean /wipeclean load def

        /shownp {
            ShowTurtle? ==
        } def

        /pencolor {
            /PenColor exch store
            PenColor setcolor
        } def
        /penc /pencolor load def

        /screencolor {
            /BgColor exch store
        } def
        /sc /screencolor load def	% This function gets everything up to "end" and puts	% it into a array.

    dictend 
    def
