Its quiet here, so I post something!

h dang, I actually mean
Stepper not
Servos -y
misleading title, sry^^
Never had the need to control Stepper with AppGameKit? Here is the solution how to do it!
First you need some sort of stepper:

I took a Nema17 stepper that is made for 3d printers, they are available for about 8€.

The next thing is a controller. For my small motor, I could get a A4988 Controller for about 1€
at the A4988, connect everything like in the shematics, but reset and sleep should get constant 5V from the Raspberry Pi.
Also connect following pins from the A4988 to the Raspberry like this:
PinEnable = gpio:21
PinDir = gpio:26
PinStep = gpio:19
PinMs3 = gpio:13
PinMs2 = gpio:6
PinMs1 = gpio:5
Proov' of concept:
The Source Code for AGKPi:
// Project: AGKStepperDriver
// Created: 2018-10-27
/*
Run a stepper motor driver with AGK
Wiring:
GPIO21 - ENABLE
GPIO26 - DIR
GPIO19 - STEP
GPIO13 - MS3
GPIO6 - MS2
GPIO5 - MS1
*/
PinEnable = OpenToWrite( "gpio:21" )
PinDir = OpenToWrite( "gpio:26" )
PinStep = OpenToWrite( "gpio:19" )
PinMs3 = OpenToWrite( "gpio:13" )
PinMs2 = OpenToWrite( "gpio:6" )
PinMs1 = OpenToWrite( "gpio:5" )
// show all errors
SetErrorMode(2)
// set window properties
SetWindowTitle( "AGKStepperDriver" )
SetWindowSize( 640, 480, 0 )
SetWindowAllowResize( 1 ) // allow the user to resize the window
// set display properties
SetVirtualResolution( 640, 480 ) // doesn't have to match the window
SetOrientationAllowed( 1, 1, 1, 1 ) // allow both portrait and landscape on mobile devices
SetSyncRate( 60, 0 ) // 30fps instead of 60 to save battery
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 ) // since version 2.0.22 we can use nicer default fonts
type ToggleButton_def
spr as integer
txt as integer
state as integer
color as integer[2]
toggle as integer
endtype
BEnable = CreateButton(1,"Enable",30, 200,60, 100,30 ,0,155,0)
Bm1 = CreateButton(1,"M1",30, 30,60, 100,30 ,155,0,0)
Bm2 = CreateButton(1,"M2",30, 30,100, 100,30 ,155,0,0)
Bm3 = CreateButton(1,"M3",30, 30,140, 100,30 ,155,0,0)
Bstep = CreateButton(0,"Step",30, 30,240, 100,30 ,0,0,155)
Brev = CreateButton(1,"Reverse",30, 30,280, 100,30 ,0,0,155)
Brun = CreateButton(1,"Run cycle",30, 30,330, 100,30 ,0,0,155)
wstate = 0
syncstate=1
WriteByte(PinEnable,0)
WriteByte(PinMs1,0)
WriteByte(PinMs2,0)
WriteByte(PinMs3,0)
WriteByte(PinDir,1)
// WriteByte(PinStep,ToggleButtons[Bstep].state)
do
WriteByte(PinEnable,1-ToggleButtons[BEnable].state)
WriteByte(PinMs1,ToggleButtons[Bm1].state)
WriteByte(PinMs2,ToggleButtons[Bm2].state)
WriteByte(PinMs3,ToggleButtons[Bm3].state)
WriteByte(PinDir,ToggleButtons[Brev].state)
WriteByte(PinStep,ToggleButtons[Bstep].state)
/*
*/
// send net step commands in cycle mode
if ToggleButtons[Brun].state = 1
wstate=1-wstate
WriteByte(PinStep,1)
WriteByte(PinStep,0)
if syncstate=0 // get a delay, if we do not render to screen
t=0
repeat
inc t
until t=6000
endif
// WriteByte(PinStep,0)
endif
if GetRawKeyPressed(13) then syncstate = 1-syncstate
UpdateButtons()
Print( ScreenFPS() )
print(syncstate)
if syncstate=1
Sync()
ss=0
else
if ss=0 then swap()
ss=1
endif
loop
function CreateButton(toggle,txt$,ss,px,py,sx,sy,r,g,b)
if ToggleButtons.length = -1
Dim ToggleButtons[] as ToggleButton_def
endif
button = ToggleButtons.length+1
ToggleButtons.length = button
spr = createsprite(0)
SetSpriteColor(spr,r,g,b,255)
SetSpritePosition(spr,px,py)
SetSpriteSize(spr,sx,sy)
txt =CreateText(txt$)
SetTextSize(txt,ss)
SetTextAlignment(txt,1)
SetTextPosition(txt,px+sx/2,py+sy/2-ss/2)
ToggleButtons[button].spr = spr
ToggleButtons[button].txt = txt
ToggleButtons[button].color[0] = r
ToggleButtons[button].color[1] = g
ToggleButtons[button].color[2] = b
ToggleButtons[button].toggle = toggle
endfunction button
function UpdateButtons()
for button = 0 to ToggleButtons.length
spr = ToggleButtons[button].spr
r = ToggleButtons[button].color[0]
g = ToggleButtons[button].color[1]
b = ToggleButtons[button].color[2]
if ToggleButtons[button].toggle = 0 then ToggleButtons[button].state = 0
// ToggleButtons[button].state = 0
if GetSpriteHit(GetPointerX(),GetPointerY()) = spr
SetSpriteColor(spr,r*2,g*2,b*2,255)
if GetRawMouseLeftPressed() or GetRawKeyPressed(49+button)
SetSpriteColor(spr,255-r,255-g,255-b,255)
ToggleButtons[button].state = 1 - ToggleButtons[button].state
if ToggleButtons[button].toggle = 0 then ToggleButtons[button].state = 1
endif
else
if ToggleButtons[button].toggle = 1
if ToggleButtons[button].state = 0
SetSpriteColor(spr,r,g,b,255)
endif
else
SetSpriteColor(spr,r,g,b,255)
endif
endif
if GetRawKeyPressed(49+button)
SetSpriteColor(spr,255-r,255-g,255-b,255)
if ToggleButtons[button].toggle = 0
ToggleButtons[button].state = 1
else
ToggleButtons[button].state = 1 - ToggleButtons[button].state
endif
endif
next button
endfunction
And now you can control steppers with AppGameKit too
A raspberry can fully control over 5 A4988! (more, if you do not need to set the stepsize of the stepper) So there is no excuse why there is no AppGameKit CNC software.
If you executable compiled with AppGameKit wont start, try sudo rpi-update in the terminal, then reboot. It's how I got the current version of AppGameKit to work!