So habe mal versucht den pseudocode anzupassen, viel war ja nicht mehr zu machen... Es scheint ein bisschen buggy zu sein. Hat jemand anderes schon die hardware nachgebaut???



Code:
$regfile = "m128def.dat"
$crystal = 16000000

'#########Variablen Line Funktion
Dim Xlen As Long
Dim Ylen As Long
Dim Xa As Long
Dim Ya As Long
Dim Temp As Long

'#################################

Declare Sub Drawline(byval Xs As Byte , Byval Ys As Byte , Byval Xe As Byte , Byval Ye As Byte)

Config Porta = Output
Config Portc = Output
Config Portf = Output

Z Alias Portf.1

Z = 1                                                       ' dunkel


Do
Call Drawline(0 , 0 , 100 , 100)
Waitms 1


Loop

End




'Drawline in Pseudocode.
';-----------------------
'
';Übergeben werden die Start- und Endpunkte der Linie xs,ys und ys,ye
'
';Die Routine braucht nur Addition /Subtrktion, kommt ohne Multiplikation / Division aus.
';Alle Variable könne Byte sein.
';Kann problemlos und einfach in Assembler kodiert werden.


Sub Drawline(xs As Byte , Ys As Byte , Xe As Byte , Ye As Byte)

';Längen für x und y ausrechnen
xlen=xs-xe
ylen=ys-ye

';Schrittrichtung für x und Y festlegen
if xlen>=0 then xa=1 else xa=-1
if ylen>=0 then ya=1 else ya=-1

';wenn xlänge grösser ist, dann laufen wir an der X-Achse entlang
';  ansonsten an der Y-Achse
If Xlen < 0 Then Xlen = Xlen * -1
If Ylen < 0 Then Xlen = Xlen * -1
If Xlen < Ylen Then Goto Walky


walkx:
 Z = 0                                                      'licht einschalten
  temp=xlen
  do
    Porta = Xs
    Portc = Ys
    Waitus 1
    Xs = Xs + Xa                                            ':immer einen Schritt in x-Richtung weiter
    Temp = Temp - ylen                                      ';Schritt in Y-Richtung nötig ?
    If Temp <= 0 Then                                       ';wenn <=0 dann ja
      Temp = Temp + Xlen                                    ';
      Ys = Ys + Ya                                          ';Schritt in Y-Richtung
    endif
  Loop Until Xs = Xe                                        ';Wiederholen bis Ende der Linie
Goto Endofsub

WalkY:
 Z = 0
  temp=ylen
  do
    Porta = Xs
    Portc = Ys
    Waitus 1
    ys=ys+ya
    temp=temp-xlen
    if temp<0 then
      temp=temp+ylen
      xs=xs+xa
    endif
  loop until ys=ye

Endofsub:
 Z = 1                                                      'und wieder aus
  End Sub