Code:
$regfile = "m128def.dat"
$crystal = 16000000
'######### Variablen Hauptprogramm
Dim Xs As Integer
Dim Xe As Integer
Dim Ys As Integer
Dim Ye As Integer
'######### Variablen Line Funktion
Dim Xlen As Integer
Dim Ylen As Integer
Dim Xa As Integer
Dim Ya As Integer
Dim Temp As Integer
Dim N As Byte
'########### Deklarationsteil für Subroutinen
Declare Sub Drawline
Declare Sub Move
Declare Sub Showdot
'########### Deklarationsteil für Ports
X Alias Porta
Y Alias Portd
Z Alias Portf.1 'wenn f=0 dann ist der punkt sichtbar, wenn f=1 then ist der punkt aus
Config X = Output
Config Y = Output
'################# Start Hauptprogramm
Z = 1 ' dunkel
Do
Restore Daten:
For N = 1 To 14
Read Xs
Read Ys
Read Xe
Read Ye
Call Drawline
Next
Loop
End
'################# Ende Haputprogramm; beginn subroutinen
'#############################################################################################################
Sub Drawline
'Längen für x und y ausrechnen
Xlen = Xe - Xs
Ylen = Ye - Ys
'Schrittrichtung für x und Y festlegen
If Xlen >= 0 Then Xa = 1 Else Xa = 255
If Ylen >= 0 Then Ya = 1 Else Ya = 255
'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 Ylen = Ylen * -1
If Xlen < Ylen Then Goto Walky
Walkx:
Temp = Xlen
Shift Temp , Right , 1
Do
Call Move 'position setzen
Call Showdot 'punkt zeigen
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
End If
Loop Until Low(xs) = Low(xe) ';Wiederholen bis Ende der Linie
Goto Endofsub
Walky:
Temp = Ylen
Shift Temp , Right , 1
Do
Call Move 'position setzen
Call Showdot 'punkt zeigen
Ys = Ys + Ya
Temp = Temp - Xlen
If Temp < 0 Then
Temp = Temp + Ylen
Xs = Xs + Xa
End If
Loop Until Low(ys) = Low(ye)
Endofsub:
End Sub
'######################################################################################################################
Sub Move 'Bewegt den punkt gedimmt zu der angegebenen position (xs,ys)
X = Low(xs) 'x setzen
Y = Low(ys) 'y setzen
End Sub
'######################################################################################################################
Sub Showdot 'zeigt den punkt an seiner aktuellen position an
Z = 0 'licht ein
Waitus 2 'kurz warten
Z = 1 'lich wieder aus
End Sub
'#####################################################################################################################
Daten:
Data 0% , 0% , 200% , 0%
Data 200% , 0% , 200% , 200%
Data 200% , 200% , 0% , 200%
Data 0% , 200% , 0% , 0%
Data 20% , 20% , 180% , 80%
Data 180% , 80% , 80% , 180%
Data 80% , 180% , 20% , 20%
Data 100% , 120% , 80% , 120%
Data 80% , 120% , 80% , 100%
Data 80% , 100% , 90% , 100%
Data 90% , 100% , 100% , 90%
Data 100% , 90% , 100% , 80%
Data 100% , 80% , 90% , 70%
Data 90% , 70% , 80% , 70%
Lesezeichen