1 | COLOR 15, 1
|
2 | CLS
|
3 |
|
4 | LOCATE 11, 1 'ob man COM 1 oder 2 benutzen moechte
|
5 | PRINT SPC(40); 'Man wird solange zu einer Eingabe
|
6 | LOCATE 11, 1 'aufgefordert, bis man 1 oder 2
|
7 | LINE INPUT "COM 1 oder 2: "; port$'eingibt.
|
8 | IF VAL(port$) = 1 THEN ba = 1016
|
9 | IF VAL(port$) = 2 THEN ba = 760
|
10 | IF ba = 0 THEN GOTO auswahl
|
11 | LOCATE 11, 1
|
12 | PRINT "COM"; VAL(port$); SPC(20);
|
13 | LOCATE 15, 1 'auf dem Bildschirm angezeigt
|
14 | PRINT "Ausgang Nr.:"
|
15 | PRINT
|
16 | PRINT " Status:"
|
17 | FOR ausgang = 0 TO 7
|
18 | LOCATE 15, ausgang * 2 + 13
|
19 | PRINT 8 - ausgang
|
20 | NEXT
|
21 | COLOR 14, 0
|
22 |
|
23 | GOSUB ausgabe 'Eine Ausgabe und Anzeige
|
24 | GOSUB anzeige 'zu Beginn
|
25 |
|
26 | '----------------------------------------------------------------------------
|
27 |
|
28 | DO 'Anfang der Hauptschleife
|
29 |
|
30 | DO 'Wartet auf
|
31 | taste$ = INKEY$ 'irgendeinen
|
32 | LOOP WHILE taste$ = "" 'Tastendruck
|
33 |
|
34 | wert = ASC(taste$) 'ASCII-Wert der Taste ermitteln
|
35 | IF wert = 27 THEN GOTO ende '27 ist der ASCII-Wert von ESC
|
36 | IF wert = 48 THEN GOSUB allesaus '48 ist der der 0-Taste
|
37 | IF wert > 48 AND wert < 57 THEN 'Wurde eine Taste zw. 1 und 8 gedrueckt?
|
38 | ausgang = wert - 48 'Taste 1 hat z.B. 49. Minus 48 macht 1
|
39 | IF status(ausgang) = 0 THEN 'Ist der Ausgang gerade aus? Dann...
|
40 | status(ausgang) = 1 '...schalte ihn ein
|
41 | ELSE 'sonst
|
42 | status(ausgang) = 0 'schalte ihn aus
|
43 | END IF 'Ende der an/aus Auswahl
|
44 | GOSUB ausgabe 'zum Ausgabe-Unterprogramm
|
45 | GOSUB anzeige 'zum Anzeige-Unterprogramm
|
46 | END IF 'Ende der 1-8 Auswahl
|
47 | LOOP 'Ende der Hautptschleife
|
48 |
|
49 | '----------------------------------------------------------------------------
|
50 |
|
51 | ausgabe: 'Ausgabe-Unterprogramm
|
52 | FOR ausgang = 1 TO 8 'Schleife wird 8 mal durchlaufen
|
53 | OUT ba + 3, status(ausgang) * 64 'TxD Leitung w. auf status(ausgang) gesetzt
|
54 | OUT ba + 4, 1 'DTR = Clock an
|
55 | OUT ba + 4, 0 'DTR = Clock aus
|
56 | NEXT 'Ende der Schleife
|
57 | OUT ba + 3, 0 'TxD aus falls status(8) = 1 war
|
58 | OUT ba + 4, 2 'CTS = Strobe an
|
59 | OUT ba + 4, 0 'CTS = Strobe aus
|
60 | RETURN 'zurueck
|
61 |
|
62 | '----------------------------------------------------------------------------
|
63 |
|
64 | anzeige: 'Hier wird nur der status der Ausgaenge
|
65 | FOR ausgang = 0 TO 7
|
66 | LOCATE 17, 27 - ausgang * 2
|
67 | PRINT status(ausgang + 1)
|
68 | NEXT
|
69 | RETURN 'zurueck
|
70 |
|
71 | '----------------------------------------------------------------------------
|
72 |
|
73 | allesaus: 'Hier werden alle Ausgaenge
|
74 | FOR ausgang = 1 TO 8 'ausgeschaltet und dann
|
75 | status(ausgang) = 0 'zur Ausgabe verzweigt
|
76 | NEXT
|
77 | GOSUB ausgabe
|
78 | GOSUB anzeige
|
79 | RETURN
|
80 |
|
81 | '----------------------------------------------------------------------------
|
82 |
|
83 | ende: 'Programmabbruch. Zuvor werden alle
|
84 | GOSUB allesaus 'Ausgaenge ausgeschaltet
|
85 | END 'Ende
|