
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!                                                                 !
!     ÖKO V 0.9    Norbert Ellert, 3208 Giesen, Meisenweg 24 a    !
!                                                                 !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  

! 35. Änderung vom 23.4.89

! -------------- Datas fÜr Gerichte und je 7 Zutaten ---------------------

DATA "Tomatensuppe mit Knoblauchbaguette","geschälte Tomaten","SuppengrÜn","Beinscheibe","Reis","Baguette","",""
DATA "Sauerkrauteintopf mit WÜrstchen","Sauerkraut","Bratwurst","Kartoffeln","Zwiebeln","saure Sahne","",""
DATA "Königsberger Klopse","Kartoffeln","Mett","Zwiebeln","Brötchen","Kapern","Pfefferkörner","Lorbeerblatt"
DATA "Pfannkuchen","Milch","Eier","Mehl","","","",""
DATA "Nudeln mit Tomatensoße","Nudeln","Tomatenmark","Zwiebeln","Schinkenspeck","","",""
DATA "Russischer Hackfleischtopf","Mett","saure Sahne","Lauch","Zwiebeln","Ketchup","Senf",""
DATA "Bratkartoffeln mit Hering","Bratheringe","Kartoffeln","Zwiebeln","","","",""
DATA "Griesschnitten mit Apfelmus","Gries","Milch","Zucker","Eier","Apfelmus","Paniermehl",""
DATA "Schweinefilet im Blätterteig","Schweinefilet","Zwiebeln","Schinkenspeck","Eier","Blätterteig","",""
DATA "Linsensuppe mit Rauchenden","Linsen","Kartoffeln","SuppengrÜn","klare BrÜhe","Rauchenden","",""
DATA "Rosenkohlauflauf","Rosenkohl","gekochter Schinken","geriebener Käse","Creme fraiche","","",""
DATA "Mettklöße mit Kartoffelbrei/Bohnen","Mett","Kartoffeln","Eier","Zwiebeln","Bohnen","",""
DATA "Puffer mit Zucker und Apfelmus","Kartoffeln","Möhren","Zwiebeln","Mehl","Apfelmus","Zucker",""
DATA "Käsepuffer","Kartoffeln","Möhren","Zwiebeln","Mehl","Emmentaler","",""
DATA "Kasseler mit Sauerkraut und Klößen","Kasseler","Kartoffelklöße","Sauerkraut","","","",""
DATA "Schweinebraten mit Semmelknödeln","Schweinebraten","Semmelknödel","","","","",""
DATA "Milchreis mit Apfelmus","Milch","Milchreis","Apfelmus","Zimt","Zucker","",""
DATA "Kartoffelsuppe mit Toast","Kartoffeln","Porree","klare BrÜhe","Sahne","Toastbrot","",""
DATA "Gulasch mit Nudeln und Salat","Gulasch","Nudeln","Champignons","Tomaten","Zwiebeln","Salat",""
DATA "Kartoffelbrei mit RÜhrei und Spinat","Eier","Mehl","Milch","Kartoffeln","Spinat","",""
DATA "Puterkeule mit Reis und Salat","Puterkeule","Reis","Salat","","","",""
DATA "Nudeln mit Mettsoße","Nudeln","Mett","Zwiebeln","Tomatenmark","saure Sahne","",""
DATA "Hähnchen mit GemÜsereis","Hähnchen","Reis","Paprika","Tomaten","Zwiebeln","",""
DATA "Falscher Hase","Mett","Zwiebeln","Eier","Senf","Porree","Möhren","Kartoffeln"
DATA "Ötti`s gute Hamburger","Sesambrötchen","Rindermett","Ketchup","Salat","Mayonaise","Röstzwiebeln",""
DATA "Eierreis mit Pilzen","Eier","Reis","Zwiebeln","Champignons","geriebener Käse","",""
DATA "Rinderbraten mit Klößen und Rotkohl","Rinderbraten","Kartoffelklöße","Rotkohl","","","",""
DATA "Blätterteig-Pirogge","Blätterteig","Mett","Gurken","Schafskäse","Eier","Dill","Senf"
DATA "Erbsensuppe mit Grießklößchen","Erbsen","Beinscheibe","SuppengrÜn","Grieß","Milch","Eier",""
DATA "Sauerkrautsuppe","Sauerkraut","klare BrÜhe","Sahne","Kasseler","","",""
DATA "Nudeln mit Schinken und Sahnesoße","Nudeln","Schinken","Sahne","","","",""
DATA "Braunkohl mit Bregenwust","Braunkohl","Schmalz","Zwiebeln","Senf","Bregenwurst","",""
DATA "Ötti`s gute Pizza","Mehl","Öl","Schinken","Champignons","geriebener Käse","geschälte Tomaten",""
DATA "Bratwurst m. Kartoffelbrei/Broccoli","Bratwurst","Kartoffeln","Broccoli","","","",""
DATA "Risi-Bisi mit Salat","Reis","Erbsen","gekochter Schinken","Zwiebeln","klare BrÜhe","Salat",""
DATA "Überbackene Champignonkoteletts","Koteletts","Champignons","geriebener Käse","Paniermehl","Sahne","",""
DATA "TÜrkische Hacksteaks mit Reis","Mett","Schafskäse","Reis","Zwiebeln","","",""
DATA "Strammer Max","Schinken","Brot","Eier","","","",""
DATA "SteckrÜbeneintopf","SteckrÜben","Schweinefleisch","SuppengrÜn","Kartoffeln","","",""
DATA "Nudelauflauf","Nudeln","Mett","Tomaten","Eier","Milch","Paniermehl","Margarine"
DATA "Reis mit HÜhnerfleisch","Reis","Hähnchen","Zwiebeln","","","",""
DATA "Pfannkuchen m. ChampignonfÜllung","Champignons","Eier","Milch","Mehl","","",""
DATA "Fischstäbchen mit Pommes","Fischstäbchen","Pommes Frites","Ketchup","Remoulade","","",""
DATA "Kohlrouladen","Wirsingkohl","Mett","Zwiebeln","Eier","Kartoffeln","",""
DATA "Pfannkuchen mit PutenfÜllung","Milch","Eier","Mehl","Lauchzwiebeln","Putenbrust","Sojasoße","Sojasprossen"
DATA "Porree-Pizza","Porree","Schmelzkäse","Hefe","Cabanossi","Tomaten","",""
DATA "Senfeier mit Pellkartoffeln","Senf","Eier","Kartoffeln","","","",""
DATA "ErbspÜrree-Auflauf","ErbspÜrree","Mett","klare BrÜhe","Zwiebeln","","",""
DATA "SÜßer Reisauflauf","Milchreis","Milch","Eier","Vanillezucker","Butter","",""
DATA "Pfannkuchen mit PflaumenfÜllung","Eier","Milch","Mehl","Pflaumen","Pflaumenmus","Zimt",""
DATA "SteckrÜben mit Frikadellen","SteckrÜben","Mett","Zwiebeln","","","",""
DATA "Gebackener Camembert","Camembert","Toast","Paniermehl","Preiselbeeren","","",""
DATA "Bratwurst mit Kartoffelsalat","Bratwurst","Kartoffeln","Gurken","Zwiebeln","Majonaise","Fleischsalat",""
DATA "Rosenkohlsuppe","Rosenkohl","klare BrÜhe","Creme fraiche","","","",""
DATA "Tiroler Leber","Leber","Zwiebeln","Ketchup","saure Sahne","Schinkenspeck","",""
DATA "Bratkartoffeln mit Ei","Karoffeln","Eier","Zwiebeln","","","",""
DATA "Eisbein mit Sauerkraut","Eisbein","Sauerkraut","Zwiebeln","Honig","Wacholderbeeren","Kartoffeln","Senf"
DATA "Hähnchenragout mit Reis","Reis","Hähnchen","Sojasprossen","klare BrÜhe","saure Sahne","",""
DATA "Nudeltortellini mit Salat","Salat","Nudeln","geriebener Käse","Eier ","Milch","Creme fraiche",""
DATA "Vorschlagsliste beginnt von vorn !","","","","","","",""
DATA "*"                          ! Endekennzeichnung fÜr z.Zt. 60 Gerichte und Zutaten

! ----------------------- Datas fÜr Waren --------------------------------

      ! --- Shopingzone ---
DATA "Film abgeben","Film abholen","Leergut abgeben","Reinigung","Schuster"
      ! --- Wurst,Fleisch,GeflÜgel ---
DATA "Mett","Aufschnitt","Streichwurst","Cabanossi","Schinken","Bauchfleisch"
DATA "Fleischwurst","Hähnchen"
      ! --- Käsetheke ---
DATA "Schafskäse","Gouda","Emmenthaler","Bavaria Blue"
      ! --- Obst und GemÜse
DATA "SuppengrÜn","Salat","Bananen","Äpfel","Apfelsinen","Mandarinen","Ananas"
DATA "Kartoffeln","GrÜne Gurke","Tomaten","Petersilie","Kresse","Porree"
DATA "SaisongemÜse","Rosenkohl","Wirsingkohl","Paprika","Broccoli","Zwiebeln"
DATA "Möhren"
      ! --- Frisch- und Milchprodukte ---
DATA "Butter","Margarine","Eier","Milch","Quark","Hefe","Sahne","saure Sahne"
DATA "Joghurt","Creme fraiche","Camembert","Schmelzkäse","Fleischsalat"
DATA "Heringssalat","Bratheringe"
      ! --- Getränke ---
DATA "Saft","Wasser","Bier","Weinbrand","Sekt"
      ! --- Konserven ---
DATA "Sauerkraut","Bohnen","Erbsen","Champignons","WÜrstchen","Gurken"
      ! --- Nährmittel ---
DATA "Brot","Toast","Baguette","Pumpernickel"
DATA "Roggenmehl","Weizenmehl","Paniermehl","Blätterteig"
DATA "Zucker","Salz","Kaffee","Kakao","Nutella","Honig","Sirup","Pflaumenmus"
DATA "Nudeln","Linsen","Reis","Öl","klare BrÜhe","Ketchup","Maggi","Senf"
DATA "Remoulade","Majonaise","Kartoffelklöße","Semmelknödel","Knabbersachen"
      ! --- Hygiene ---
DATA "Deodorant","Zahnpasta","ZahnbÜrsten","Haarspray","Haarfestiger"
DATA "TempotÜcher","KosmetiktÜcher","Tampons"
DATA "Toilettenpapier","WC-Reiniger","WC-Duft","Fensterreiniger"
DATA "Waschpulver","Feinwaschmittel"
DATA "WeichspÜler","Haushaltsrolle","HandspÜlmittel","MaschinenspÜler"
DATA "SpÜltÜcher","Topfschwämme","Gummihandschuhe","Schuhcreme"
      ! --- TiefkÜhltheke ---
DATA "Fischstäbchen","Eis","Spinat","Pommes Frites"
      ! --- Sonstiges ---
DATA "Tesafilm","Teelichter","Kerzen","FiltertÜten","Frischhaltefolie"
DATA "MÜllbeutel"
DATA "#"                          ! Endekennzeichnung fÜr z.Zt. 125 Waren

! ------------------------- 3 Hauptteile ---------------------------------

SUB programmanfang
    CALL vorbereitungen           ! Voreinstellungen und Dimensionierungen
    CALL zettelaufbau             ! Leeren Zettel aufbauen und speichern
    CALL felddefinition           ! Ein Feld definieren und speichern
END SUB

SUB programmhauptteil
    DO                            ! Schleife fÜr Neustart
       CALL zuruecksetzen         ! Variablen fÜr Neustart zurÜcksetzen
       CALL feldertext("startinfo")    ! Feldtexte: Start, Warum gibt es ÖKO ?
       CALL zetteltext("oeko")    ! Starttext ÖKO V. 1.0 ausgeben
       CALL quittungston          ! Aufbau akustisch bestätigen
       CALL maustest              ! Welches Feld angeklickt ? (Schleife)
    LOOP while zuende=0           ! Bis "ENDE" angeklickt             
END SUB

SUB programmschluss
    CALL zetteltext("byebye")     ! Abschiedsmeldung
    CALL feldertext("byebye")     ! Felder löschen
    CLOSE #1                      ! Druckerkanal schließen
    PAUSE 3                       ! 3 Sekunden warten
    CALL quittungston             ! Akustisches Schlußzeichen
    CLEAR                         ! Bildschirm löschen
END SUB

! ------------------------- Unterprogramme -------------------------------

SUB vorbereitungen
    SET WINDOW 0,640,0,200        ! Bildschirmkoordinaten
    SET color mix (0) .5,.5,.5    ! Farbe: grau
    SET color mix (1) 1,1,1       ! Farbe: weiß
    SET color mix (2) 0,0,0       ! Farbe: schwarz
    SET color mix (3) .9,.1,.1    ! Farbe: rot
    DIM ztext$(19)                ! Zetteltexte dimensionieren (19 Zeilen)
    DIM ftext$(8)                 ! Feldertexte dimensionieren ( 8 Zeilen)
    DIM textfarbe(19)             ! Textfarbe dimensionieren (rot/schwarz) 
    DIM feld(8)                   ! Flags fÜr gezeigte Felder dimensionieren 
    DIM tagtext$(7)               ! TageskÜrzel dimensionieren
    DIM tagbelegt(7)              ! Flags fÜr bereits belegte Wochentage
    DIM gericht$(7)               ! Gerichte dimensionieren
    DIM einlesezutat$(7)          ! Zutaten zum Einlesen dimensionieren
    DIM zutaten$(7,7)             ! Feld fÜr Zutaten einer Woche
    DIM hilfszutat1$(7)           ! Hilfsvariablen zum Zutatentauschen
    DIM hilfszutat2$(7)           ! Hilfsvariablen zum Zutatentauschen
    DIM ware$(109)                ! Waren dimensionieren 
    DIM zutatenware$(49)          ! Zutaten zum Sortieren dimensionieren
    DIM einleseware$(200)         ! Waren zum Einlesen dimensionieren
    DIM taste(37)                 ! Zeichen fÜr Handeintrag dimensionieren
    OPEN #1: printer              ! Druckerkanal öffnen
END SUB

SUB zettelaufbau
    SET color 2
    BOX AREA 330,640,0,188        ! Zettelschatten zeichnen
    SET color 1
    BOX AREA 320,630,10,198       ! Zettel zeichnen
    FOR i=0 to 19
        SET color 0
        BOX CIRCLE 329+i*15,336+i*15,191,195     ! Löcher zeichnen
        FLOOD 330+i*15,193
        SET color 2
        BOX AREA 332+i*15,333+i*15,193,200  ! Drähte zeichnen
    NEXT i
    BOX KEEP 320,640,0,200 in zettel$  ! Zettel speichern
END SUB

SUB felddefinition                ! Oberstes Feld definieren u. speichern
    SET color 2
    BOX AREA 10,310,168,188       ! Feldschatten zeichnen
    BOX KEEP 10,310,168,188 in feldschatten$     ! und speichern
    SET color 1
    BOX AREA 0,300,178,198        ! Feld zeichnen
    SET color 2
    BOX LINES 0,300,178,198       ! Feldrahmen zeichnen
    BOX KEEP 0,300,178,198 in feld$    ! und beides speichern
END SUB

SUB zuruecksetzen
    RESTORE
    LET tag=1                     ! fÜr Tagesleiste Montag einstellen
    LET xt=10                     ! x-Wert fÜr "MO"-Ausgabe
    LET neustart,zuende,progteil,druck,gedruckt,zettel,z=0
    LET warenzahl,warenzaehler,vorschlagszaehler=0
    MAT tagbelegt=0
    MAT gericht$=""
    MAT ware$=""
    MAT zutaten$=""               ! Vorzeilen: alle Werte zurÜcksetzen und löschen
END SUB

SUB feldertext(titel$)            ! Texteausgabe in Felder
    IF titel$<>"modimidofrsaso" then   ! Felder nicht löschen bei Tages-
       FOR i=1 to 8               ! kÜrzelzuweisung
           LET ftext$(i)=""       ! alte Texte löschen
           LET textfarbe(i)=0     ! alte rot/schwarz Zuweisung löschen
       NEXT i
    END IF
    SELECT CASE titel$
    CASE "modimidofrsaso"
         SET color 2
         CALL modimidofrsaso      ! WochentagskÜrzel zuweisen
         FOR i=0 to 6
             PLOT TEXT ,at 10+i*44,17 :tagtext$(i+1)  ! KÜrzel eintragen
         NEXT i
         EXIT SUB
    CASE "startinfo"
         CALL felder(0,0,3,0,0,6,0,0)  ! Feld 3 und 6 darstellen
         CALL startinfo           ! Feldertexte zuweisen
    CASE "entstehung"
         CALL felder(0,0,3,0,0,6,0,0)  ! ! Feld 3 und 6 darstellen
         CALL startinfo           ! ! Feldertextzuweisung wie vor
         LET ftext$(6)="WAS KANN Ö-K-O ?"   ! kleine Änderung
    CASE "koennen"
         CALL felder(0,0,3,0,0,6,0,0)  ! ! Feld 3 und 6 darstellen
         CALL startinfo           ! ! Feldertextzuweisung wie vor
         LET ftext$(6)="WIE WIRD Ö-K-O BEDIENT ?"     ! kleine Änderung
    CASE "bedienungallgemein"
         CALL felder(0,0,3,0,0,0,0,0)  ! Feld 3 darstellen
         CALL startinfo           ! Feldertextzuweisung wie vor
         LET ftext$(6)=""         ! Feld 6 löschen
    CASE "menueauswahl"
         CALL felder(1,2,3,4,5,6,7,0)
         CALL menueauswahl        ! Feldertexte zuweisen
    CASE "tastatur"
         CALL felder(1,0,0,0,0,0,0,0)
         CALL tastatur            ! Feldertexte zuweisen
    CASE "tagetauschen"
         CALL felder(1,2,0,0,5,0,0,0)
         CALL tagetauschen        ! Feldertexte zuweisen
         CALL tagesleiste         ! Tagesleiste zeigen
    CASE "ok"
         LET tagesleisteflag=0    ! Maustest Tagesleiste aus
         CALL felder(1,0,0,0,0,0,0,0)  ! Feld 1 darstellen
         CALL ok                  ! Feldertexte zuweisen
    CASE "einkaufswahl"
         CALL felder(1,2,3,4,5,0,7,8)
         CALL einkaufswahl        ! Feldertexte zuweisen
    CASE "endeeinkaufswahl"
         CALL felder(1,2,0,4,5,0,7,8)
         CALL einkaufswahl        ! Feldertexte wie vor zuweisen
         LET ftext$(3)=""         ! Feld 3 löschen
    CASE "zettelschluss"
         CALL felder(0,0,0,0,5,0,7,8)
         CALL zettelschluss       ! Feldertexte zuweisen
    CASE "ausgabe"
         CALL felder(1,0,3,0,5,0,7,8)
         CALL ausgabe             ! Feldertexte zuweisen
    CASE "byebye"
         CALL felder(0,0,0,0,0,0,0,0)  ! Alle Felder löschen
    END SELECT
    FOR i=1 to 8
        IF i=textfarbe(i) then SET color 3 else SET color 2
        CALL zentrieren(ftext$(i),150,209-i*24)  ! und ausgeben
    NEXT i
    SET color 2                   ! Schrift auf schwarz zurÜcksetzen
END SUB

SUB zentrieren(text$,xmitte,y)    ! Text zentrieren 
    LET wortlaenge=len(text$)*8   ! (Parameter: Text-String, 
    LET x=xmitte-wortlaenge/2     ! Mitte des x-Wertes, y-Wert)
    PLOT TEXT,at x,y :text$       ! Zentrierte Textausgabe
END SUB

SUB felder(a,b,c,d,e,f,g,h)       ! Felderleiste aufbauen
    BOX CLEAR 0,310,0,198         ! alte Felder löschen
    FOR i=1 to 8
        LET feld(i)=0             ! Feldflags löschen
    NEXT i
    IF a=1 then                   ! Feld 1
       LET feld(1)=1              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,168     ! gespeicherter Schatten
       BOX SHOW feld$ at 0,178    ! gespeichertes Feld u. Rahmen
    END IF
    IF b=2 then                   ! Feld 2
       LET feld(2)=2              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,144     ! gespeicherter Schatten
       BOX SHOW feld$ at 0,154    ! gespeichertes Feld u. Rahmen
    END IF
    IF c=3 then                   ! Feld 3
       LET feld(3)=3              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,120     ! gespeicherter Schatten
       BOX SHOW feld$ at 0,130    ! gespeichertes Feld u. Rahmen
    END IF
    IF d=4 then                   ! Feld 4
       LET feld(4)=4              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,96      ! gespeicherter Schatten
       BOX SHOW feld$ at 0,106    ! gespeichertes Feld u. Rahmen
    END IF
    IF e=5 then                   ! Feld 5
       LET feld(5)=5              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,72      ! gespeicherter Schatten
       BOX SHOW feld$ at 0,82     ! gespeichertes Feld u. Rahmen
    END IF
    IF f=6 then                   ! Feld 6
       LET feld(6)=6              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,48      ! gespeicherter Schatten
       BOX SHOW feld$ at 0,58     ! gespeichertes Feld u. Rahmen
    END IF
    IF g=7 then                   ! Feld 7
       LET feld(7)=7              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,24      ! gespeicherter Schatten
       BOX SHOW feld$ at 0,34     ! gespeichertes Feld u. Rahmen
    END IF
    IF h=8 then                   ! Feld 8
       LET feld(8)=8              ! Feldflag fÜr KlickprÜfung
       BOX SHOW feldschatten$ at 10,0  ! gespeicherter Schatten
       BOX SHOW feld$ at 0,10     ! gespeichertes Feld u. Rahmen
    END IF
END SUB

SUB zetteltext(titel$)            ! Textausgabe auf Zettel
    FOR i=1 to 19
        LET ztext$(i)=""          ! alte Textzuweisung löschen
        LET textfarbe(i)=0        ! alte rot/schwarz Zuweisung löschen
    NEXT i
    SELECT CASE titel$
    CASE "oeko"
         CALL oeko                ! Titelbildtext zuweisen 
    CASE "entstehung"
         CALL entstehung          ! Text zuweisen
    CASE "koennen"
         CALL koennen             ! Text zuweisen
    CASE "bedienungallgemein"
         CALL bedienungallgemein  ! Text zuweisen
    CASE "bedienungkuechenzettel"
         CALL bedienungkuechenzettel   ! Text zuweisen
    CASE "kuechenzettel"
         CALL kuechenzettel       ! Text zuweisen
    CASE "listevonvorn"
         CALL listevonvorn        ! Text zuweisen
    CASE "belegtertag"
         CALL belegtertag         ! Text zuweisen
    CASE "handeintrag"
         CALL handeintrag         ! Text zuweisen
    CASE "handeintrageinkauf"
         CALL handeintrageinkauf  ! Text zuweisen
    CASE "tauschinfo"
         CALL tauschinfo          ! Text zuweisen
    CASE "bedienungeinkaufszettel"
         CALL bedienungeinkaufszettel  ! Text zuweisen
    CASE "einkaufszettel1"
         CALL einkaufszettel1     ! Text zuweisen
    CASE "einkaufszettel2"
         CALL einkaufszettel2     ! Text zuweisen
    CASE "einkaufszettel3"
         CALL einkaufszettel3     ! Text zuweisen
    CASE "einkaufszettelvoll"
         CALL einkaufszettelvoll  ! Text zuweisen
    CASE "vorschlagsende"
         CALL vorschlagsende      ! Text zuweisen
    CASE "druckervorbereiten"
         CALL druckervorbereiten  ! Text zuweisen
    CASE "bedienungausgabe"
         CALL bedienungausgabe    ! Text zuweisen
    CASE "erstdrucken"
         CALL erstdrucken         ! Text zuweisen
    CASE "byebye"
         CALL byebye              ! Text zuweisen
    CASE "wartendruck"
         CALL wartendruck         ! Text zuweisen
    CASE "druckfertig"
         CALL druckfertig         ! Text zuweisen
    END SELECT
    BOX SHOW zettel$ at 320,0     ! neuen leeren Zettel 
    FOR i=1 to 19
        IF textfarbe(i)=i then SET color 3 else SET color 2     ! rot od. schwarz
        CALL zentrieren(ztext$(i),475,187-i*9)   !  und Text ausgeben
    NEXT i
    SET color 2                   ! Schrift auf schwarz zurÜcksetzen
END SUB

SUB quittungston
    FOR i=1 to 3
        SOUND 600,.03
        SOUND 1500,.03
    NEXT i
END SUB

SUB maustest
    DO
       IF zuende=1 or neustart=1 then EXIT SUB   ! wenn Ende oder Neustart !
       GET POINT x,y              ! Klickkoordinaten speichern
       IF tagesleisteflag=1 then  ! Nur wenn Tagesleiste vorhanden !
          IF y>10 and y<30 then   ! Tagesleiste ?
             IF x>0 and x<35 then      ! Samstag ?
                LET xt=10         ! x-Wert fÜr TageskÜrzelausgabe
                LET tag=1         ! Tagesflag
                LET tagversuch=0  ! Überschreibschutz fÜr Wochentag an
                CALL quittungston
                CALL taginvertieren    ! SA invertieren
             ELSEIF x>44 and x<79 then      ! Sonntag ?
                LET xt=54
                LET tag=2
                LET tagversuch=0
                CALL quittungston
                CALL taginvertieren    ! SO invertieren
             ELSEIF x>88 and x<123 then     ! Montag ?
                LET xt=98
                LET tag=3
                LET tagversuch=0
                CALL quittungston
                CALL taginvertieren    ! MO invertieren
             ELSEIF x>132 and x<167 then    ! Dienstag ?
                LET xt=142
                LET tag=4
                LET tagversuch=0
                CALL quittungston
                CALL taginvertieren    ! DI invertieren
             ELSEIF x>176 and x<211 then    ! Mittwoch ?
                LET xt=186
                LET tag=5
                LET tagversuch=0
                CALL quittungston
                CALL taginvertieren    ! MI invertieren
             ELSEIF x>220 and x<255 then    ! Donnerstag ?
                LET xt=230
                LET tag=6
                LET tagversuch=0
                CALL quittungston
                CALL taginvertieren    ! DO invertieren
             ELSEIF x>264 and x<299 then    ! Freitag ?
                LET xt=274
                LET tag=7
                LET tagversuch=0
                CALL quittungston
                CALL taginvertieren    ! FR invertieren
             END IF
          END IF
       END IF
       IF x>0 and x<300 then      ! Felderleiste ?
          IF y<198 and y>178 then      ! 1. Feld von oben ?
             LET feldnr=1
             IF feld(1)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<174 and y>154 then  ! 2. Feld von oben ?
             LET feldnr=2
             IF feld(2)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<150 and y>130 then  ! 3. Feld von oben ?
             LET feldnr=3
             IF feld(3)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<126 and y>106 then  ! 4. Feld von oben ?
             LET feldnr=4
             IF feld(4)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<102 and y>82 then   ! 5. Feld von oben ?
             LET feldnr=5
             IF feld(5)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<78 and y>58 then    ! 6. Feld von oben ?
             LET feldnr=6
             IF feld(6)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<54 and y>34 then    ! 7. Feld von oben ?
             LET feldnr=7
             IF feld(7)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          ELSEIF y<30 and y>10 then    ! 8. Feld von oben ?
             LET FELDNR=8
             IF feld(8)=feldnr then CALL feldgeklickt      ! Wenn Feld vorhanden
          END IF
       END IF
    LOOP
    SET color 2                   ! Schrift wieder schwarz
END SUB

SUB feldgeklickt
    IF feldnr>3 then
       LET tagversuch=0           ! Überschreibschutz an, falls Überschreiben nicht bestätigt
       LET hand=0                 ! Handeintragsmarkierung löschen
    END IF
    IF tauschversuch>0 and feldnr>1 and feldnr<>5 then LET tauschversuch=0     ! Tauschversuch zurÜcksetzen, wenn nicht Tauschen bestätigt
    IF gedruckt=0 then            ! Wenn noch nicht gedruckt
       IF druck=1 and feldnr>1 and feldnr<7 then LET druck=0    ! Sicherheitsabfrage bei Neustart und Ende zurÜcksetzen, wenn nicht bestätigt
    END IF
    IF feldnr<>3 then LET zettel=0     ! Zettel durchblättern auf Anfang (KÜchenzettel) setzen, wenn nicht weiter geblättert
    SELECT CASE feldnr            ! Feldnummer prÜfen
    CASE 1
         IF ftext$(1)="" then     ! nicht klingeln, da Vorschlagszeile
            EXIT SUB
         ELSEIF ftext$(1)="ALLE ZETTEL DRUCKEN" then
            CALL quittungston
            CALL drucker
         ELSEIF ftext$(1)="OK" and progteil=0 then
            CALL zetteltext("kuechenzettel")     ! KÜchenzetteltext ausgeben
            CALL feldertext("menueauswahl")      ! MenÜauswahltexte ausgeben
            CALL tagesleiste      ! Tagesleiste wieder darstellen
            SET color 3
            CALL zentrieren(anzeigegericht$,150,185)
         ELSEIF ftext$(1)="OK" and progteil=1 then    ! Wenn Einkaufszettel
            IF ez=1 then          ! Wenn Seite 1
               CALL zetteltext("einkaufszettel1")
            ELSEIF ez=2 then      ! Wenn Seite 2
               CALL zetteltext("einkaufszettel2")
            ELSEIF ez=3 then      ! Wenn Seite 3
               CALL zetteltext("einkaufszettel3")
            END IF
            IF warenzaehler<=108 then  ! Wenn Einkaufszettel noch nicht voll
               IF vorschlagszaehler<>warenzahl then   ! Wenn noch Waren in der Liste
                  CALL feldertext("einkaufswahl")     ! Einkaufsauswahlfelder zeigen
               ELSEIF vorschlagszaehler=warenzahl then     ! Wenn Warenliste zuende
                  CALL feldertext("endeeinkaufswahl")      ! "Neuer Vorschlag" weg
               END IF
            ELSEIF warenzaehler>108 then    ! Wenn Einkaufszettel voll
               CALL feldertext("zettelschluss")  ! Nur noch Feld 5,7,8
               CALL quittungston
               EXIT SUB
            END IF
            SET color 3
            CALL zentrieren(anzeigeware$,150,185)     ! Letzte Ware wieder anzeigen
         ELSEIF ftext$(1)="OK" and progteil=2 then    ! Ausgabeteil
            IF gedruckt=1 then
               CALL zetteltext("druckfertig")
            ELSEIF gedruckt=0 then
               CALL zetteltext("druckervorbereiten")  ! Vorbereitungstext ausgeben
            END IF
            CALL feldertext("ausgabe")      ! Ausgabefelder zeigen
         END IF
    CASE 2
         IF ftext$(2)="ABBRUCH" then
            CALL tauschende       ! Tauschabbruch
         ELSEIF ftext$(2)="GERICHT EINTRAGEN" then
            CALL gerichteintragen
         ELSEIF ftext$(2)="WARE EINTRAGEN" then
            CALL wareeintragen
         END IF
    CASE 3
         IF ftext$(3)="START" then
            CALL zetteltext("kuechenzettel")     ! KÜchenzetteltext ausgeben
            CALL feldertext("menueauswahl")      ! MenÜauswahltexte ausgeben
            CALL tagesleiste      ! Tagesleiste aufbauen und speichern
            CALL gerichteinlesen
         ELSEIF ftext$(3)="NEUER VORSCHLAG" then
            CALL gerichteinlesen
         ELSEIF ftext$(3)="NÄCHSTE WARE" then
            CALL wareeinlesen
         ELSEIF ftext$(3)="ALLE ZETTEL DURCHBLÄTTERN" then
            IF zettel=0 then      ! KÜchenzettel zeigen
               LET zettel=1
               CALL zetteltext("kuechenzettel")
            ELSEIF zettel=1 then  ! EINKAUFSZETTEL S.1 zeigen
               IF warenzaehler>36 then
                  LET zettel=2
               ELSEIF warenzaehler<=36 then
                  LET zettel=4
               END IF
               CALL zetteltext("einkaufszettel1")
            ELSEIF zettel=2 then  ! ggfls. Einkaufszettel S.2 zeigen
               IF warenzaehler>72 then
                  LET zettel=3
               ELSEIF warenzaehler<=72 then
                  LET zettel=4
               END IF
               CALL zetteltext("einkaufszettel2")
            ELSEIF zettel=3 then  ! ggfls. Einkaufszettel S.3 zeigen
               LET zettel=4
               CALL zetteltext("einkaufszettel3")
            ELSEIF zettel=4 then
               LET zettel=0
               IF gedruckt=0 then
                  CALL zetteltext("druckervorbereiten")
               ELSEIF gedruckt=1 then
                  CALL zetteltext("druckfertig")
               END IF
            END IF
         END IF
    CASE 4
         IF ftext$(4)="EINTRAG PER HAND" then
            CALL tastatureingabe  ! Eingaberoutine
         END IF
    CASE 5
         IF ftext$(5)="TAGE TAUSCHEN" or ftext$(5)="BESTÄTIGUNG" then
            CALL tauschen         ! Tauschroutine
         ELSEIF ftext$(5)="WEITERE ZETTELSEITE ZEIGEN" then
            IF ez=1 then          ! Wenn Seite 1
               CALL zetteltext("einkaufszettel2")     ! dann Seite 2 zeigen
               LET ez=2           ! Flag fÜr Seite 2 setzen
            ELSEIF ez=2 then      ! Wenn Seite 2
               CALL zetteltext("einkaufszettel3")     ! dann Seite 3 zeigen
               LET ez=3           ! Flag fÜr Seite 3 setzen
            ELSEIF ez=3 then      ! Wenn Seite 3
               CALL zetteltext("einkaufszettel1")     ! dann Seite 1 zeigen
               LET ez=1           ! Flag fÜr Seite 1 setzen
            END IF
         ELSEIF ftext$(5)="INFORMATION" then
            CALL zetteltext("bedienungausgabe")
            CALL feldertext("ok")
         END IF
    CASE 6
         IF ftext$(6)="WARUM GIBT ES Ö-K-O ?" then
            CALL zetteltext("entstehung")   ! Was kann ÖKO ?
            CALL feldertext("entstehung")   ! neue Feldertexte
         ELSEIF ftext$(6)="WAS KANN Ö-K-O ?" then
            CALL zetteltext("koennen")      ! Was kann ÖKO ?
            CALL feldertext("koennen")      ! neue Feldertexte
         ELSEIF ftext$(6)="WIE WIRD Ö-K-O BEDIENT ?" then
            CALL zetteltext("bedienungallgemein")     ! Wie wird ÖKO bedient ?
            CALL feldertext("bedienungallgemein")     ! neue Feldertexte
         ELSEIF ftext$(6)="INFO ZUR KÜCHENZETTELERSTELLUNG" then
            CALL zetteltext("bedienungkuechenzettel")
            CALL feldertext("ok")
         END IF
    CASE 7
         IF ftext$(7)="KÜCHENZETTEL FERTIG" then
            LET progteil=1        ! Einkaufszettelerstellung
            LET ez=1              ! Flag fÜr Seite 1
            LET tagesleisteflag=0      ! Maustest fÜr Tage aus
            CALL zetteltext("einkaufszettel1")   ! Einkaufszettel 1 zeigen
            CALL feldertext("einkaufswahl")      ! Einkaufsauswahlfelder zeigen
            SET color 3
            CALL zentrieren("Bitte warten - ÖKO sortiert !",150,185)
            CALL zutatensortieren      ! Gerichtzutaten zur Ausgabe sortieren
            CALL wareeinlesen     ! Ware anzeigen
         ELSEIF ftext$(7)="INFO ZUR EINKAUFSZETTELERSTELLUNG" then
            CALL zetteltext("bedienungeinkaufszettel")
            CALL feldertext("ok")
         ELSEIF ftext$(7)="NEUSTART" and druck=0 then
            LET druck=1
            CALL zetteltext("erstdrucken")
            CALL feldertext("ok")
         ELSEIF ftext$(7)="NEUSTART" and druck=1 then
            LET neustart=1
            EXIT SUB              ! nicht klingeln
         END IF
    CASE 8
         IF ftext$(8)="EINKAUFSZETTEL FERTIG" then
            LET progteil=2        ! Ausgabeteil
            CALL zetteltext("druckervorbereiten")     ! Information
            CALL feldertext("ausgabe")      ! Ausgabefelder zeigen
         ELSEIF ftext$(8)="ENDE" and druck=0 then
            LET druck=1
            CALL zetteltext("erstdrucken")
            CALL feldertext("ok")
         ELSEIF ftext$(8)="ENDE" and druck=1 then
            LET zuende=1
         END IF
    END SELECT
    CALL quittungston
END SUB

SUB tagesleiste                   ! Tagesleiste aufbauen
    LET Tagesleisteflag=1         ! Flag fÜr Maustest Tagesleiste an
    FOR i=0 to 6
        SET color 2
        BOX AREA 10+i*44,45+i*44,0,20  ! Tagesfeldschatten
        SET color 1
        BOX AREA 0+i*44,35+i*44,10,30  ! Tagesfeld
        SET color 2
        BOX LINES 0+i*44,35+i*44,10,30      ! Tagesfeldrahmen
    NEXT i
    CALL feldertext("modimidofrsaso")  ! WochentagskÜrzel eintragen
    BOX KEEP 0,310,0,30 in tagesleiste$     ! Tagesleiste speichern
    SET color 3
    PLOT TEXT, at xt,17:tagtext$(tag)  ! Tag in rot
END SUB

SUB taginvertieren
    LET tagesleisteflag=1         ! Maustest Tagesleiste an
    BOX SHOW tagesleiste$ at 0,0  ! gespeicherte Tagesleiste darstellen
    SET color 3
    CALL modimidofrsaso           ! WochentagskÜrzel einlesen
    PLOT TEXT,at xt,17 :tagtext$(tag)  ! angeklickten Tag in rot
END SUB

SUB gerichteinlesen               ! Gerichte in Vorschlagszeile anzeigen
    SET color 1
    BOX AREA 1,299,179,197        ! Vorschlagszeile weiß
    IF hand=1 then                ! Nach Handeintrag
       LET anzeigegericht$=gerichtspeicher$      ! gespeichertes Gericht weider zeigen
    ELSEIF hand=0 then
       READ anzeigegericht$       ! anzeigegericht$=Einlesevariable fÜr Gericht
       FOR i=1 to 7
           READ einlesezutat$(i)  ! einlesezutat$(i)=Einlesevariable fÜr Zutaten
       NEXT i
    END IF
    IF anzeigegericht$="Vorschlagsliste beginnt von vorn !" then RESTORE
    SET color 3                   ! Vorzeile: Datas zurÜcksetzen, wenn Listenende
    CALL zentrieren(anzeigegericht$,150,185)     ! in rot ausgeben
    LET hand=0                    ! Handeintragsmarkierung löschen
    LET tagversuch=0              ! Überschreibschutz an
END SUB

SUB gerichteintragen
    IF anzeigegericht$="Vorschlagsliste beginnt von vorn !" then
       CALL zetteltext("listevonvorn")      ! Hinweis : Listenende
       CALL feldertext("ok")
       EXIT SUB
    ELSEIF tagbelegt(tag)=tag and tagversuch=0 then   ! Wenn Tag schon belegt
       LET tagversuch=1           ! erster Versuch Tag zu Überschreiben
       CALL zetteltext("belegtertag")  ! Hinweis
       CALL feldertext("ok")
       EXIT SUB
    END IF
    IF anzeigegericht$<>"- - - - -" then    ! Wenn keine Löschung per Hand
       LET gericht$(tag)=anzeigegericht$    ! Einlesevariable=Tagesvariable
       LET tagbelegt(tag)=tag     ! Tag als belegt kennzeichnen
       IF hand=0 then             ! wenn kein Handeintrag 
          FOR i=1 to 7
              LET zutaten$(tag,i)=einlesezutat$(i)    ! Zutaten in ein Feld (7 Tage x 5 Zutaten)
          NEXT i
       END IF
    ELSEIF anzeigegericht$="- - - - -" then      ! Wenn Löschung,dann
       LET gericht$(tag)=""       ! nichts auf den Zettel
       LET tagbelegt(tag)=0       ! Belegtzeichen löschen
       FOR i=1 to 7
           LET zutaten$(tag,i)=""      ! Zutaten im Feld löschen
       NEXT i
    END IF
    CALL zetteltext("kuechenzettel")   ! ergänzter KÜchenzettel               
    CALL gerichteinlesen
END SUB

SUB tastatureingabe               ! von Tastatur Gericht oder Ware einlesen
    IF progteil=0 then            ! Gerichteingabe
       CALL feldertext("tastatur")
       CALL zetteltext("handeintrag")  ! Info
       LET maxzeichen=37          ! Gerichte bis zu 35 Zeichen (2-37)
       LET gerichtspeicher$=anzeigegericht$      ! Letze Anzeige speichern
    ELSEIF progteil=1 then        ! Wareneingabe
       CALL feldertext("tastatur")
       CALL zetteltext("handeintrageinkauf")     ! Info
       LET maxzeichen=20          ! Waren bis zu 18 Zeichen (2-20)
    END IF
    CALL quittungston
    SET cursor "OFF"              ! Cursor ausschalten
    LET fertig=0                  ! Eingabeschlußflag aus
    LET zahl=1                    ! Zeichenzähler
    DO until fertig=1
       LET zahl=zahl+1
       IF zahl<=maxzeichen then   ! maximale Zeichenanzahl ?
          GET KEY taste(zahl)     ! Zeichen von Tastatur einlesen
          IF taste(zahl)=13 then
             LET zahl=zahl-1      ! Returnzeichen löschen
             LET fertig=1         ! Eingabeschlußflag an
             DO
                IF chr$(taste(zahl))=" " then LET zahl=zahl-1   ! Abschließende Leerzeichen löschen
             LOOP until chr$(taste(zahl))<>" "
          ELSEIF taste(zahl)=8 then    ! Backspacekontrolle
             IF zahl>=3 then      ! Backspacekontrolle
                LET zahl=zahl-2   ! Backspacekontrolle
             ELSEIF zahl<3 then   ! Backspacekontrolle
                LET zahl=1        ! Backspacekontrolle
             END IF               ! Backspacekontrolle
          ELSEIF taste(zahl)<32 or taste(zahl)>126 then
             LET zahl=zahl-1      ! Nur darstellbare Zeichen ausgeben                     
          END IF
       ELSEIF zahl>maxzeichen then     ! Mehr als max. Zeichenzahl ?
          LET zahl=maxzeichen-1   ! Darstellung abweisen, aber Eingabe 
       END IF                     ! wegen Schlußzeichen noch möglich !
       IF progteil=0 then         ! beim KÜchenzettel
          LET anzeigegericht$=""
          FOR i=2 to zahl
              LET anzeigegericht$=anzeigegericht$ & chr$(taste(i))
              IF anzeigegericht$=" " then   ! FÜhrende Leerzeichen abweisen
                 LET anzeigegericht$=""
                 LET zahl=1
              END IF
          NEXT i
          IF anzeigegericht$="" then LET anzeigegericht$="- - - - -"      ! Wenn durch Handeintrag Löschung         
          SET color 1
          BOX AREA 1,299,179,197  ! Vorschlagszeile weiß
          SET color 3
          CALL zentrieren(anzeigegericht$,150,185)
       ELSEIF progteil=1 then     ! beim Einkaufszettel
          LET anzeigeware$=""
          FOR i=2 to zahl
              LET anzeigeware$=anzeigeware$ & chr$(taste(i))
              IF anzeigeware$=" " then      ! FÜhrende Leerzeichen abweisen
                 LET anzeigeware$=""
                 LET zahl=1
              END IF
          NEXT i
          IF anzeigeware$="" then LET anzeigeware$="- - - - -"  ! Wenn durch Handeintrag Löschung         
          SET color 1
          BOX AREA 1,299,179,197  ! Vorschlagszeile weiß
          SET color 3
          CALL zentrieren(anzeigeware$,150,185)
       END IF
    LOOP
    IF progteil=0 then            ! beim KÜchenzettel
       LET hand=1                 ! als Handeintrag kennzeichnen (keine Zutaten einlesen)
       CALL feldertext("menueauswahl")      ! Menueauswahlfelder wieder zeigen
       CALL taginvertieren        ! Tagesleiste wieder zeigen
       SET color 3
       CALL zentrieren(anzeigegericht$,150,185)  ! Eintrag in Vorschlagzeile
       CALL zetteltext("kuechenzettel")     ! KÜchenzettel wieder zeigen
    ELSEIF progteil=1 then        ! beim Einkaufszettel
       LET hand=1                 ! als Handeintrag kennzeichnen 
       IF vorschlagszaehler<>warenzahl then      ! Wenn noch Waren in der Liste
          CALL feldertext("einkaufswahl")   ! Einkaufsauswahlfelder zeigen
       ELSEIF vorschlagszaehler=warenzahl then   ! Wenn Warenliste zuende
          CALL feldertext("endeeinkaufswahl")    ! "Neuer Vorschlag" weg
       END IF
       IF warenzaehler<=36 then   ! Wenn Seite 1 noch nicht voll
          CALL zetteltext("einkaufszettel1")     ! dann Seite 1 zeigen
          LET ez=1                ! Flag fÜr Seite 1 setzen
       ELSEIF warenzaehler<=72 then    ! Wenn Seite 2 noch nicht voll
          CALL zetteltext("einkaufszettel2")     ! dann Seite 2 zeigen
          LET ez=2                ! Flag fÜr Seite 2 setzen
       ELSEIF warenzaehler<=108 then   ! Wenn Seite 3 noch nicht voll
          CALL zetteltext("einkaufszettel3")     ! dann Seite 1 zeigen
          LET ez=3                ! Flag fÜr Seite 3 setzen
       END IF
       SET color 3
       CALL zentrieren(anzeigeware$,150,185)     ! Eintrag in Vorschlagzeile
    END IF
END SUB

SUB tauschen
    IF tauschversuch=0 then       ! erstesmal tauschen ?
       LET tauschversuch=1        ! Versuchanzahl merken
       CALL zetteltext("tauschinfo")   ! Info ausgeben
       CALL feldertext("ok")
    ELSEIF tauschversuch=1 then   ! zweitesmal tauschen ?
       CALL feldertext("tagetauschen")      ! Tauschfelder zeigen
       SET color 3
       CALL zentrieren("Bitte 1.Tag und Bestätigung",150,185)
       LET tauschversuch=2        ! Versuchanzahl merken
    ELSEIF tauschversuch=2 then   ! Bestätigung ?
       SET color 1
       BOX AREA 1,299,179,197     ! Vorschlagszeile weiß
       SET color 3
       CALL zentrieren("Jetzt 2.Tag und Bestätigung",150,185)
       LET tauschtag1=tag         ! 1.Tag merken
       LET tauschversuch=3        ! Versuchanzahl merken
    ELSEIF tauschversuch=3 then
       LET tauschtag2=tag         ! 2.Tag merken und jetzt tauschen :
       LET hilfsgericht1$=gericht$(tauschtag1)   ! Hilfsgericht1=Gericht 1.Tag
       LET hilfsgericht2$=gericht$(tauschtag2)   ! Hilfsgericht2=Gericht 2.Tag
       LET gericht$(tag)=hilfsgericht1$     ! Gericht 2.Tag=Hilfsgericht1
       LET gericht$(tauschtag1)=hilfsgericht2$   ! Gericht 1.Tag=Hilfsgericht2
       FOR i=1 to 7               ! Zutaten tauschen :
           LET hilfszutat1$(i)=zutaten$(tauschtag1,i)      ! Hilfszutat1=Zutaten 1.Tag
           LET hilfszutat2$(i)=zutaten$(tauschtag2,i)      ! Hilfszutat2=Zutaten 2.Tag
           LET zutaten$(tag,i)=hilfszutat1$(i)   ! Zutaten 2.Tag=Hilfszutaten1
           LET zutaten$(tauschtag1,i)=hilfszutat2$(i)      ! Zutaten 1.Tag=Hilfszutaten2
       NEXT i
       LET tagbelegt(tag)=tag     ! Tag als belegt kennzeichnen, falls
       LET tagbelegt(tauschtag1)=tauschtag1      ! vorher unbelegt
       IF gericht$(tag)="" then   ! Falls jetzt unbelegt
          LET tagbelegt(tag)=0    ! Belegtzeichen löschen
          FOR i=1 to 7
              LET zutaten$(tag,i)=""   ! Zutaten löschen
          NEXT i
       END IF
       IF gericht$(tauschtag1)="" then
          LET tagbelegt(tauschtag1)=0
          FOR i=1 to 7
              LET zutaten$(tauschtag1,i)=""      ! Zutaten löschen
          NEXT i
       END IF
       LET tauschversuch=0        ! Versuchanzahl zurÜcksetzen
       CALL zetteltext("kuechenzettel")     ! Neuen KÜchenzettel zeigen
       CALL feldertext("menueauswahl")      ! Menuefelder zeigen
       CALL tagesleiste           ! Tagesleiste zeigen
       CALL gerichteinlesen       ! Nächstes Gericht anzeigen
    END IF
END SUB

SUB tauschende
    LET tauschversuch=0           ! Versuchanzahl zurÜcksetzen
    CALL zetteltext("kuechenzettel")   ! KÜchenzettel zeigen
    CALL feldertext("menueauswahl")    ! Menuefelder zeigen
    CALL tagesleiste              ! Tagesleiste zeigen
    CALL gerichteinlesen          ! Nächstes Gericht anzeigen
END SUB

SUB zutatensortieren
    FOR i=1 to 7                  ! fÜr 7 Tage
        FOR j=1 to 7              ! und je 7 Zutaten
            LET z=z+1             ! 49x mitzählen
            LET zutatenware$(z)=zutaten$(i,j)
            FOR k=1 to z-1        ! Letzte Zutat mit einer bisherigen gleich ?
                IF zutatenware$(z)=zutatenware$(k) then LET zutatenware$(z)=""
            NEXT k                ! Vorzeile : dann löschen !
        NEXT j
    NEXT i
    FOR i=1 to z                  ! 49 mal
        IF zutatenware$(i)<>""then     ! Nullstrings im Feld löschen
           LET warenzahl=warenzahl+1   ! mitzählen der Zutaten=Warenzahl
           LET einleseware$(warenzahl)=zutatenware$(i)
        END IF
    NEXT i
    LET zutatenzahl=warenzahl     ! Zutatenzahl merken
    DO
       READ wegdamit$             ! Restdatas der Gerichte weglesen 
    LOOP until wegdamit$="*"      ! Anfang der Warenliste
    DO
       LET warenzahl=warenzahl+1  ! weiterzählen der Warenzahl
       READ einleseware$(warenzahl)    ! Warendatas
       FOR i=1 to zutatenzahl     ! Vergleich, ob bereits als Zutat vorhanden ?
           IF einleseware$(warenzahl)=einleseware$(i) then LET warenzahl=warenzahl-1     ! wenn ja: weg !
       NEXT i
    LOOP until einleseware$(warenzahl)="#"  ! Datas zu Ende
    FOR i=1 to zutatenzahl
        LET einleseware$(i)="-"&einleseware$(i)  ! als Zutaten kennzeichnen
    NEXT i
END SUB

SUB wareeinlesen                  ! Waren in Vorschlagszeile anzeigen
    IF hand=1 then LET vorschlagszaehler=vorschlagszaehler-1    ! nach Handeintrag einen Vorschlag zurÜck
    LET hand=0
    SET color 1
    BOX AREA 1,299,179,197        ! Vorschlagszeile weiß
    LET vorschlagszaehler=vorschlagszaehler+1    ! Vorschlagszähler
    IF vorschlagszaehler>warenzahl then LET vorschlagszaehler=warenzahl   ! Nicht Über die Gesamtmenge hinaus
    LET anzeigeware$=einleseware$(vorschlagszaehler)  ! anzeigeware$=Einlesevariable fÜr Waren
    IF anzeigeware$="#" then      ! Wenn letzte Ware aus der Liste
       LET anzeigeware$="- - - - -"    ! das "#" löschen
       CALL zetteltext("vorschlagsende")
       CALL feldertext("ok")
       EXIT SUB
    END IF
    SET color 3
    CALL zentrieren(anzeigeware$,150,185)   ! Ware in rot ausgeben
END SUB

SUB wareeintragen
    IF vorschlagszaehler=warenzahl and anzeigeware$="- - - - -" then EXIT SUB  ! Wenn Einleseschluß u. kein Handeintrag
    LET warenzaehler=warenzaehler+1    ! Waren bis max. 108 mitzählen
    IF anzeigeware$="- - - - -" then   ! wenn Handeintrag nur RETURN
       LET anzeigeware$=""
       LET warenzaehler=warenzaehler-1
       CALL wareeinlesen
       EXIT SUB
    END IF
    IF warenzaehler>108 then      ! Wenn drei Seiten voll
       CALL zetteltext("einkaufszettelvoll")     ! Information darÜber
       CALL feldertext("ok")
       EXIT SUB
    END IF
    LET ware$(warenzaehler)=anzeigeware$    ! Ware auf Zettel Übernehmen
    IF warenzaehler<=36 then      ! Wenn Seite 1 noch nicht voll
       CALL zetteltext("einkaufszettel1")   ! dann Seite 1 zeigen
       LET ez=1                   ! Flag fÜr Seite 1 setzen
    ELSEIF warenzaehler<=72 then  ! Wenn Seite 2 noch nicht voll
       CALL zetteltext("einkaufszettel2")   ! dann Seite 2 zeigen
       LET ez=2                   ! Flag fÜr Seite 2 setzen
    ELSEIF warenzaehler<=108 then      ! Wenn Seite 3 noch nicht voll
       CALL zetteltext("einkaufszettel3")   ! dann Seite 3 zeigen
       LET ez=3                   ! Flag fÜr Seite 3 setzen
    END IF
    IF vorschlagszaehler<>warenzahl then CALL wareeinlesen
END SUB

SUB drucker
    CALL zetteltext("wartendruck")     ! Info
    CALL feldertext("byebye")     ! keine Felder
    CALL druckformat              ! Formatiert drucken
    LET druck,gedruckt=1          ! merken, daß gedruckt
    CALL zetteltext("druckfertig")     ! Info
    CALL feldertext("ausgabe")    ! Felder wiederzeigen
END SUB

SUB druckformat
    PRINT #1: repeat$("*",60)
    PRINT #1: "* Ö-K-O V0.9            KÜCHENZETTEL            ";date$[7:8];".";date$[5:6];".";date$[1:4];" *"
    PRINT #1: repeat$("*",60)
    PRINT #1:
    PRINT #1: "     SAMSTAG    :   ";gericht$(1)
    PRINT #1:
    PRINT #1: "     SONNTAG    :   ";gericht$(2)
    PRINT #1:
    PRINT #1: "     MONTAG     :   ";gericht$(3)
    PRINT #1:
    PRINT #1: "     DIENSTAG   :   ";gericht$(4)
    PRINT #1:
    PRINT #1: "     MITTWOCH   :   ";gericht$(5)
    PRINT #1:
    PRINT #1: "     DONNERSTAG :   ";gericht$(6)
    PRINT #1:
    PRINT #1: "     FREITAG    :   ";gericht$(7)
    PRINT #1:
    PRINT #1:
    PRINT #1:
    PRINT #1: repeat$("*",60)
    PRINT #1: "* Ö-K-O V0.9           EINKAUFSZETTEL           ";date$[7:8];".";date$[5:6];".";date$[1:4];" *"
    PRINT #1: repeat$("*",60)
    PRINT #1:
    IF warenzaehler>108 then LET warenzaehler=108
    IF warenzaehler/3<>int(warenzaehler/3) then  ! Warenzahl durch 3 teilbar ?
       DO until warenzaehler/3=int(warenzaehler/3)    ! erhöhen, bis durch 3 teilbar
          LET WARENZAEHLER=WARENZAEHLER+1   ! fÜr 3-spaltigen Ausdruck
       LOOP
    END IF
    FOR i=1 to warenzaehler/3     ! Dreispaltige Ausgabe 
        PRINT #1: " ";ware$(i)&repeat$(" ",20-len(ware$(i)))&ware$(warenzaehler/3+i)&repeat$(" ",20-len(ware$(warenzaehler/3+i)))&ware$((warenzaehler/3)*2+i)&repeat$(" ",20-len(ware$((warenzaehler/3)*2+i)))
    NEXT i
END SUB
!--------------------- Textzuweisungen fÜr Zettel -------------------------

SUB oeko
    LET ztext$(4)="Ö - K - O"
    LET ztext$(7)="***********************************"
    LET ztext$(9)="ÖTTI`S KÜCHEN-ORDNUNG"
    LET ztext$(11)="***********************************"
    LET ztext$(14)="V 0.9"
    LET ztext$(16)="1989 N.Ellert, 3208 Giesen"
    LET textfarbe(4)=4
    LET textfarbe(9)=9
END SUB

SUB entstehung
    LET ztext$(2)="Ö - K - O"
    LET ztext$(3)="------------------------------------"
    LET ztext$(4)="ÖTTI`S KÜCHEN-ORDNUNG"
    LET ztext$(6)="ist ein Programm, das ich schrieb,"
    LET ztext$(7)="weil Ötti freitags immer fragte :"
    LET ztext$(9)="Was soll ich nächste Woche kochen ?"
    LET ztext$(11)="Dann beschäftigte sie die Frage :"
    LET ztext$(13)="Was muß ich dafÜr einkaufen ?"
    LET ztext$(15)="Beide Fragen beantwortet nun Ö-K-O !"
    LET ztext$(16)="Interaktiv wird ein KÜchenzettel"
    LET ztext$(17)="und der passende Einkaufszettel"
    LET ztext$(18)="erstellt und gedruckt!"
    LET textfarbe(4)=4
    LET textfarbe(9)=9
    LET textfarbe(13)=13
END SUB

SUB koennen
    LET ztext$(2)="Ö - K - O"
    LET ztext$(3)="------------------------------------"
    LET ztext$(5)="ÖTTI`S KÜCHEN-ORDNUNG"
    LET ztext$(7)="kennt 60 Gerichte mit jeweils bis"
    LET ztext$(8)="zu 7 Zutaten. Aus diesen Gerichten"
    LET ztext$(9)="können fÜr eine Woche 7 Gerichte"
    LET ztext$(10)="ausgewählt werden."
    LET ztext$(12)="FÜr den Einkaufszettel sind bis"
    LET ztext$(13)="zu 108 Einträge möglich. DafÜr"
    LET ztext$(14)="schlägt Ö-K-O zuerst die Zutaten"
    LET ztext$(15)="der ausgewählten Gerichte und"
    LET ztext$(16)="dann Über 120 weitere Waren ohne"
    LET ztext$(17)="Doppelnennungen zum Einkauf vor !"
    LET textfarbe(5)=5
END SUB

SUB bedienungallgemein
    LET ztext$(1)="Ö - K - O"
    LET ztext$(2)="-------------"
    LET ztext$(3)="macht im ersten Feld links oben"
    LET ztext$(4)="Gericht- oder Einkaufsvorschläge,"
    LET ztext$(5)="die durch Anklicken eines Feldes"
    LET ztext$(6)="Übernommen oder abgewählt werden."
    LET ztext$(7)="Zutaten gewählter Gerichte werden"
    LET ztext$(8)="bei den Einkaufsvorschlägen berÜck-"
    LET ztext$(9)="sichtigt. Handeinträge und das Aus-"
    LET ztext$(10)="tauschen von Tagen sind möglich."
    LET ztext$(12)="Am Schluß wird der KÜchenzettel und"
    LET ztext$(13)="der Einkaufszettel ausgedruckt."
    LET ztext$(15)="Zu jeder Zeit können weitere"
    LET ztext$(16)="Informationen abgerufen werden."
    LET ztext$(17)="Bei Fehlern erscheinen Benutzer-"
    LET ztext$(18)="hinweise auf dem Zettel."
    LET textfarbe(1)=1
    LET textfarbe(4)=4
END SUB

SUB bedienungkuechenzettel
    LET ztext$(1)="INFO ZUR KÜCHENZETTELERSTELLUNG"
    LET ztext$(2)="-----------------------------------"
    LET ztext$(3)="Oberstes Feld:"
    LET ztext$(4)="Vorschlags- und Hinweiszeile"
    LET ztext$(5)="GERICHT EINTRAGEN:"
    LET ztext$(6)="Vorschlag auf den Zettel Übernehmen"
    LET ztext$(7)="NEUER VORSCHLAG:"
    LET ztext$(8)="Nächsten Gerichtvorschlag anzeigen"
    LET ztext$(9)="EINTRAG PER HAND:"
    LET ztext$(10)="Gericht per Hand eingeben/löschen"
    LET ztext$(11)="TAGE TAUSCHEN:"
    LET ztext$(12)="Gerichte auf dem Zettel vertauschen"
    LET ztext$(13)="INFO ZUR ... :"
    LET ztext$(14)="Infos zum jeweiligen Programmteil"
    LET ztext$(15)="KÜCHENZETTEL FERTIG:"
    LET ztext$(16)="Wechsel zur Einkaufszettelerstellung"
    LET ztext$(17)="Wochentagsleiste:"
    LET ztext$(18)="Auswahl des Tages fÜr Gerichteintrag"
    LET ztext$(19)="* * *"
    LET textfarbe(3)=3
    LET textfarbe(5)=5
    LET textfarbe(7)=7
    LET textfarbe(9)=9
    LET textfarbe(11)=11
    LET textfarbe(13)=13
    LET textfarbe(15)=15
    LET textfarbe(17)=17
END SUB

SUB kuechenzettel
    LET ztext$(2)="----------- KÜCHENZETTEL -----------"
    LET ztext$(4)="SAMSTAG:"
    LET ztext$(5)=gericht$(1)
    LET ztext$(6)="SONNTAG"
    LET ztext$(7)=gericht$(2)
    LET ztext$(8)="MONTAG:"
    LET ztext$(9)=gericht$(3)
    LET ztext$(10)="DIENSTAG:"
    LET ztext$(11)=gericht$(4)
    LET ztext$(12)="MITTWOCH:"
    LET ztext$(13)=gericht$(5)
    LET ztext$(14)="DONNERSTAG:"
    LET ztext$(15)=gericht$(6)
    LET ztext$(16)="FREITAG:"
    LET ztext$(17)=gericht$(7)
    LET ztext$(19)="------------------------------------"
    LET textfarbe(4)=4
    LET textfarbe(6)=6
    LET textfarbe(8)=8
    LET textfarbe(10)=10
    LET textfarbe(12)=12
    LET textfarbe(14)=14
    LET textfarbe(16)=16
END SUB

SUB listevonvorn
    LET ztext$(5)="Die Vorschlagsliste enthält"
    LET ztext$(7)="keine weiteren Einträge"
    LET ztext$(9)="und beginnt jetzt von vorn !"
    LET ztext$(11)="Dazu bitte"
    LET ztext$(13)="<NEUER VORSCHLAG>"
    LET ztext$(15)="anklicken !"
    LET textfarbe(7)=7
    LET textfarbe(13)=13
END SUB

SUB belegtertag
    LET ztext$(2)="FÜr"
    IF tag=1 then LET ztext$(4)="Samstag"
    IF tag=2 then LET ztext$(4)="Sonntag"
    IF tag=3 then LET ztext$(4)="Montag"
    IF tag=4 then LET ztext$(4)="Dienstag"
    IF tag=5 then LET ztext$(4)="Mittwoch"
    IF tag=6 then LET ztext$(4)="Donnerstag"
    IF tag=7 then LET ztext$(4)="Freitag"
    LET ztext$(6)="wurde bereits ein Eintrag gemacht !"
    LET ztext$(8)="Wenn dieser Überschrieben werden"
    LET ztext$(10)="soll, zur Bestätigung nochmals"
    LET ztext$(12)="auf <GERICHT EINTRAGEN> klicken."
    LET ztext$(14)="Sonst bitte einen"
    LET ztext$(16)="anderen Wochentag"
    LET ztext$(18)="wählen !"
    LET textfarbe(4)=4
    LET textfarbe(16)=16
END SUB

SUB handeintrag
    LET ztext$(1)="WICHTIGE HINWEISE"
    LET ztext$(2)="------------------------------------"
    LET ztext$(3)="Jetzt ist die Eingabe eines Gerichts"
    LET ztext$(4)="mit höchstens 35 Zeichen möglich."
    LET ztext$(5)="FÜr Ü,ö,ä,ß nur ue,oe,ae,ss benutzen."
    LET ztext$(6)="Falsche Eingaben können durch"
    LET ztext$(7)="<BACKSPACE>"
    LET ztext$(8)="wieder gelöscht werden. Abschließend"
    LET ztext$(9)="<RETURN>"
    LET ztext$(10)="drÜcken. Nur <RETURN> löscht die"
    LET ztext$(11)="Vorschlagszeile. Danach ist die"
    LET ztext$(12)="Übernahme des Eintrags oder der"
    LET ztext$(13)="Löschung auf den KÜchenzettel mit"
    LET ztext$(14)="<GERICHT EINTRAGEN>"
    LET ztext$(15)="möglich. ACHTUNG: Bei Handeinträgen"
    LET ztext$(16)="kennt ÖKO keine Zutaten und kann"
    LET ztext$(17)="diese fÜr den Einkaufszettel auch"
    LET ztext$(18)="nicht vorschlagen !!!"
    LET ztext$(19)="------------------------------------"
    LET textfarbe(1)=1
    LET textfarbe(7)=7
    LET textfarbe(9)=9
    LET textfarbe(14)=14
END SUB

SUB handeintrageinkauf
    LET ztext$(2)="HINWEIS"
    LET ztext$(3)="------------------------------------"
    LET ztext$(5)="Jetzt ist die Eingabe einer Ware"
    LET ztext$(6)="mit höchstens 18 Zeichen möglich."
    LET ztext$(8)="FÜr Ü,ö,ä,ß nur ue,oe,ae,ss benutzen."
    LET ztext$(10)="Falsche Eingaben können durch"
    LET ztext$(11)="<BACKSPACE>"
    LET ztext$(12)="wieder gelöscht werden."
    LET ztext$(14)="Nach Eingabeschluß bitte"
    LET ztext$(15)="<RETURN>"
    LET ztext$(16)="drÜcken. Nur <RETURN> fÜhrt zum"
    LET ztext$(17)="Einkaufszettel zurÜck !"
    LET textfarbe(2)=2
    LET textfarbe(11)=11
    LET textfarbe(15)=15
END SUB

SUB tauschinfo
    LET ztext$(1)="TAGE TAUSCHEN"
    LET ztext$(2)="------------------------------------"
    LET ztext$(3)="ermöglicht es, die Gerichte von zwei"
    LET ztext$(4)="Tagen auf dem Zettel zu vertauschen."
    LET ztext$(6)="Die Bedienung ist folgende :"
    LET ztext$(8)="Ersten Tag anklicken"
    LET ztext$(9)="<Bestätigung> anklicken"
    LET ztext$(10)="Zweiten Tag anklicken"
    LET ztext$(11)="<Bestätigung> anklicken"
    LET ztext$(13)="Um den Tausch vornehmen zu können"
    LET ztext$(14)="muß nach diesem Hinweis nochmals"
    LET ztext$(16)="<TAGE TAUSCHEN>"
    LET ztext$(18)="angeklickt werden !"
    LET ztext$(19)="------------------------------------"
    LET textfarbe(1)=1
    LET textfarbe(16)=16
END SUB

SUB bedienungeinkaufszettel
    LET ztext$(1)="INFO ZUR EINKAUFSZETTELERSTELLUNG"
    LET ztext$(2)="-----------------------------------"
    LET ztext$(3)="Oberstes Feld:"
    LET ztext$(4)="Vorschlagszeile (Zutaten gewählter"
    LET ztext$(5)="Gerichte sind mit - gekennzeichnet)"
    LET ztext$(6)="WARE EINTRAGEN:"
    LET ztext$(7)="Vorschlag Übernehmen (max. 108 mal)"
    LET ztext$(8)="NÄCHSTE WARE:"
    LET ztext$(9)="Nächsten Warenvorschlag anzeigen"
    LET ztext$(10)="EINTRAG PER HAND:"
    LET ztext$(11)="Ware / Kommentar per Hand eingeben"
    LET ztext$(12)="WEITERE ZETTELSEITE ZEIGEN:"
    LET ztext$(13)="Die drei Zettelseiten durchblättern"
    LET ztext$(14)="INFO ZUR ... :"
    LET ztext$(15)="Infos zum jeweiligen Programmteil"
    LET ztext$(16)="EINKAUFSZETTEL FERTIG:"
    LET ztext$(17)="Wechsel zu Druckerausgabe,"
    LET ztext$(18)="Neustart und Ende"
    LET ztext$(19)="* * *"
    LET textfarbe(3)=3
    LET textfarbe(6)=6
    LET textfarbe(8)=8
    LET textfarbe(10)=10
    LET textfarbe(12)=12
    LET textfarbe(14)=14
    LET textfarbe(16)=16
END SUB

SUB einkaufszettel1               ! Ausgabe in zwei Reihen
    LET ztext$(1)="------ EINKAUFSZETTEL Seite 1 ------"
    LET ztext$(2)=ware$(1)&repeat$(" ",19-len(ware$(1)))&ware$(19)&repeat$(" ",18-len(ware$(19)))
    LET ztext$(3)=ware$(2)&repeat$(" ",19-len(ware$(2)))&ware$(20)&repeat$(" ",18-len(ware$(20)))
    LET ztext$(4)=ware$(3)&repeat$(" ",19-len(ware$(3)))&ware$(21)&repeat$(" ",18-len(ware$(21)))
    LET ztext$(5)=ware$(4)&repeat$(" ",19-len(ware$(4)))&ware$(22)&repeat$(" ",18-len(ware$(22)))
    LET ztext$(6)=ware$(5)&repeat$(" ",19-len(ware$(5)))&ware$(23)&repeat$(" ",18-len(ware$(23)))
    LET ztext$(7)=ware$(6)&repeat$(" ",19-len(ware$(6)))&ware$(24)&repeat$(" ",18-len(ware$(24)))
    LET ztext$(8)=ware$(7)&repeat$(" ",19-len(ware$(7)))&ware$(25)&repeat$(" ",18-len(ware$(25)))
    LET ztext$(9)=ware$(8)&repeat$(" ",19-len(ware$(8)))&ware$(26)&repeat$(" ",18-len(ware$(26)))
    LET ztext$(10)=ware$(9)&repeat$(" ",19-len(ware$(9)))&ware$(27)&repeat$(" ",18-len(ware$(27)))
    LET ztext$(11)=ware$(10)&repeat$(" ",19-len(ware$(10)))&ware$(28)&repeat$(" ",18-len(ware$(28)))
    LET ztext$(12)=ware$(11)&repeat$(" ",19-len(ware$(11)))&ware$(29)&repeat$(" ",18-len(ware$(29)))
    LET ztext$(13)=ware$(12)&repeat$(" ",19-len(ware$(12)))&ware$(30)&repeat$(" ",18-len(ware$(30)))
    LET ztext$(14)=ware$(13)&repeat$(" ",19-len(ware$(13)))&ware$(31)&repeat$(" ",18-len(ware$(31)))
    LET ztext$(15)=ware$(14)&repeat$(" ",19-len(ware$(14)))&ware$(32)&repeat$(" ",18-len(ware$(32)))
    LET ztext$(16)=ware$(15)&repeat$(" ",19-len(ware$(15)))&ware$(33)&repeat$(" ",18-len(ware$(33)))
    LET ztext$(17)=ware$(16)&repeat$(" ",19-len(ware$(16)))&ware$(34)&repeat$(" ",18-len(ware$(34)))
    LET ztext$(18)=ware$(17)&repeat$(" ",19-len(ware$(17)))&ware$(35)&repeat$(" ",18-len(ware$(35)))
    LET ztext$(19)=ware$(18)&repeat$(" ",19-len(ware$(18)))&ware$(36)&repeat$(" ",18-len(ware$(36)))
    LET textfarbe(1)=1
END SUB

SUB einkaufszettel2               ! Ausgabe in zwei Reihen
    LET ztext$(1)="------ EINKAUFSZETTEL Seite 2 ------"
    LET ztext$(2)=ware$(37)&repeat$(" ",19-len(ware$(37)))&ware$(55)&repeat$(" ",18-len(ware$(55)))
    LET ztext$(3)=ware$(38)&repeat$(" ",19-len(ware$(38)))&ware$(56)&repeat$(" ",18-len(ware$(56)))
    LET ztext$(4)=ware$(39)&repeat$(" ",19-len(ware$(39)))&ware$(57)&repeat$(" ",18-len(ware$(57)))
    LET ztext$(5)=ware$(40)&repeat$(" ",19-len(ware$(40)))&ware$(58)&repeat$(" ",18-len(ware$(58)))
    LET ztext$(6)=ware$(41)&repeat$(" ",19-len(ware$(41)))&ware$(59)&repeat$(" ",18-len(ware$(59)))
    LET ztext$(7)=ware$(42)&repeat$(" ",19-len(ware$(42)))&ware$(60)&repeat$(" ",18-len(ware$(60)))
    LET ztext$(8)=ware$(43)&repeat$(" ",19-len(ware$(43)))&ware$(61)&repeat$(" ",18-len(ware$(61)))
    LET ztext$(9)=ware$(44)&repeat$(" ",19-len(ware$(44)))&ware$(62)&repeat$(" ",18-len(ware$(62)))
    LET ztext$(10)=ware$(45)&repeat$(" ",19-len(ware$(45)))&ware$(63)&repeat$(" ",18-len(ware$(63)))
    LET ztext$(11)=ware$(46)&repeat$(" ",19-len(ware$(46)))&ware$(64)&repeat$(" ",18-len(ware$(64)))
    LET ztext$(12)=ware$(47)&repeat$(" ",19-len(ware$(47)))&ware$(65)&repeat$(" ",18-len(ware$(65)))
    LET ztext$(13)=ware$(48)&repeat$(" ",19-len(ware$(48)))&ware$(66)&repeat$(" ",18-len(ware$(66)))
    LET ztext$(14)=ware$(49)&repeat$(" ",19-len(ware$(49)))&ware$(67)&repeat$(" ",18-len(ware$(67)))
    LET ztext$(15)=ware$(50)&repeat$(" ",19-len(ware$(50)))&ware$(68)&repeat$(" ",18-len(ware$(68)))
    LET ztext$(16)=ware$(51)&repeat$(" ",19-len(ware$(51)))&ware$(69)&repeat$(" ",18-len(ware$(69)))
    LET ztext$(17)=ware$(52)&repeat$(" ",19-len(ware$(52)))&ware$(70)&repeat$(" ",18-len(ware$(70)))
    LET ztext$(18)=ware$(53)&repeat$(" ",19-len(ware$(53)))&ware$(71)&repeat$(" ",18-len(ware$(71)))
    LET ztext$(19)=ware$(54)&repeat$(" ",19-len(ware$(54)))&ware$(72)&repeat$(" ",18-len(ware$(72)))
    LET textfarbe(1)=1
END SUB

SUB einkaufszettel3               ! Ausgabe in zwei Reihen
    LET ztext$(1)="------ EINKAUFSZETTEL Seite 3 ------"
    LET ztext$(2)=ware$(73)&repeat$(" ",19-len(ware$(73)))&ware$(91)&repeat$(" ",18-len(ware$(91)))
    LET ztext$(3)=ware$(74)&repeat$(" ",19-len(ware$(74)))&ware$(92)&repeat$(" ",18-len(ware$(92)))
    LET ztext$(4)=ware$(75)&repeat$(" ",19-len(ware$(75)))&ware$(93)&repeat$(" ",18-len(ware$(93)))
    LET ztext$(5)=ware$(76)&repeat$(" ",19-len(ware$(76)))&ware$(94)&repeat$(" ",18-len(ware$(94)))
    LET ztext$(6)=ware$(77)&repeat$(" ",19-len(ware$(77)))&ware$(95)&repeat$(" ",18-len(ware$(95)))
    LET ztext$(7)=ware$(78)&repeat$(" ",19-len(ware$(78)))&ware$(96)&repeat$(" ",18-len(ware$(96)))
    LET ztext$(8)=ware$(79)&repeat$(" ",19-len(ware$(79)))&ware$(97)&repeat$(" ",18-len(ware$(97)))
    LET ztext$(9)=ware$(80)&repeat$(" ",19-len(ware$(80)))&ware$(98)&repeat$(" ",18-len(ware$(98)))
    LET ztext$(10)=ware$(81)&repeat$(" ",19-len(ware$(81)))&ware$(99)&repeat$(" ",18-len(ware$(99)))
    LET ztext$(11)=ware$(82)&repeat$(" ",19-len(ware$(82)))&ware$(100)&repeat$(" ",18-len(ware$(100)))
    LET ztext$(12)=ware$(83)&repeat$(" ",19-len(ware$(83)))&ware$(101)&repeat$(" ",18-len(ware$(101)))
    LET ztext$(13)=ware$(84)&repeat$(" ",19-len(ware$(84)))&ware$(102)&repeat$(" ",18-len(ware$(102)))
    LET ztext$(14)=ware$(85)&repeat$(" ",19-len(ware$(85)))&ware$(103)&repeat$(" ",18-len(ware$(103)))
    LET ztext$(15)=ware$(86)&repeat$(" ",19-len(ware$(86)))&ware$(104)&repeat$(" ",18-len(ware$(104)))
    LET ztext$(16)=ware$(87)&repeat$(" ",19-len(ware$(87)))&ware$(105)&repeat$(" ",18-len(ware$(105)))
    LET ztext$(17)=ware$(88)&repeat$(" ",19-len(ware$(88)))&ware$(106)&repeat$(" ",18-len(ware$(106)))
    LET ztext$(18)=ware$(89)&repeat$(" ",19-len(ware$(89)))&ware$(107)&repeat$(" ",18-len(ware$(107)))
    LET ztext$(19)=ware$(90)&repeat$(" ",19-len(ware$(90)))&ware$(108)&repeat$(" ",18-len(ware$(108)))
    LET textfarbe(1)=1
END SUB

SUB einkaufszettelvoll
    LET ztext$(2)="Alle drei Seiten des"
    LET ztext$(3)="Einkaufszettels sind mit"
    LET ztext$(4)="108 Einkaufswaren gefÜllt !"
    LET ztext$(6)="Jetzt bitte erst ausdrucken mit"
    LET ztext$(8)="<EINKAUFSZETTEL FERTIG>"
    LET ztext$(10)="<DRUCKEN>"
    LET ztext$(12)="Danach weitere Einkaufszettel"
    LET ztext$(13)="wenn erforderlich mit"
    LET ztext$(15)="<NEUSTART>"
    LET ztext$(17)="erstellen."
    LET textfarbe(8)=8
    LET textfarbe(10)=10
    LET textfarbe(15)=15
END SUB

SUB vorschlagsende
    LET ztext$(5)="Die Liste der"
    LET ztext$(7)="Warenvorschläge"
    LET ztext$(9)="ist erschöpft !"
    LET ztext$(12)="Jetzt sind nur noch"
    LET ztext$(14)="Einträge per Hand"
    LET ztext$(16)="möglich."
    LET textfarbe(14)=14
END SUB

SUB druckervorbereiten
    LET ztext$(1)="WICHTIG !"
    LET ztext$(2)="-----------------------------------"
    LET ztext$(4)="Jetzt können KÜchen- und Einkaufs-"
    LET ztext$(5)="zettel auf den Drucker ausgegeben"
    LET ztext$(6)="werden."
    LET ztext$(8)="Dazu bitte Papier einlegen, Druck-"
    LET ztext$(9)="qualität und Schriftart wählen und"
    LET ztext$(10)="den Drucker auf"
    LET ztext$(12)="`ON LINE`"
    LET ztext$(14)="schalten ! Dann auf"
    LET ztext$(16)="<ALLE ZETTEL DRUCKEN>"
    LET ztext$(18)="klicken."
    LET textfarbe(1)=1
    LET textfarbe(12)=12
    LET textfarbe(16)=16
END SUB

SUB bedienungausgabe
    LET ztext$(1)="INFORMATION"
    LET ztext$(2)="-----------------------------------"
    LET ztext$(3)="ALLE ZETTEL DRUCKEN:"
    LET ztext$(4)="KÜchen- und Einkaufszettel drucken"
    LET ztext$(6)="ALLE ZETTEL DURCHBLÄTTERN:"
    LET ztext$(7)="KÜchen- und Einkaufszettel werden"
    LET ztext$(8)="nacheinander gezeigt"
    LET ztext$(10)="INFORMATION:"
    LET ztext$(11)="Diese gezeigte Seite"
    LET ztext$(13)="NEUSTART:"
    LET ztext$(14)="Ö-K-O beginnt von vorn"
    LET ztext$(16)="ENDE:"
    LET ztext$(17)="Ö-K-O wird beendet"
    LET ztext$(19)="* * *"
    LET textfarbe(3)=3
    LET textfarbe(6)=6
    LET textfarbe(10)=10
    LET textfarbe(13)=13
    LET textfarbe(16)=16
END SUB

SUB erstdrucken
    LET ztext$(4)="A C H T U N G"
    LET ztext$(5)="*****************"
    LET ztext$(7)="KÜchen- und Einkaufszettel"
    LET ztext$(8)="sind noch nicht ausgedruckt"
    LET ztext$(9)="und bei <NEUSTART> und <ENDE>"
    LET ztext$(10)="verloren !!!"
    LET ztext$(12)="Bitte erst ausdrucken !"
    LET ztext$(14)="Wenn kein Ausdruck gewÜnscht,"
    LET ztext$(15)="dann nochmals auf <NEUSTART>"
    LET ztext$(16)="oder <ENDE> klicken."
    LET textfarbe(4)=4
    LET textfarbe(12)=12
END SUB

SUB wartendruck
    LET ztext$(8)="Moment bitte,"
    LET ztext$(10)="Druckerausgabe"
    LET ztext$(12)="beginnt !"
    LET textfarbe(10)=10
END SUB

SUB druckfertig
    LET ztext$(1)="Druckerausgabe beendet"
    LET ztext$(2)="-----------------------------------"
    LET ztext$(3)="Die Zettel können bei Bedarf noch"
    LET ztext$(4)="mehrmals gedruckt werden. Wieder"
    LET ztext$(5)="Papier einlegen, Druckqualität und"
    LET ztext$(6)="Schriftart wählen und den Drucker"
    LET ztext$(8)="`ON LINE`"
    LET ztext$(10)="schalten ! Dann auf"
    LET ztext$(12)="<ALLE ZETTEL DRUCKEN>"
    LET ztext$(14)="klicken. Sonst bitte"
    LET ztext$(16)="<NEUSTART> oder <ENDE>"
    LET ztext$(18)="wählen."
    LET textfarbe(1)=1
    LET textfarbe(8)=8
    LET textfarbe(12)=12
    LET textfarbe(16)=16
END SUB

SUB byebye
    LET ztext$(7)="Ö-K-O wÜnscht guten Appetit !"
    LET ztext$(11)="Auf Wiedersehen nächste Woche !"
    LET ztext$(18)="1989 N.Ellert, 3208 Giesen"
    LET textfarbe(7)=7
    LET textfarbe(11)=11
END SUB

! ------------------------ Textzuweisungen fÜr Felder --------------------

SUB modimidofrsaso
    LET tagtext$(1)="SA"
    LET tagtext$(2)="SO"
    LET tagtext$(3)="MO"
    LET tagtext$(4)="DI"
    LET tagtext$(5)="MI"
    LET tagtext$(6)="DO"
    LET tagtext$(7)="FR"
END SUB

SUB startinfo
    LET ftext$(3)="START"
    LET ftext$(6)="WARUM GIBT ES Ö-K-O ?"
    LET textfarbe(3)=3
    LET textfarbe(6)=6
END SUB

SUB menueauswahl
    LET ftext$(2)="GERICHT EINTRAGEN"
    LET ftext$(3)="NEUER VORSCHLAG"
    LET ftext$(4)="EINTRAG PER HAND"
    LET ftext$(5)="TAGE TAUSCHEN"
    LET ftext$(6)="INFO ZUR KÜCHENZETTELERSTELLUNG"
    LET ftext$(7)="KÜCHENZETTEL FERTIG"
END SUB

SUB einkaufswahl
    LET ftext$(2)="WARE EINTRAGEN"
    LET ftext$(3)="NÄCHSTE WARE"
    LET ftext$(4)="EINTRAG PER HAND"
    LET ftext$(5)="WEITERE ZETTELSEITE ZEIGEN"
    LET ftext$(7)="INFO ZUR EINKAUFSZETTELERSTELLUNG"
    LET ftext$(8)="EINKAUFSZETTEL FERTIG"
END SUB

SUB zettelschluss
    LET ftext$(5)="WEITERE ZETTELSEITE ZEIGEN"
    LET ftext$(7)="INFO ZUR EINKAUFSZETTELERSTELLUNG"
    LET ftext$(8)="EINKAUFSZETTEL FERTIG"
    LET textfarbe(8)=8
END SUB

SUB tastatur
    IF progteil=0 then            ! KÜchenzettel
       LET ftext$(1)="Bitte Gericht per Tastatur eingeben"
    ELSEIF progteil=1 then        ! Einkaufszettel
       LET ftext$(1)="Bitte Ware per Tastatur eingeben"
    END IF
    LET textfarbe(1)=1
END SUB

SUB tagetauschen
    LET ftext$(1)=""
    LET ftext$(2)="ABBRUCH"
    LET ftext$(5)="BESTÄTIGUNG"
    LET textfarbe(5)=5
END SUB

SUB ausgabe
    LET ftext$(1)="ALLE ZETTEL DRUCKEN"
    LET ftext$(3)="ALLE ZETTEL DURCHBLÄTTERN"
    LET ftext$(5)="INFORMATION"
    LET ftext$(7)="NEUSTART"
    LET ftext$(8)="ENDE"
END SUB

SUB ok
    LET ftext$(1)="OK"
    LET textfarbe(1)=1
END SUB

!------------------------ Hauptprogramm ----------------------------------

CALL programmanfang               ! Initialisierungen
CALL programmhauptteil            ! Hauptschleife
CALL programmschluss              ! Aufräumen
END


