REM ##################################################################
REM
REM Ampelsteuerung
REM Autor: Benjamin Drollinger und Sebastian Kling
REM Version: 6/06/98
REM
REM ##################################################################

REM ------------------------------------------------------------------
REM ==========================
REM Vereinbarung der Variablen
REM ==========================
    REM Zeitfaktor
    M = 1000
    REM Dauer der Blinkphase
    XYblink = 60
    REM Dauer der halben Blinkperiode
    Pblink = 5
    REM Dauer der verschiedenen Ampelphasen
    Xgruen = 20
    Xgelb = 5
    Xrotgelb = 5
    Ygruen = 20
    Ygelb = 5
    Yrotgelb = 5
   
REM =====================================
REM Folgende Werte bitte nicht aendern !
REM =====================================
REM Flag fr Fussgaengerampel
    F = 0
REM Ein- und Ausgabe-Adressen
REM Werte fuer Nicht-IBM PCs (LPT1)
REM    OUTADR = 888
REM    INPADR = 889
REM Werte fr IBM PCs (LPT1)
    OUTADR = 956
    INPADR = 957
REM ------------------------------------------------------------------


REM ******************************************************************
REM ANFANG des Hauptprogramms
REM ******************************************************************

REM ------------------------------------------------------------------
REM Blinklicht am Anfang
    GOSUB 20
REM ------------------------------------------------------------------

REM ==================================================================
REM Ampel-Verkehrsregelung (LOOP - Abfang)
REM ==================================================================
DO

    REM ------------------------------------------------------------------
    REM Phase 1, X=gruen, Y=rot, F=rot

    REM Ausgabe von Basti u. Benny
        GOSUB 100

    REM Ansteuerung der Ampeln
        GOSUB 110
        OUT OUTADR, 2 ^ 0 + 2 ^ 5 + 2 ^ 7
        MAX = Xgruen
        GOSUB 10
    REM ------------------------------------------------------------------
    
    REM ------------------------------------------------------------------
    REM Phase 2, X=gelb, Y=rot, F=rot
    
    REM Ausgabe von Basti u. Benny
        GOSUB 100
    
    REM Ansteuerung der Ampeln
        GOSUB 120
        OUT OUTADR, 2 ^ 2 + 2 ^ 5 + 2 ^ 7
        MAX = Xgelb
        GOSUB 10
    REM ------------------------------------------------------------------
    
    REM ------------------------------------------------------------------
    REM Phase 3, X=rot, Y=rot/gelb, F=rot
    
    REM Ausgabe von Basti u. Benny
        GOSUB 100
    
    REM Ansteuerung der Ampeln
        GOSUB 130
        OUT OUTADR, 2 ^ 4 + 2 ^ 5 + 2 ^ 3 + 2 ^ 7
        MAX = Yrotgelb
        GOSUB 10
    REM ------------------------------------------------------------------
    
    REM ------------------------------------------------------------------
    REM Phase 4 und 5, X=rot, Y=gruen, F=rot oder gruen
    
    REM Ausgabe von Basti u. Benny
        GOSUB 100
    
    REM Ansteuerung der Ampeln
    
        REM Abfrage des Status der Fussgaengerampel
        IF F = 1 THEN
           REM Phase 4, F=gruen
           GOSUB 140
           REM setze Status der Fussgaengerampel zurueck auf Null
           F = 0
           OUT OUTADR, 2 ^ 4 + 2 ^ 1 + 2 ^ 6
           MAX = Ygruen
           GOSUB 10
        ELSE
           REM Phase 5, F=rot
           GOSUB 150
           OUT OUTADR, 2 ^ 4 + 2 ^ 1 + 2 ^ 7
           MAX = Ygruen
           GOSUB 10
        END IF
    REM ------------------------------------------------------------------
    
    REM ------------------------------------------------------------------
    REM Phase 6, X=rot, Y=gelb, F=rot
    
    REM Ausgabe von Basti u. Benny
        GOSUB 100
    
    REM Ansteuerung der Ampeln
        GOSUB 160
        OUT OUTADR, 2 ^ 4 + 2 ^ 3 + 2 ^ 7
        MAX = Ygelb
        GOSUB 10
    REM ------------------------------------------------------------------
    
    REM ------------------------------------------------------------------
    REM Phase 7, X=rot/gelb, Y=rot, F=rot
    
    REM Ausgabe von Basti u. Benny
        GOSUB 100
    
    REM Ansteuerung der Ampeln
        GOSUB 170
        OUT OUTADR, 2 ^ 4 + 2 ^ 2 + 2 ^ 5 + 2 ^ 7
        MAX = Xrotgelb
        GOSUB 10
    REM ------------------------------------------------------------------
   
LOOP WHILE INKEY$ <> "e"
REM ==================================================================
REM Ampel-Verkehrsregelung (LOOP - Ende)
REM ==================================================================

REM ------------------------------------------------------------------
REM Blinklicht am Ende
    GOSUB 20
REM ------------------------------------------------------------------

END
REM ******************************************************************
REM ENDE des Hauptprogramms
REM ******************************************************************


REM ==================================================================
REM Subroutinen
REM ==================================================================


10  REM --------------------------------------------------------------
REM Zeitschleife und Abfrage der Fussgaengerampel
rem ------------------------------------------------------------------
REM INP(INADR) = 56, wenn U=-5V an Pin 10 anliegt.
    FOR i = 1 TO MAX * M
        IF INP(INPADR) = 56 THEN
           PRINT "Fussgaengerampel wurde gedrueckt."
           REM Setze Status der Fussgaengerampel auf 1
           F = 1
        END IF
    NEXT i
RETURN
REM ------------------------------------------------------------------

20  REM --------------------------------------------------------------
REM Blinkphase vor und nach der Ampelverkehrssteuerung
rem ------------------------------------------------------------------
    REM Ausgabe von Basti u. Benny
   
    FOR k = 1 TO XYblink / (2 * Pblink)
       
        REM Ausgabe von Basti u. Benny
            GOSUB 100
       
        REM Ansteuerung der Ampeln
            GOSUB 180
            OUT OUTADR, 2 ^ 2 + 2 ^ 3
            FOR i = 1 TO Pblink * M: NEXT i
        
        REM Ausgabe von Basti u. Benny
            GOSUB 100
      
        REM Ansteuerung der Ampeln
            GOSUB 190
            OUT OUTADR, 0
            FOR i = 1 TO Pblink * M: NEXT i
    NEXT k
RETURN
REM ------------------------------------------------------------------

100 REM --------------------------------------------------------------
REM Basti und Benny
    CLS 2
    COLOR 9
    PRINT ""
    PRINT ""
    PRINT "                \|/                   _\_/_"
    PRINT "                @ @                  ( @ @ )"
    PRINT "  ________ooO0o_( )_o0Oo______|--oOo--(_o_)--oOo-------"
    PRINT " |                                                     |"
    PRINT " |                                                     |"
    PRINT " |       ";
    COLOR 4
    PRINT "BBBBB          BBBBB";
    COLOR 9
    PRINT "                          |"
    PRINT " |       ";
    COLOR 4
    PRINT "BB  BB         BB  BB                         ";
    COLOR 9
    PRINT "|"
    PRINT " |       ";
    COLOR 14
    PRINT "BBBBB          BBBBB";
    COLOR 9
    PRINT "                          |"
    PRINT " |       ";
    COLOR 10
    PRINT "BB  BB         BB  BB                         ";
    COLOR 9
    PRINT "|"
    PRINT " |       ";
    COLOR 10
    PRINT "BBBBB";
    COLOR 9
    PRINT " asti und ";
    COLOR 10
    PRINT "BBBBB";
    COLOR 9
    PRINT " enny's Ampelanlage       |"
    PRINT " |_____________________________________________________|"
RETURN
REM ------------------------------------------------------------------

110 REM --------------------------------------------------------------
REM -Bild 1-
    COLOR 8
    PRINT "  - Phase 1 -"
    PRINT "                    _                 _"
    PRINT "                   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "               _   | |    _          | |"
    PRINT "              | |  | |   | |         ^"
    PRINT "              | |  ^   | |"
    PRINT "              |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|   _    |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "              ^  |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|   ^          _"
    PRINT "                   | |               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   | |               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

120 REM --------------------------------------------------------------
REM -Bild 2-
    COLOR 8
    PRINT "  - Phase 2 -"
    PRINT "                    _                 _"
    PRINT "                   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "               _   | |    _          | |"
    PRINT "              | |  | |   | |         ^"
    PRINT "              |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|  ^   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "              | |   _    | |"
    PRINT "              ^  |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|   ^          _"
    PRINT "                   | |               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   | |               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

130 REM---------------------------------------------------------------
REM - Bild 3-
    COLOR 8
    PRINT "  - Phase 3 -"
    PRINT "                    _                 _"
    PRINT "                   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "               _   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|    _          | | "
    PRINT "              |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|  | ";
    COLOR 8
    PRINT "|   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|         ^"
    PRINT "              | |  ^   | |"
    PRINT "              | |   _    | |"
    PRINT "              ^  |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|   ^          _"
    PRINT "                   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   | ";
    COLOR 8
    PRINT "|               | ";
    COLOR 8
    PRINT "|"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

140 REM---------------------------------------------------------------
REM - Bild 4 -
    COLOR 8
    PRINT "  - Phase 4 -"
    PRINT "                    _                 _"
    PRINT "                   | |               | |"
    PRINT "               _   | |    _          |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "              |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|  |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|         ^"
    PRINT "              | |  ^   | |"
    PRINT "              | |   _    | |"
    PRINT "              ^  | |   ^          _"
    PRINT "                   | |               | |"
    PRINT "                   |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

150 REM---------------------------------------------------------------
REM -Bild 5-
    COLOR 8
    PRINT "  - Phase 5 -"
    PRINT "                    _                 _"
    PRINT "                   | |               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "               _   | |    _          | |"
    PRINT "              |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|  |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|         ^"
    PRINT "              | |  ^   | |"
    PRINT "              | |   _    | |"
    PRINT "              ^  | |   ^          _"
    PRINT "                   | |               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   |";
    COLOR 10
    PRINT "O";
    COLOR 8
    PRINT "|               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

160 REM --------------------------------------------------------------
REM -Bild 6-
    COLOR 8
    PRINT "  - Phase 6 -"
    PRINT "                    _                 _"
    PRINT "                   | |               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "               _   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|    _          | |"
    PRINT "              |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|  | |   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|         ^"
    PRINT "              | |  ^   | |"
    PRINT "              | |   _    | |"
    PRINT "              ^  | |   ^          _"
    PRINT "                   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   | |               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

170 REM --------------------------------------------------------------
REM -Bild 7-
    COLOR 8
    PRINT "  - Phase 7 -"
    PRINT "                    _                 _"
    PRINT "                   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "               _   | |    _          | |"
    PRINT "              |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|  | |   |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|         ^"
    PRINT "              |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|  ^   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "              | |   _    | |"
    PRINT "              ^  |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|   ^          _"
    PRINT "                   | |               |";
    COLOR 4
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "                   | |               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

180 REM --------------------------------------------------------------
REM -Bild 8-
    COLOR 8
    PRINT "  - Phase 8 -"
    PRINT "                    _                 _"
    PRINT "                   | |               | |"
    PRINT "               _   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|    _          | |"
    PRINT "              | |  | |   | |         ^"
    PRINT "              |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|  ^   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|"
    PRINT "              | |   _    | |"
    PRINT "              ^  | |   ^          _"
    PRINT "                   |";
    COLOR 14
    PRINT "O";
    COLOR 8
    PRINT "|               | |"
    PRINT "                   | |               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------

190 REM --------------------------------------------------------------
REM -Bild 9-
    COLOR 8
    PRINT "  - Phase 9 -"
    PRINT "                    _                 _"
    PRINT "                   | |               | |"
    PRINT "               _   | |    _          | |"
    PRINT "              | |  | |   | |         ^"
    PRINT "              | |  ^   | |"
    PRINT "              | |   _    | |"
    PRINT "              ^  | |   ^          _"
    PRINT "                   | |               | |"
    PRINT "                   | |               | |"
    PRINT "                   ^               ^"
RETURN
REM ------------------------------------------------------------------


