Hier ist eine 20 Schritt Schablone um die Schritte besser nachvollziehen zu können. Kann man unter den Motor kleben. Und einen Zeiger an die Achse machen.
\ Schrittmotor testen (Unipolarmotor)
\ Portpins als Ausgaenge betreiben. 
\ H-Puls schaltet Transistor, der die Spule im Motor treibt.
\ 9V --- Spule --- TIP120 --- GND
\     ^<-Diode-^     ^--- R --- P2.x 
BIN
: init   1111 P2 1+ cset ; \ P2.0..3 = out
: aus    1111 P2 cclr ;
: PULS ( x m adr -- x )  c! dup ms ;
: _A_    0001 p2 puls ;
: _B_    0010 p2 puls ;
: _C_    0100 p2 puls ;
: _D_    1000 p2 puls ;
: _AB_   0011 P2 puls ;
: _BC_   0110 P2 puls ;
: _CD_   1100 P2 puls ;
: _DA_   1001 P2 puls ;
DECIMAL
\ wave drive mode
: WDM ( x -- ) init aus 
  BEGIN  _A_ _B_ _C_ _D_ key? UNTIL  drop aus ; 
\ full step drive
: FSD ( x -- ) init aus 
  BEGIN _AB_ _BC_ _CD_ _DA_ key? UNTIL  drop aus ; 
\ half step drive
: HSD ( x -- ) init aus
  BEGIN _A_ _AB_ _B_ _BC_ _C_ _CD_ _D_ _DA_ key? UNTIL  drop aus ;  
    
\ Halbschritte rechts oder links drehen.
VARIABLE STEPS  0 steps !
\ im flash Schrittfolge ablegen
IHERE
' _A_ i,  ' _AB_ i,  ' _B_ i,  ' _BC_ i,  
' _C_ i,  ' _CD_ i,  ' _D_ i,  ' _DA_ i, 
CONSTANT FOLGE
: STEP+   1 steps +! ;
: STEP-  -1 steps +! ;
: FOLGEADR  ( n -- adr )   8 mod  2*  folge +  ;
\ Pulsdauer auf den stack legen!
: RECHTS ( ms n -- ms ) \ n Schritte rechts herum drehen
  dup 0 > IF  
    0 DO step+  steps @ folgeadr @ execute LOOP 
      ELSE drop THEN aus ;
: LINKS  ( ms n -- ms ) \ n Schritte links herum drehen
  dup 0 > IF  
    0 DO  step- steps @ folgeadr @ execute LOOP
      ELSE drop THEN aus ;
   
( finis)