d$="###":d1$="\                            \"  :REM maske fuer textausgabe
REM Etikettdruck fuer Epson 
REM Steuercodes des Druckers
e$=CHR$(27):DIM bit (7,4)                      :REM esc und zahlen
hoch$=e$+"w"+CHR$(1)+CHR$(10)+e$+"A"+CHR$(24)  :REM doppelte hoehe
hochaus$=e$+"w"+CHR$(0)+e$+"A"+CHR$(12)        :REM hochaus
doppel$=e$+"h"+CHR$(1)                         :REM doppelte hoehe und breite
REM liste Ueber Printer Device
nlq$=e$+"x"+CHR$(1)+e$+"G"              :REM nlq + fett
kopf$=e$+"[3m"+"TITEL"+SPACE$(39)+"STARS"+SPACE$(38)+"TON IN          LAUFART         ZEIT    CASS"+e$+"[23m"
fett$=e$+"E"                                   :REM kopf fuer liste
schmal$=CHR$(27)+"[4w":schmalaus$=CHR$(27)+"[3w" :REM Schmalschrift
sch$=CHR$(15):scha$=CHR$(18)
DIM druck$(800)                                :REM 800 filme fuer liste
c$=CHR$(13)+CHR$(13)
DEFINT a-z
lz(0)=240
lz(1)=195
lz(2)=180
lz(3)=120
maxlz=3                                        :REM cassettentypen 0-3
sp$(0)="Single Play "
sp$(1)="Long   Play "
maxsp=1                                        :REM nur singel und long
ton$(0)="Mono         "
ton$(1)="Stereo       "
ton$(2)="Hifi Stereo  "
ton$(3)="Dolby Stereo "
maxton=3                                       :REM 3 tonarten
tonart$(0)=ton$(0):tonart$(1)=ton$(0)
spielart$(0)=sp$(0):spielart$(1)=sp$(0)
DIM text$(10)                                  :REM 10 $ fuer text auf Bildschirm
DIM genr$(20) 
genr$(1)="Abenteuer"
genr$(2)="Action"                  
genr$(3)="Der besondere Film"      
genr$(4)="John Carpenter's Filme"  
genr$(5)="Fantasy"                 
genr$(6)="Horror & Grusel"          
genr$(7)="John Hughes & Brat Pack"  
genr$(8)="Humor - Komödie"        
genr$(9)="James Bond OO7"          
genr$(10)="Karl May"                
genr$(11)="Katastrophen"           
genr$(12)="Krieg"                    
genr$(13)="Kriminalfilm"            
genr$(14)="Monumentalfilm"          
genr$(15)="Musik-Musical-Konzert"  
genr$(16)="Science fiction"        
genr$(17)="Steven Spielberg"       
genr$(18)="Western"                
genr$(0)="Zeichentrick"            
maxgen=18
MENU 1,0,1,"FILM ART"
FOR t=0 TO maxgen
 MENU 1,t+1,1,genr$(t)
 NEXT
MENU 2,0,1,"TON IN"
FOR t=0 TO maxton
 MENU 2,t+1,1,ton$(t)
 NEXT
MENU 3,0,1,"LAUFART"
FOR t=0 TO maxsp
 MENU 3,t+1,1,sp$(t)
 NEXT
MENU 4,0,1,"PROJEKT"
MENU 4,1,1,"Eingeben"
MENU 4,2,1,"Verändern"
MENU 4,3,1,"Liste"
MENU 4,4,1,"Etikett"
MENU 4,5,1,"Suchen"
MENU 4,6,1,"Menu Spalte"
MENU 4,7,1,"Sichern"
MENU 4,8,1,"Löschen"
MENU 4,9,1,"ENDE"
OPEN "video.anz" FOR INPUT AS #2:INPUT #2,maxvideo:CLOSE
OPEN "r",#1,"video.rel",240
FIELD #1,40 AS te$(0),40 AS te$(1),40 AS te$(2),40 AS te$(3),30 AS te$(4),30 AS te$(5),2 AS a$(0),2 AS a$(1),2 AS a$(2),2 AS a$(3),2 AS a$(4),2 AS a$(5),2 AS a$(6),2 AS a$(7),2 AS a$(8),2 AS a$(9)
GOSUB maske
GOSUB maskdruck
GOTO abfrage
END

maske:

  LINE (14,0)-(590,73),2,bf
  FOR t=14 TO 614 STEP 144
   LINE (t,0)-(t+1,73),,bf
   NEXT
  FOR t=0 TO 310 STEP 24
   LINE (14,t)-(614,t+1),,bf
   NEXT
  FOR t=99 TO 614 STEP 257
   LINE (t,73)-(t+1,256),,bf
   NEXT
  LOCATE 2,4:PRINT "EINGEBEN"
  LOCATE 2,22:PRINT "CASS LÖSCHEN"
  LOCATE 2,40:PRINT "LISTE"
  LOCATE 2,58:PRINT "ETIKETT"
  LOCATE 5,4:PRINT "MENUE SPALTE"
  LOCATE 5,22:PRINT "SUCHEN"
  LOCATE 5,40:PRINT "WEITER SUCHEN"
  LOCATE 5,58:PRINT "ENDE"
  LOCATE 8,4:PRINT "CASS NR.:     "
  LOCATE 8,22:PRINT "E- ? :    "
  LOCATE 8,40:PRINT "REST :    "
  LOCATE 12,1
  PRINT "   TITEL";c$
  PRINT "   STARS";c$
  PRINT "   BEMERKUNG";c$
  PRINT "   LAUFZEIT";c$
  PRINT "   FILM ART";c$
  PRINT "   TON IN";c$
  PRINT "   SP / LP";
  RETURN

maskdruck:

  FOR z=0 TO 1:
   tonart$(z)=ton$(t(4+z))
   spielart$(z)=sp$(t(2+z))
   genere$(z)=genr$(t(8+z))
   NEXT
  t(0)=lz(t(1))-(t(6)/(t(2)+1))-(t(7)/(t(3)+1))
  IF t(0)<0 THEN y=6:GOSUB aendern:GOTO maskdruck
   LOCATE 8,58:PRINT "STATUS  :"
   LOCATE 8,58:PRINT sicher$
   LOCATE 5,19:PRINT USING "#";x1+1
   LOCATE 8,14:PRINT USING "####";num
   LOCATE 8,29:PRINT USING d$;lz(t(1))
   LOCATE 8,47:PRINT USING d$;t(0)
   LOCATE 21,15:PRINT USING d$;t(6);:PRINT " Minuten"
   LOCATE 21,47:PRINT USING d$;t(7);:PRINT " Minuten"
   LOCATE 24,15:PRINT USING d1$;genere$(0)
   LOCATE 24,47:PRINT USING d1$;genere$(1)
   LOCATE 27,15:PRINT tonart$(0)
   LOCATE 27,47:PRINT tonart$(1)
   LOCATE 30,15:PRINT spielart$(0);
   LOCATE 30,47:PRINT spielart$(1);
   FOR t=0 TO 5 STEP 2
    LOCATE 12+t/2*3,15:PRINT USING d1$;text$(t)
    LOCATE 12+t/2*3,47:PRINT USING d1$;text$(t+1)
    NEXT
   RETURN

abfrage:

  wert=MOUSE (0)
  z$=INKEY$
  IF z$="+" THEN GOSUB auf
   IF z$="-" THEN GOSUB ab
    LOCATE 5,66:PRINT TIME$
    men=MENU(0)
    IF wert<>0 THEN
     x&=MOUSE (3)
     y&=MOUSE (4)
     y=(y&-12)/24
     x=(x&-84)/143
     x1=x&/715
     IF x<0 OR x1<0 THEN GOTO abfrage
      IF y=0 THEN ON x+1 GOSUB eingeben,loeschen,liste,etikett
       IF y=1 THEN ON x+1 GOSUB seite,suchen,wsuch,ende
        IF y=2 THEN ON x+1 GOSUB num,zeit,nichts,ok
         IF y>2 THEN GOSUB aendern
          GOSUB maskdruck
          ELSE 
          IF men>0 THEN 
           men1=MENU(1)-1
           IF men<4 THEN sicher$="UNGESICHERT"
            IF men=1 THEN t(8+x1)=men1
             IF men=2 THEN t(4+x1)=men1
              IF men=3 THEN t(2+x1)=men1
               IF men=4 THEN ON men1+1 GOSUB eingeben,veraendern,liste,etikett,suchen,seite,ok,loeschen,ende
                GOSUB maskdruck
                END IF
               END IF
              wert=MOUSE (0)
              GOTO abfrage

seite:

  IF flag=0 THEN 
   flag=1
   ELSE 
   flag=0
   END IF
  x1=flag
  RETURN

nichts:

  RETURN 

ende:

  OPEN "video.anz" FOR OUTPUT AS #2:PRINT #2,maxvideo:CLOSE
  CLOSE
  END

zeit:

  t(1)=t(1)+1
  IF t(1)>maxlz THEN t(1)=0
   laufzeit=lz(t(1))
   RETURN

aendern:

  sicher$="UNGESICHERT"
  IF y=9 THEN
   t(2+x1)=t(2+x1)+1
   IF t(2+x1)>maxsp THEN t(2+x1)=0
    END IF
   IF y=8 THEN
    t(4+x1)=t(4+x1)+1
    IF t(4+x1)>maxton THEN t(4+x1)=0
     END IF   
    IF y=7 THEN
     t(8+x1)=t(8+x1)+1
     IF t(8+x1)>maxgen THEN t(8+x1)=0
      END IF   
     IF y>2 AND y<7 THEN
      IF x1=0 THEN 
       spalte=15
       ELSE 
       spalte=47
       END IF
      zeile=y*3+3:anz=29
      IF y=6 THEN anz=3 
       IF y>2 AND y<5 THEN anz=40
        GOSUB text
        text$((y-3)*2+x1)=text$
        IF y=6 THEN 
         t(6+x1)=VAL(text$((y-3)*2+x1))   
         END IF
        END IF
       RETURN

text:

  text$="":z$=""
  WHILE NOT (LEN(text$)>=anz OR z$=CHR$(13))
  LOCATE zeile,spalte 
  PRINT RIGHT$(text$,27);"_ "
  z$=INKEY$  
  IF z$>CHR$(13) THEN text$=text$+z$
   IF z$=CHR$(8) AND LEN(text$)>0 THEN text$=LEFT$(text$,LEN(text$)-1)
   WEND  
   SOUND 1000,10,100,1
   RETURN

num:

  zeile=8:spalte=14:anz=4
  GOSUB text:num=VAL(text$)
  IF num=0 THEN GOTO num
   sicher$="GESICHERT  "

num1:

  IF num=0 THEN RETURN
   GET#1,num
   FOR z=0 TO 9
    text$(z)=te$(z)
    t(z)=CVI(a$(z))
    NEXT
   IF num>maxvideo THEN

num2:

  sicher$="NEU        "
  FOR z=0 TO 9
   text$(z)=""
   t(z)=0
   NEXT
  END IF
 RETURN

ok:

  IF num>maxvideo THEN maxvideo=maxvideo+1:num=maxvideo
   IF num=0 THEN BEEP:RETURN
    sicher$="GESICHERT  "
    FOR z=0 TO 9
     LSET te$(z)=text$(z)
     LSET a$(z)=MKI$(t(z))
     NEXT
    PUT #1,num
    RETURN

eingeben:

  num=maxvideo+1
  GOSUB loeschen
  GOSUB maskdruck
  FOR x1=0 TO 1
   FOR y=3 TO 6
    GOSUB aendern
    WHILE NOT z$="":z$=INKEY$:WEND
    NEXT
   NEXT  
  RETURN

loeschen:

  sicher$="UNGESICHERT"
  GOTO num2

auf:

  IF num>=maxvideo THEN RETURN
   num=num+1
   GOSUB num1
   GOTO maskdruck

ab:

  IF num<2 THEN RETURN
   num=num-1
   GOSUB num1
   GOTO maskdruck

suchen:

  zeile=12:spalte=15:anz=29
  GOSUB text:such=0
  suchtext$=UCASE$(text$)

wsuch:

  such=such+1
  FOR such=such TO maxvideo
   GET#1,such
   a$=te$(0)+te$(1)+te$(2)+te$(3)+te$(4)+te$(5)
   a$=UCASE$(a$)
   IF INSTR(a$,suchtext$)>0 THEN num=such:GOTO num1
    NEXT:BEEP:sicher$="DATENENDE"    
   RETURN
   liste:      :REM Daten fuer Druck aufbereiten
   dru=0
   FOR num=1 TO maxvideo
    GOSUB num1
    FOR p=0 TO 1
     druck$(dru)=SPACE$(3-LEN(STR$(t(8+p))))+STR$(t(8+p))
     druck$(dru)=druck$(dru)+SPACE$(44-LEN(text$(p)))+text$(p)
     druck$(dru)=druck$(dru)+SPACE$(44-LEN(text$(p+2)))+text$(p+2)
     druck$(dru)=druck$(dru)+"   "+ton$(t(4+p))+"   "+sp$(t(2+p))
     druck$(dru)=druck$(dru)+SPACE$(8-LEN(STR$(t(6+p))))+STR$(t(6+p))
     druck$(dru)=druck$(dru)+SPACE$(8-LEN(STR$(num)))+STR$(num)
     IF text$(p)<>"" THEN dru=dru+1
      NEXT
     NEXT
    sort:        :REM Daten sortieren
    sort=0
    FOR num=0 TO dru-2
     IF druck$(num)>druck$(num+1) THEN 
      SWAP druck$(num),druck$(num+1)
      sort=1
      END IF
     NEXT
    IF sort=1 THEN GOTO sort
     OPEN "prt:" FOR OUTPUT AS #3      :REM Daten Drucken
     oldgenere=-1
     FOR num=0 TO dru-1
      genere$=LEFT$(druck$(num),3)
      genere=VAL(genere$)
      druck$(num)=RIGHT$(druck$(num),131)
      IF genere<>oldgenere THEN 
       PRINT #3,""
       PRINT #3,schmalaus$;genr$(genere)
       PRINT #3,schmal$
       PRINT #3,kopf$
       PRINT #3,""
       oldgenere=genere
       END IF  
      PRINT #3,druck$(num)
      NEXT
     CLOSE #3
     RETURN

etikett:

  OPEN "prt:" FOR OUTPUT AS #3:PRINT #3,nlq$:CLOSE #3
  OPEN "par:" FOR OUTPUT AS #3
  PRINT #3,e$;"@";CHR$(13);CHR$(13);
  FOR t=0 TO 5
   IF text$(t)=SPACE$(30) THEN text$(t)="___"
    t1=30  
    WHILE MID$(text$(t),t1,1)=" " 
    text$(t)=LEFT$(text$(t),t1)
    t1=t1-1
   WEND  
    NEXT
   GOSUB nummer
   PRINT #3,"___                                                   ___"
   IF LEN(text$(0))>26 OR LEN(text$(1))>26 THEN
    PRINT #3,hoch$;:g$="    "
    ELSE 
    PRINT #3,doppel$;:g$="  "
    END IF
   PRINT #3,nlq$;fett$;g$;
   ptext text$(0)
   PRINT #3,""
   PRINT #3,g$;
   ptext text$(1)
   PRINT #3,e$;"@";  
   PRINT #3,"___                                                   ___"

a1:

  FOR t=0 TO 7:t2=30
   IF t=0 OR t=1 THEN
    IF LEN(text$(t))>30 THEN 
     text$(t)=LEFT$(text$(t),30)
     ELSE
     t1=(30-LEN(text$(t)))/2
     text$(t)=SPACE$(t1)+text$(t)
     text$(t)=text$(t)+SPACE$(30-LEN(text$(t)))
     END IF
    text$(t)=text$(t)+"!"
    ELSE 
    IF t=4 OR t=5 THEN text$(t)=genr$(t(4+t))+" "+STR$(t(2+t))+" min."
     IF t=2 OR t=3 THEN text$(t)=SPACE$((30-LEN(text$(t)))/2)+text$(t):t2=53
      IF t=7 OR t=6 THEN text$(t)=ton$(t(t-2))+" - "+sp$(t(t-2))+" (E"+STR$(lz(t(1)))+")":t2=53
       END IF
      t1=(t2-LEN(text$(t)))/2
      text$(t)=SPACE$(t1)+text$(t)
      NEXT
     PRINT #3,e$;"@";

a2:

  FOR t=0 TO 1
   PRINT #3,nlq$;hoch$;
   ptext text$(0+t)
   PRINT #3,hochaus$   
   PRINT #3,sch$;
   ptext text$(2+t)
   PRINT #3,scha$  
   ptext text $(4+t)
   PRINT #3,""
   PRINT #3,sch$;
   ptext text$(6+t)
   PRINT #3,scha$
   NEXT
  PRINT #3,"------------------------------"
  CLOSE #3
  GOTO num1
  SUB ptext (text$) STATIC
  CLOSE #3:OPEN "prt:" FOR OUTPUT AS #3
  PRINT #3,text$;
  CLOSE #3:OPEN "par:" FOR OUTPUT AS #3
  END SUB 
  nummer:          :REM zahlen in Feld CASS in Graphic wandeln
  FOR t2=0 TO 3:FOR t1=0 TO 7:
   bit (t1,t2)=0:FOR t=0 TO 7
   IF POINT(104+(7-t)+t2*8,56+t1)>0 THEN bit(t1,t2)=bit(t1,t2)+2^t
    NEXT t,t1,t2
   :REM Graphic drucken
   FOR t1=0 TO 3:FOR t3=0 TO 1
    PRINT #3,e$;"*";CHR$(1);CHR$(32);CHR$(0);  :REM 120 dpi
    FOR t=7 TO 0 STEP -1
     FOR t2=1 TO 4:PRINT #3,CHR$(bit(t,t1));:NEXT  :REM daten an drucker
      NEXT
     PRINT #3,e$;"J";CHR$(1);CHR$(13);   :REM 1/216 zeilenvorschub
     NEXT
    PRINT #3,e$;"J";CHR$(23);            :REM 23/216    "
    NEXT
   PRINT #3,e$;"j";CHR$(168);e$;"@";    :REM 168/216 zeilenrueckschub    
   RETURN

