home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* BLINK.BAS *
- '* Verlaufssteuerung für Relais-Interface *
- '* (c) 1990 Florian Peters & TOOLBOX *
- '* ------------------------------------------------------- *
-
- 'Adresse ermitteln
- DEF SEG = 0
- adr1 = PEEK(&H408): adr2 = PEEK(&H409)
- adr = adr1 + 256 * adr2
- DEF SEG
-
- DIM l1$(10), l2$(10), l3$(10), l4$(10), l5$(10), l6$(10)
- DIM l7$(10), l8$(10)
-
- GOTO hp
-
- maske:
- CLS : SCREEN 0, 0, 0
- LOCATE 1, 1: PRINT CHR$(201) + STRING$(78, 205) + CHR$(187)
- FOR i = 2 TO 24
- LOCATE i, 1: PRINT CHR$(186);
- LOCATE i, 80: PRINT CHR$(186);
- NEXT i
- LOCATE 25, 1
- PRINT CHR$(200) + STRING$(78, 205) + CHR$(188);
- LOCATE 3, 1
- PRINT CHR$(204) + STRING$(78, 205) + CHR$(185);
- LOCATE 24, 25: PRINT "Portadresse : ", adr;
- RETURN
-
- 'Hauptteil
- hp:
- GOSUB maske
- LOCATE 2, 22: PRINT "Lauflicht-Programmierung"
- LOCATE 8, 20: PRINT "-1- Steuerdatei abspielen / Test"
- LOCATE 9, 20: PRINT "-2- Eigene Steuerdatei erstellen"
- LOCATE 11, 20: PRINT "-3- ENDE"
- LOCATE 14, 20: INPUT "Bitte wählen Sie: ", wahl
- ON wahl GOSUB abspielen, erstellen, ende
- BEEP: GOTO hp
-
- abspielen: 'Dateien abspielen
- GOSUB maske
- LOCATE 2, 30: PRINT "Ansteuern des Relais-Interfaces"
- LOCATE 9, 20: PRINT "-1- Beispiel: links -> rechts"
- LOCATE 10, 20: PRINT "-2- Beispiel: Zufallsmuster"
- LOCATE 11, 20: PRINT "-3- Eigene Steuerdatei laden"
- LOCATE 13, 20: PRINT "-4- Zurück"
- LOCATE 16, 20: INPUT "Bitte wählen Sie: ", wahl
- ON wahl GOSUB LeRe, zufall, laden, hp
- BEEP: GOTO abspielen
-
- laden:
- GOSUB dateiladen
- CLS
- FOR i = 1 TO wviele
- LOCATE i, 7: PRINT i; ". Datei : " + dname$(i) + ".LEU"
- NEXT i
- geschw:
- LOCATE 21, 5: INPUT "Geschwindigkeit (100-5000): ", speed
- LOCATE 21, 34: PRINT SPACE$(10);
- '** Dies ist prozessorabhängig und kann angepaßt werden!
- IF speed < 100 OR speed > 5000 THEN BEEP: GOTO geschw
- wo:
- LOCATE 21, 5: INPUT "Wie oft abspielen : ", woft
- LOCATE 21, 34: PRINT SPACE$(10);
- IF woft < 1 THEN BEEP: GOTO wo
- spielen:
- LOCATE 8, 10: PRINT "Bitte etwas Geduld!"
- FOR i = 1 TO wviele
- umr$ = l1$(i): GOSUB rech: l1(i) = VAL(umr$)
- umr$ = l2$(i): GOSUB rech: l2(i) = VAL(umr$)
- umr$ = l3$(i): GOSUB rech: l3(i) = VAL(umr$)
- umr$ = l4$(i): GOSUB rech: l4(i) = VAL(umr$)
- umr$ = l5$(i): GOSUB rech: l5(i) = VAL(umr$)
- umr$ = l6$(i): GOSUB rech: l6(i) = VAL(umr$)
- umr$ = l7$(i): GOSUB rech: l7(i) = VAL(umr$)
- umr$ = l8$(i): GOSUB rech: l8(i) = VAL(umr$)
- NEXT i
- LOCATE 8, 12: PRINT SPACE$(10);
- CLS : LOCATE 1, 1: PRINT STRING$(80, "*");
- FOR z = 2 TO 24
- LOCATE z, 1: PRINT "*"; : LOCATE z, 80: PRINT "*";
- NEXT z
- LOCATE 24, 1: PRINT STRING$(80, "*");
-
- FOR x = 1 TO woft: ' Wiederholung
- FOR i = 1 TO wviele
- LOCATE 9, 35: PRINT "Viel Spaß!"
- LOCATE 14, 35: PRINT "Noch "; woft - x + 1_
- ; " Durchgänge! "
- OUT adr, l1(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l2(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l3(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l4(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l5(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l6(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l7(i): FOR t = 1 TO speed: NEXT t
- OUT adr, l8(i): FOR t = 1 TO speed: NEXT t
- NEXT i, x
- OUT adr, 0: ' Alles ausstellen
- RETURN
-
- erstellen:
- GOSUB maske
- LOCATE 2, 35: PRINT "Eigene Steuerdatei"
- LOCATE 5, 5: PRINT "Bitte drücken Sie am Ende jeder ";
- PRINT "Zeile <RETURN>!"
- LOCATE 6, 5: PRINT "Geben Sie 1 ein, wenn die Lampe ";
- PRINT "leuchten,"
- LOCATE 7, 5: PRINT "und 0, wenn sie nicht leuchten soll."
- LOCATE 9, 24: PRINT "Relais-Nr.: 12345678"
- LOCATE 10, 35: PRINT CHR$(201) + STRING$(8, 205) _
- + CHR$(187)
- FOR i = 11 TO 18
- LOCATE i, 35: PRINT CHR$(186)
- LOCATE i, 44: PRINT CHR$(186)
- NEXT i
- LOCATE 19, 35: PRINT CHR$(200) + STRING$(8, 205) _
- + CHR$(188)
- LOCATE 11, 36: INPUT "", a$: LOCATE 12, 36: INPUT "", b$
- LOCATE 13, 36: INPUT "", c$: LOCATE 14, 36: INPUT "", d$
- LOCATE 15, 36: INPUT "", e$: LOCATE 16, 36: INPUT "", f$
- LOCATE 17, 36: INPUT "", g$: LOCATE 18, 36: INPUT "", h$
- frage:
- LOCATE 21, 30: INPUT "Sichern? (J/N): ", wahl$
- IF wahl$ = "j" OR wahl$ = "J" THEN GOTO sichern
- IF wahl$ = "n" OR wahl$ = "N" THEN RETURN
- BEEP: GOTO frage
- sichern:
- LOCATE 22, 15: INPUT "Dateiname (ohne Endung): ", dname$
- IF dname$ = "" THEN BEEP: GOTO sichern
- IF INSTR(dname$, ".") THEN BEEP: LOCATE 23, 25_
- : PRINT "Keine Endung!"; : GOTO sichern
- CLOSE : OPEN "O", #1, dname$ + ".LEU"
- PRINT #1, a$: PRINT #1, b$
- PRINT #1, c$: PRINT #1, d$: ' Muster sichern
- PRINT #1, e$: PRINT #1, f$
- PRINT #1, g$: PRINT #1, h$
- CLOSE : RETURN
-
- dateiladen:
- CLS
- LOCATE 21, 8: INPUT "Wieviele Dateien wollen Sie laden: "_
- , wviele
- IF wviele < 1 OR wviele > 10 THEN BEEP: GOTO dateiladen
- FOR i = 1 TO wviele
- dn:
- LOCATE 22, 8: PRINT i; ". Dateiname lautet :"
- LOCATE 22, 31: INPUT "", dname$(i)
- LOCATE 22, 24: PRINT SPACE$(10);
- IF dname$(i) = "" THEN GOTO dn
- LOCATE 20, 28: PRINT "Wird geladen!"
- NEXT i
- FOR w = 1 TO wviele
- CLOSE : OPEN "I", #1, dname$(w) + ".leu"
- INPUT #1, l1$(w), l2$(w), l3$(w), l4$(w), l5$(w), _
- l6$(w), l7$(w), l8$(w)
- NEXT w
- CLOSE
- RETURN
-
- '** Umrechnung von Bin. nach Dez.
- rech:
- d = 0: a = 0: b$ = "": c$ = ""
- FOR j = 8 TO 1 STEP -1
- b$ = MID$(umr$, j, 1)
- c$ = c$ + b$
- NEXT j
- umr$ = c$
-
- a = LEN(umr$) - 1: z = 1: s = 0
- such:
- IF MID$(umr$, z, 1) = "1" THEN GOTO ausw
- z = z + 1: a = a - 1
- IF a < 0 THEN umr$ = STR$(s): RETURN
- GOTO such
- ausw:
- d = 2 ^ a: s = s + d: z = z + 1: a = a - 1
- IF a < 0 THEN umr$ = STR$(s): RETURN
- GOTO such
-
- ' ** Lauffolge, Beispiele
- LeRe: ' von links nach rechts
- OUT adr, 1: FOR t = 1 TO 400: NEXT t
- OUT adr, 2: FOR t = 1 TO 400: NEXT t
- OUT adr, 4: FOR t = 1 TO 400: NEXT t
- OUT adr, 8: FOR t = 1 TO 400: NEXT t
- OUT adr, 16: FOR t = 1 TO 400: NEXT t
- OUT adr, 32: FOR t = 1 TO 400: NEXT t
- OUT adr, 64: FOR t = 1 TO 400: NEXT t
- OUT adr, 128: FOR t = 1 TO 400: NEXT t
- OUT adr, 0: RETURN
-
- 'Beispiel: Zufallsblinken
- zufall:
- FOR x = 1 TO 10: '10mal durchlaufen
- nochmal:
- l = INT(RND * 128 + 1)
- IF l < 1 OR l > 128 THEN GOTO nochmal
- OUT adr, l: FOR t = 1 TO 700: NEXT t
- NEXT x
- OUT adr, 0
- RETURN
-
- ende:
- CLOSE : OUT ard, 0: CLS : END
-
- '****************** Ende von BLINK.BAS ********************
-
-
-
-
-
-
-
-
-
-
-
-