home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 09 / einsteig / blink.bas next >
Encoding:
BASIC Source File  |  1990-06-27  |  6.6 KB  |  222 lines

  1. '* ------------------------------------------------------- *
  2. '*                        BLINK.BAS                        *
  3. '*          Verlaufssteuerung für Relais-Interface         *
  4. '*            (c) 1990 Florian Peters & TOOLBOX            *
  5. '* ------------------------------------------------------- *
  6.  
  7. 'Adresse ermitteln
  8.  DEF SEG = 0
  9.   adr1 = PEEK(&H408): adr2 = PEEK(&H409)
  10.   adr = adr1 + 256 * adr2
  11.  DEF SEG
  12.  
  13.  DIM l1$(10), l2$(10), l3$(10), l4$(10), l5$(10), l6$(10)
  14.  DIM l7$(10), l8$(10)
  15.  
  16.  GOTO hp
  17.  
  18. maske:
  19.  CLS : SCREEN 0, 0, 0
  20.  LOCATE 1, 1: PRINT CHR$(201) + STRING$(78, 205) + CHR$(187)
  21.   FOR i = 2 TO 24
  22.    LOCATE i, 1: PRINT CHR$(186);
  23.    LOCATE i, 80: PRINT CHR$(186);
  24.   NEXT i
  25.  LOCATE 25, 1
  26.  PRINT CHR$(200) + STRING$(78, 205) + CHR$(188);
  27.  LOCATE 3, 1
  28.  PRINT CHR$(204) + STRING$(78, 205) + CHR$(185);
  29.  LOCATE 24, 25: PRINT "Portadresse : ", adr;
  30.  RETURN
  31.  
  32. 'Hauptteil
  33. hp:
  34.  GOSUB maske
  35.  LOCATE 2, 22: PRINT "Lauflicht-Programmierung"
  36.   LOCATE 8, 20: PRINT "-1- Steuerdatei abspielen / Test"
  37.   LOCATE 9, 20: PRINT "-2- Eigene Steuerdatei erstellen"
  38.   LOCATE 11, 20: PRINT "-3- ENDE"
  39.   LOCATE 14, 20: INPUT "Bitte wählen Sie: ", wahl
  40.  ON wahl GOSUB abspielen, erstellen, ende
  41.  BEEP: GOTO hp
  42.  
  43. abspielen: 'Dateien abspielen
  44.  GOSUB maske
  45.  LOCATE 2, 30: PRINT "Ansteuern des Relais-Interfaces"
  46.   LOCATE 9, 20: PRINT "-1- Beispiel: links -> rechts"
  47.   LOCATE 10, 20: PRINT "-2- Beispiel: Zufallsmuster"
  48.   LOCATE 11, 20: PRINT "-3- Eigene Steuerdatei laden"
  49.   LOCATE 13, 20: PRINT "-4- Zurück"
  50.  LOCATE 16, 20: INPUT "Bitte wählen Sie: ", wahl
  51.  ON wahl GOSUB LeRe, zufall, laden, hp
  52.  BEEP: GOTO abspielen
  53.  
  54. laden:
  55.  GOSUB dateiladen
  56.  CLS
  57.   FOR i = 1 TO wviele
  58.    LOCATE i, 7: PRINT i; ". Datei : " + dname$(i) + ".LEU"
  59.   NEXT i
  60. geschw:
  61.  LOCATE 21, 5: INPUT "Geschwindigkeit (100-5000): ", speed
  62.  LOCATE 21, 34: PRINT SPACE$(10);
  63.   '** Dies ist prozessorabhängig und kann angepaßt werden!
  64.   IF speed < 100 OR speed > 5000 THEN BEEP: GOTO geschw
  65. wo:
  66.  LOCATE 21, 5: INPUT "Wie oft abspielen          : ", woft
  67.  LOCATE 21, 34: PRINT SPACE$(10);
  68.   IF woft < 1 THEN BEEP: GOTO wo
  69. spielen:
  70.  LOCATE 8, 10: PRINT "Bitte etwas Geduld!"
  71.   FOR i = 1 TO wviele
  72.    umr$ = l1$(i): GOSUB rech: l1(i) = VAL(umr$)
  73.    umr$ = l2$(i): GOSUB rech: l2(i) = VAL(umr$)
  74.    umr$ = l3$(i): GOSUB rech: l3(i) = VAL(umr$)
  75.    umr$ = l4$(i): GOSUB rech: l4(i) = VAL(umr$)
  76.    umr$ = l5$(i): GOSUB rech: l5(i) = VAL(umr$)
  77.    umr$ = l6$(i): GOSUB rech: l6(i) = VAL(umr$)
  78.    umr$ = l7$(i): GOSUB rech: l7(i) = VAL(umr$)
  79.    umr$ = l8$(i): GOSUB rech: l8(i) = VAL(umr$)
  80.   NEXT i
  81.   LOCATE 8, 12: PRINT SPACE$(10);
  82.   CLS : LOCATE 1, 1: PRINT STRING$(80, "*");
  83.    FOR z = 2 TO 24
  84.     LOCATE z, 1: PRINT "*"; : LOCATE z, 80: PRINT "*";
  85.    NEXT z
  86.   LOCATE 24, 1: PRINT STRING$(80, "*");
  87.  
  88.     FOR x = 1 TO woft: ' Wiederholung
  89.      FOR i = 1 TO wviele
  90.       LOCATE 9, 35: PRINT "Viel Spaß!"
  91.       LOCATE 14, 35: PRINT "Noch "; woft - x + 1_
  92.                          ; " Durchgänge! "
  93.       OUT adr, l1(i): FOR t = 1 TO speed: NEXT t
  94.       OUT adr, l2(i): FOR t = 1 TO speed: NEXT t
  95.       OUT adr, l3(i): FOR t = 1 TO speed: NEXT t
  96.       OUT adr, l4(i): FOR t = 1 TO speed: NEXT t
  97.       OUT adr, l5(i): FOR t = 1 TO speed: NEXT t
  98.       OUT adr, l6(i): FOR t = 1 TO speed: NEXT t
  99.       OUT adr, l7(i): FOR t = 1 TO speed: NEXT t
  100.       OUT adr, l8(i): FOR t = 1 TO speed: NEXT t
  101.     NEXT i, x
  102.    OUT adr, 0: ' Alles ausstellen
  103.  RETURN
  104.  
  105. erstellen:
  106.  GOSUB maske
  107.  LOCATE 2, 35: PRINT "Eigene Steuerdatei"
  108.  LOCATE 5, 5: PRINT "Bitte drücken Sie am Ende jeder ";
  109.               PRINT "Zeile <RETURN>!"
  110.  LOCATE 6, 5: PRINT "Geben Sie 1 ein, wenn die Lampe ";
  111.               PRINT "leuchten,"
  112.  LOCATE 7, 5: PRINT "und 0, wenn sie nicht leuchten soll."
  113.  LOCATE 9, 24: PRINT "Relais-Nr.: 12345678"
  114.   LOCATE 10, 35: PRINT CHR$(201) + STRING$(8, 205) _
  115.                                  + CHR$(187)
  116.    FOR i = 11 TO 18
  117.     LOCATE i, 35: PRINT CHR$(186)
  118.     LOCATE i, 44: PRINT CHR$(186)
  119.    NEXT i
  120.   LOCATE 19, 35: PRINT CHR$(200) + STRING$(8, 205) _
  121.                                  + CHR$(188)
  122.  LOCATE 11, 36: INPUT "", a$: LOCATE 12, 36: INPUT "", b$
  123.  LOCATE 13, 36: INPUT "", c$: LOCATE 14, 36: INPUT "", d$
  124.  LOCATE 15, 36: INPUT "", e$: LOCATE 16, 36: INPUT "", f$
  125.  LOCATE 17, 36: INPUT "", g$: LOCATE 18, 36: INPUT "", h$
  126. frage:
  127.  LOCATE 21, 30: INPUT "Sichern? (J/N): ", wahl$
  128.    IF wahl$ = "j" OR wahl$ = "J" THEN GOTO sichern
  129.    IF wahl$ = "n" OR wahl$ = "N" THEN RETURN
  130.    BEEP: GOTO frage
  131. sichern:
  132.  LOCATE 22, 15: INPUT "Dateiname (ohne Endung): ", dname$
  133.   IF dname$ = "" THEN BEEP: GOTO sichern
  134.   IF INSTR(dname$, ".") THEN BEEP: LOCATE 23, 25_
  135.      : PRINT "Keine Endung!"; : GOTO sichern
  136.  CLOSE : OPEN "O", #1, dname$ + ".LEU"
  137.   PRINT #1, a$: PRINT #1, b$
  138.   PRINT #1, c$: PRINT #1, d$:   ' Muster sichern
  139.   PRINT #1, e$: PRINT #1, f$
  140.   PRINT #1, g$: PRINT #1, h$
  141.   CLOSE : RETURN
  142.  
  143. dateiladen:
  144.  CLS
  145.  LOCATE 21, 8: INPUT "Wieviele Dateien wollen Sie laden: "_
  146.                      , wviele
  147.  IF wviele < 1 OR wviele > 10 THEN BEEP: GOTO dateiladen
  148.   FOR i = 1 TO wviele
  149. dn:
  150.    LOCATE 22, 8: PRINT i; ". Dateiname lautet :"
  151.    LOCATE 22, 31: INPUT "", dname$(i)
  152.    LOCATE 22, 24: PRINT SPACE$(10);
  153.     IF dname$(i) = "" THEN GOTO dn
  154.    LOCATE 20, 28: PRINT "Wird geladen!"
  155.   NEXT i
  156.    FOR w = 1 TO wviele
  157.     CLOSE : OPEN "I", #1, dname$(w) + ".leu"
  158.     INPUT #1, l1$(w), l2$(w), l3$(w), l4$(w), l5$(w), _
  159.               l6$(w), l7$(w), l8$(w)
  160.    NEXT w
  161.   CLOSE
  162.  RETURN
  163.  
  164. '** Umrechnung von Bin. nach Dez.
  165. rech:
  166.  d = 0: a = 0: b$ = "": c$ = ""
  167.    FOR j = 8 TO 1 STEP -1
  168.      b$ = MID$(umr$, j, 1)
  169.      c$ = c$ + b$
  170.    NEXT j
  171.  umr$ = c$
  172.  
  173.  a = LEN(umr$) - 1: z = 1: s = 0
  174. such:
  175.   IF MID$(umr$, z, 1) = "1" THEN GOTO ausw
  176.  z = z + 1: a = a - 1
  177.   IF a < 0 THEN umr$ = STR$(s): RETURN
  178.  GOTO such
  179. ausw:
  180.  d = 2 ^ a: s = s + d: z = z + 1: a = a - 1
  181.   IF a < 0 THEN umr$ = STR$(s): RETURN
  182.  GOTO such
  183.  
  184. ' ** Lauffolge, Beispiele
  185. LeRe: ' von links nach rechts
  186.  OUT adr, 1: FOR t = 1 TO 400: NEXT t
  187.  OUT adr, 2: FOR t = 1 TO 400: NEXT t
  188.  OUT adr, 4: FOR t = 1 TO 400: NEXT t
  189.  OUT adr, 8: FOR t = 1 TO 400: NEXT t
  190.  OUT adr, 16: FOR t = 1 TO 400: NEXT t
  191.  OUT adr, 32: FOR t = 1 TO 400: NEXT t
  192.  OUT adr, 64: FOR t = 1 TO 400: NEXT t
  193.  OUT adr, 128: FOR t = 1 TO 400: NEXT t
  194.  OUT adr, 0: RETURN
  195.  
  196. 'Beispiel: Zufallsblinken
  197. zufall:
  198.  FOR x = 1 TO 10: '10mal durchlaufen
  199. nochmal:
  200.   l = INT(RND * 128 + 1)
  201.    IF l < 1 OR l > 128 THEN GOTO nochmal
  202.   OUT adr, l: FOR t = 1 TO 700: NEXT t
  203.  NEXT x
  204.  OUT adr, 0
  205.  RETURN
  206.  
  207. ende:
  208.   CLOSE : OUT ard, 0: CLS : END
  209.  
  210. '****************** Ende von BLINK.BAS ********************
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.