This program was written with Greek commands here:
https://georgekarras.blogspot.com/2025/03/36-13.html
You can use this for the parameters too (instead of the use of if valid()...):
MODULE TURTLE_GRAPHICS (USE_STEPS=FALSE, CLEAN=TRUE, DELAY=100, NORTH=90, ZOOM=1, XPOS=0, YPOS=0) {
FLUSH
CONST PI AS SINGLE=3.1415926
//....continue............//
}
MODULE TURTLE_GRAPHICS {
FLUSH
IF NOT VALID(USE_STEPS) THEN USE_STEPS=FALSE
IF NOT VALID(CLEAN) THEN CLEAN=TRUE
IF NOT VALID(DELAY) THEN DELAY=100
IF NOT VALID(NORTH) THEN NORTH=90
IF NOT VALID(ZOOM) THEN ZOOM=1
IF NOT VALID(XPOS) THEN XPOS=0
IF NOT VALID(YPOS) THEN YPOS=0
CONST PI AS SINGLE=3.1415926
BOOLEAN pen_draw=TRUE
SINGLE pen_angle=(NORTH-90)*PI/180
INTEGER line_width=1
ENUM PEN.COLOR {
BLACK=#000000
RED=#FF0000
GREEN=#00FF00
BLUE=#0000FF
}
FUNCTION PIC(CO){
DRAWING 3000, 3000 {
MOVE 0,0
WIDTH 4{
DRAW TO 3000, 1500, CO
DRAW TO 0, 3000, CO
DRAW TO 1000, 1500, CO
DRAW TO 0,0, CO
}
} AS ARROW
=ARROW
}
SMOOTH ON
ARROW=PIC(0)
IF CLEAN THEN CLS,0
HOLD
IF MODULE(DRAWTHIS) THEN CALL LOCAL DRAWTHIS
RELEASE
REFRESH 25
PEN 0
END
SUB DRAW.LETTER(G$, WHERE, CO=0&, SIZE=100, rotation=0)
SET_BACK()
WHERE-=NORTH+rotation
STEP ANGLE -WHERE/180*PI, 300*SIZE/100*ZOOM
PEN CO {LEGEND G$,FONTNAME$,MODE*SIZE/100*ZOOM, (NORTH-90+rotation)*PI/180, 2}
STEP ANGLE -WHERE/180*PI, -300*SIZE/100*ZOOM
PUT_ARROW()
END SUB
SUB PEN.BLACK()
PEN #000000
ARROW=PIC(PEN)
END SUB
SUB PEN.RED()
PEN #FF0000
ARROW=PIC(PEN)
END SUB
SUB PEN.GREEN()
PEN #00FF00
ARROW=PIC(PEN)
END SUB
SUB PEN.BLUE()
PEN #0000FF
ARROW=PIC(PEN)
END SUB
SUB CENTER.SCREEN()
SET_BACK()
MOVE (SCALE.X DIV 2)+XPOS, (SCALE.Y DIV 2)+YPOS
PUT_ARROW()
END SUB
SUB MOVE.ARROW(Χ, Υ)
SET_BACK()
MOVE Χ+XPOS, Υ+YPOS
PUT_ARROW()
END SUB
SUB LINE.WIDTH(that AS INTEGER)
IF that<1 THEN that=1
IF that>15 ΤΌΤΕ that=15
line_width=that
END SUB
SUB PEN.UP()
pen_draw=FALSE
END SUB
SUB PEN.DOWN()
pen_draw=TRUE
END SUB
SUB DRAW.CIRCLE(radius)
SET_BACK()
IF pen_draw THEN
WIDTH line_width {
CIRCLE radius
}
END IF
PUT_ARROW()
END SUB
SUB DRAW.ARC(radius, st=0, en=360, rotation=0)
SET_BACK()`
IF pen_draw THEN
WIDTH line_width {
CIRCLE radius,1,PEN,(NORTH-st+rotation)/180*PI, (NORTH-en+rotation)/180*PI;
}
END IF
PUT_ARROW()
END SUB
SUB GO.FORWARD(distance)
distance*=ZOOM
SET_BACK()
IF pen_draw THEN
WIDTH line_width {
IF USE_STEPS THEN
LOCAL STP=ABS(distance) DIV 300
IF STP>0 THEN
LOCAL STP1=300*SGN(distance)
STEP ANGLE pen_angle, distance
LOCAL i AS INTEGER, XP=POS.X, YP=POS.Y
STEP ANGLE pen_angle, -distance
FOR i=1 TO STP
DRAW ANGLE pen_angle, STP1
PUT_ARROW()
SET_BACK()
NEXT i
DRAW TO XP, YP
ELSE
DRAW ANGLE pen_angle, distance
END IF
ELSE
DRAW ANGLE pen_angle, distance
END IF
}
ELSE
IF USE_STEPS THEN
LOCAL STP=ABS(distance) DIV 300
IF STP>0 THEN
LOCAL STP1=300*SGN(distance)
STEP ANGLE pen_angle, distance
LOCAL i AS INTEGER, XP=POS.X, YP=POS.Y
STEP ANGLE pen_angle, -distance
FOR i=1 TO STP
STEP ANGLE pen_angle, STP1
PUT_ARROW()
SET_BACK()
NEXT i
MOVE XP, YP
ELSE
STEP ANGLE pen_angle, distance
END IF
ELSE
STEP ANGLE pen_angle, distance
END IF
END IF
PUT_ARROW()
END SUB
SUB DRAW.REAR(distance)
GO.FORWARD(-distance)
END SUB
SUB TURN.RIGHT(angle_in_degrees)
SET_BACK()
pen_angle-=angle_in_degrees/180*PI
PUT_ARROW()
END SUB
SUB TURN.TO(angle_in_degrees)
SET_BACK()
pen_angle=(angle_in_degrees+NORTH-90)/180*PI
PUT_ARROW()
END SUB
SUB SET_BACK()
RELEASE
END SUB
SUB PUT_ARROW()
HOLD
IMAGE ARROW, 600,,pen_angle*180/PI
REFRESH 1000
WAIT DELAY
END SUB
}
MODULE PRG1 {
CENTER.SCREEN()
LINE.WIDTH(4)
PEN.RED()
ZZ=13
TURN.RIGHT(ZZ)
DRAW.LETTER("Α", 225,,,-ZZ)
GO.FORWARD(4000)
DRAW.LETTER("90° ", -20, BLUE,200, -ZZ)
PEN.BLACK()
DRAW.ARC(300, -5, 275, -ZZ)
PEN.RED()
DRAW.LETTER("Β", 135,,,-ZZ)
TURN.RIGHT(270)
GO.FORWARD(3000)
DRAW.LETTER("Γ",45,,,-ZZ)
TURN.RIGHT(270-ATN(3000/4000))
GO.FORWARD(5000)
TURN.TO(180)
PEN.UP()
GO.FORWARD(6000)
PEN.DOWN()
PEN.GREEN()
HOUSE(5000)
SUB HOUSE(n)
LOCAL i
FOR i=1 TO 3
TURN.RIGHT(120)
GO.FORWARD(n)
NEXT
TURN.RIGHT(90)
PARALLELOGRAM(n, n)
TURN.RIGHT(90)
END SUB
SUB PARALLELOGRAM(w, h)
LOCAL i
FOR i=1 TO 2
TURN.RIGHT(90)
GO.FORWARD(h)
TURN.RIGHT(90)
GO.FORWARD(w)
NEXT
END SUB
}
BACKGROUND {CLS 15, 0}
CLS 15,0
PEN 0
A$=KEY$
TURTLE_GRAPHICS %USE_STEPS=TRUE, %DELAY=30, %XPOS=-SCALE.X / 2.8, %NORTH=190, %ZOOM=0.9; DRAWTHIS AS PRG1
TURTLE_GRAPHICS %USE_STEPS=TRUE, %DELAY=30, %CLEAN=FALSE, %XPOS=SCALE.X / 2.8, %NORTH=10, %ZOOM=0.9; DRAWTHIS AS PRG1
TURTLE_GRAPHICS %USE_STEPS=TRUE, %DELAY=30, %CLEAN=FALSE, %YPOS=-SCALE.Y / 3.8, %NORTH=100, %ZOOM=0.7; DRAWTHIS AS PRG1
TURTLE_GRAPHICS %USE_STEPS=TRUE, %DELAY=30, %CLEAN=FALSE, %YPOS=SCALE.Y / 3.8, %NORTH=280, %ZOOM=0.7; DRAWTHIS AS PRG1
CURSOR 0,0
PRINT "TURTLE GRAPHICS 1.0"
A$=KEY$