Code:
$regfile = "m32def.dat"
$crystal = 16000000
'######### Variablen Hauptprogramm
Dim H As Integer
Dim Hs As Integer
Dim Ss As Byte
'########### Variablen Vektorgrafik
Dim X As Integer
Dim Y As Integer
Dim Z As Integer
Dim Xa As Integer
Dim Ya As Integer
Dim Xe As Integer
Dim Ye As Integer
Dim Xs As Integer
Dim Ys As Integer
Dim Xl As Integer
Dim Yl As Integer
Dim Xo As Integer
Dim Yo As Integer
Dim Zo As Integer
Dim T As Integer
'########### Deklarationsteil für Subroutinen
Declare Sub Moverel
Declare Sub Moveabs
Declare Sub Drawrel 'Zeichnet vom aktuellen Punkt zur relativen position eine linie
Declare Sub Drawabs 'Zeichnet vom aktuellen Punkt zu den angegebenen kordinaten eine linie
Declare Sub Showdot
Declare Sub Drawobj
'########### Deklarationsteil für Ports
Xp Alias Porta
Yp Alias Portc
Zp Alias Portf.1 'wenn f=0 dann ist der punkt sichtbar, wenn f=1 then ist der punkt aus
Config Xp = Output
Config Yp = Output
'################# Start Hauptprogramm
'Zp = 1 ' dunkel
H = 0
Hs = 1
Ss = 0
Do
X = 50 : Y = 50 : Moveabs
X = 100 : Y = 0 : Drawrel
X = 0 : Y = 100 : Drawrel
X = -100 : Y = 0 : Drawrel
X = 0 : Y = -100 : Drawrel
Xa = 50 : Ya = 150 : Xe = 100 : Ye = 200 : Drawabs
Xa = 150 : Ya = 150 : Xe = 100 : Ye = 200 : Drawabs
Xa = 50 : Ya = 150 : Xe = 150 : Ye = 50 : Drawabs
Xa = 50 : Ya = 50 : Xe = 150 : Ye = 150 : Drawabs
X = 0 : Y = 0 : Moveabs
Restore Obj5 : X = 58 : Y = 80 : Drawobj
Restore Obj5 : X = 128 : Y = 80 : Drawobj
Ss = Ss + 1
Restore Spaceship : X = Ss : Y = 170 : Drawobj
Y = 0
X = 0 : Restore Obj0 : Drawobj
X = 22 : Restore Obj1 : Drawobj
X = 44 : Restore Obj2 : Drawobj
X = 66 : Restore Obj3 : Drawobj
X = 88 : Restore Obj4 : Drawobj
X = 110 : Restore Obj5 : Drawobj
X = 132 : Restore Obj6 : Drawobj
X = 154 : Restore Obj7 : Drawobj
X = 176 : Restore Obj8 : Drawobj
X = 198 : Restore Obj9 : Drawobj
X = 220 : Restore Objdp : Drawobj
Loop
End
'################# Ende Haputprogramm; beginn subroutinen
Sub Drawabs
X = Xe - Xa : Y = Ye - Ya
Xp = Low(xa) : Yp = Low(ya)
Call Drawrel
End Sub
'#################################
Sub Drawrel
Xe = Xa + X : Ye = Ya + Y
Xl = X : Yl = Y
Xs = 1 : Ys = 1
If Xl < 0 Then
Xs = -1 : Xl = 0 - Xl
End If
If Yl < 0 Then
Ys = -1 : Yl = 0 - Yl
End If
If Xl < Yl Then Goto Walky
Walkx:
T = Xl
Shift T , Right , 1
Do
'Zp = 0
Xp = Xa : Yp = Ya
Xa = Xa + Xs ':immer einen Schritt in x-Richtung weiter
T = T - Yl ';Schritt in Y-Richtung nötig ?
If T <= 0 Then ';wenn <=0 dann ja
T = T + Xl ';
Ya = Ya + Ys ';Schritt in Y-Richtung
End If
Loop Until Low(xa) = Low(xe) ';Wiederholen bis Ende der Linie
'Zp = 1
Goto Ex1
Walky:
T = Yl
Shift T , Right , 1
Do
'Zp = 0
Xp = Xa : Yp = Ya
Ya = Ya + Ys ':immer einen Schritt in x-Richtung weiter
T = T - Xl ';Schritt in Y-Richtung nötig ?
If T <= 0 Then ';wenn <=0 dann ja
T = T + Yl ';
Xa = Xa + Xs ';Schritt in Y-Richtung
End If
Loop Until Low(ya) = Low(ye) ';Wiederholen bis Ende der Linie
'Zp = 1
Ex1:
End Sub
'##############################
Sub Moveabs 'Bewegt den punkt gedimmt zu der angegebenen position (x,y)
Xa = Low(x) 'Xaktuell setzen
Ya = Low(y) 'Xaktuell setzen
Xp = Low(x) 'Xport setzen
Yp = Low(y) 'yPort setzen
End Sub
'##############################
Sub Moverel
Xa = Xa + X : Ya = Ya + Y
End Sub
'##############################
Sub Showdot 'zeigt den punkt an seiner aktuellen position an
'Zp = 0 'licht ein
Waitus 2 'kurz warten
'Zp = 1 'lichtwieder aus
End Sub
'##############################
Sub Drawobj
Xo = X : Yo = Y
Call Moveabs
Do
Read X : Read Y : Read Z
If Z > 0 Then Call Drawrel Else Call Moverel
Loop Until Z > 1
X = Xo : Y = Yo
End Sub
'######## Objektdefinitionen
'X, Y, Z
'X, Y, Z
'X und Y sind relative Positionen
'z=0 bedeutet moverel
'z=1 bedeutet sichtbare Linie
'Ende Objekt ist wenn z=3
Spaceship:
Data 15% , 8% , 1%
Data -15% , 8% , 1%
Data 6% , -8% , 1%
Data -6% , -8% , 1%
Data 4% , 8% , 0%
Data -5% , 3% , 1%
Data 5% , -3% , 1%
Data -5% , 0% , 1%
Data 5% , 0% , 1%
Data -5% , -3% , 1%
Data 5% , 3% , 3%
Obj1:
Data 0% , 16% , 0%
Data 16% , 14% , 1%
Data 0% , -30% , 3%
Obj2:
Data 0% , 26% , 0%
Data 0% , 2% , 1%
Data 4% , 2% , 1%
Data 9% , 0% , 1%
Data 5% , -4% , 1%
Data 0% , -3% , 1%
Data -18% , -23% , 1%
Data 6% , 3% , 1%
Data 8% , 0% , 1%
Data 6% , -3% , 3%
Obj3:
Data 0% , 3% , 0%
Data 4% , -3% , 1%
Data 10% , 0% , 1%
Data 4% , 3% , 1%
Data 0% , 10% , 1%
Data -3% , 3% , 1%
Data -2% , 0% , 1%
Data 2% , 0% , 0%
Data 3% , 3% , 1%
Data 0% , 8% , 1%
Data -4% , 3% , 1%
Data -10% , 0% , 1%
Data -4% , -3% , 3%
Obj4:
Data 11% , 0% , 0%
Data 0% , 17% , 1%
Data 6% , -5% , 0%
Data -17% , 0% , 1%
Data 17% , 18% , 3%
Obj5:
Data 0% , 4% , 0%
Data 4% , -4% , 1%
Data 10% , 0% , 1%
Data 5% , 5% , 1%
Data 0% , 8% , 1%
Data -5% , 5% , 1%
Data -9% , 0% , 1%
Data -5% , -6% , 1%
Data 0% , 18% , 1%
Data 17% , 0% , 3%
Obj6:
Data 0% , 10% , 0%
Data 0% , -5% , 1%
Data 4% , -4% , 1%
Data 10% , 0% , 1%
Data 5% , 5% , 1%
Data 0% , 8% , 1%
Data -5% , 5% , 1%
Data -9% , 0% , 1%
Data -5% , -6% , 1%
Data 0% , 15% , 1%
Data 4% , 4% , 1%
Data 8% , 0% , 1%
Data 5% , -4% , 3%
Obj7:
Data 0% , 30% , 0%
Data 12% , 0% , 1%
Data 0% , -30% , 1%
Data -6% , 15% , 0%
Data 12% , 0% , 3%
Obj8:
Data 4% , 0% , 0%
Data 10% , 0% , 1%
Data 4% , 5% , 1%
Data 0% , 6% , 1%
Data -18% , 8% , 1%
Data 0% , 6% , 1%
Data 4% , 4% , 1%
Data 10% , 0% , 1%
Data 4% , -5% , 1%
Data 0% , -6% , 1%
Data -18% , -8% , 1%
Data 0% , -6% , 1%
Data 4% , -5% , 3%
Obj9:
Data 0% , 5% , 0%
Data 4% , -5% , 1%
Data 10% , 0% , 1%
Data 4% , 5% , 1%
Data 0% , 20% , 1%
Data -4% , 5% , 1%
Data -10% , 0% , 1%
Data -4% , -5% , 1%
Data 0% , -7% , 1%
Data 4% , -5% , 1%
Data 10% , 0% , 1%
Data 4% , 4% , 3%
Obj0:
Data 0% , 5% , 0%
Data 4% , -5% , 1%
Data 10% , 0% , 1%
Data 4% , 5% , 1%
Data 0% , 20% , 1%
Data -4% , 5% , 1%
Data -10% , 0% , 1%
Data -4% , -5% , 1%
Data 0% , -20% , 3%
Objdp:
Data 7% , 7% , 0%
Data 4% , 0% , 1%
Data 0% , 4% , 1%
Data -4% , 0% , 1%
Data 0% , -4% , 1%
Data 0% , 12% , 0%
Data 4% , 0% , 1%
Data 0% , 4% , 1%
Data -4% , 0% , 1%
Data 0% , -4% , 3%
Lesezeichen