COP — Hilfe für Datasette
COP ist die Abkürzung für »Cassette Operations Program«. Es erleichtert den Umgang mit der eigenen Programmsammlung auf Kassetten.
COP ist ein Hilfsprogramm zur Verwaltung von Programmsammlungen. Mit ihm können Sie Programme auf einer Datasette leichter und schneller finden und bei Bedarf ein Inhaltsverzeichnis einer Kassettenseite ausdrucken.
COP besteht aus zwei Teilen: Einem Hauptprogramm, das auf einer separaten Kassette gespeichert werden kann, und den Datensätzen für die einzelnen Kassetten-Seiten, die zur einfacheren Handhabung am Anfang jeder Kassettenseite abgelegt werden sollten.
Nach dem Starten des Programms mit »RUN« erscheint ein Menü auf dem Bildschirm, dessen einzelne Punkte hier erklärt werden:
1) Anfänge ermitteln
In diesem Programmpunkt können Sie die Programme einer Kassette katalogisieren. Zunächst geben Sie bitte den Namen und die Seite der Kassette ein. Danach wird nach den Titeln der einzelnen Programme gefragt. Hier können Sie auch persönliche Zusätze angeben wie zum Beispiel Zählerstand oder Fast-Tape, da der eingegebene Titel nicht mit dem Namen des Programms auf der Kassette übereinstimmen muß. Haben Sie alle Titel eingegeben, tippen Sie bitte ein »*« als Endekennzeichen ein.
Nun wird die zu katalogisierende Kassette im zurückgespulten Zustand eingelegt und immer bis zumjeweiligen Programm vorgespult. Dann drücken Sie die STOP-Taste. Zu diesem Zweck sollte man sich vorher den Stand des Zählwertes der einzelnen Programme notiert haben. Dies geschieht fortgesetzt bis zum letzten Programm, dann wird wieder zum Eingangsmenü zurückgesprungen.
2) Programm suchen
Nach der Anzeige des Kassettennamens und der Seite können die Programmnamen mit der Leertaste durchgeblättert werden. Hat man das zu suchende Programm gefunden, drückt man die Taste »RETURN«. Nun spult man die Kassette vor, der Computer stoppt den Spulvorgang automatisch kurz vor dem Programm. Drücken Sie nun »Stop« und »Play« an der Datasette, und das gewünschte Programm wird automatisch geladen. COP wird dabei gelöscht.
3) Zeiten abspeichern
In diesem Programmteil werden alle erstellten Daten (Kassetten- und Programmnamen und Zeitzum Stoppen) in einem Datensatz gespeichert. Dies kann zum Beispiel am Anfang der zu bearbeitenden Kassette geschehen. Dann sollte man das erste Programm allerdings nicht direkt am Anfang des Bandes speichern, da es dann den Datensatz überschreibt oder umgekehrt. Am praktikabelsten hat sich ein Vorspulen bis zum Zählwerksstand »30« erwiesen, bevor man das erste Programm speichert.
4) Zeiten laden
Hier werden die unter Punkt 3 abgespeicherten Datensätze wieder geladen.
5) Verzeichnis ausdrucken
Zunächst erscheinen die ersten 14 der auf der Kassette befindlichen Programme auf dem Bildschirm. Mit der Leertaste kann zu den nächsten 14 weitergeblättert werden. Wurden alle Programme aufgelistet, kann man sich das komplette Verzeichnis auf dem Plotter 1520 ausgeben lassen. Eine Anpassung an andere Drucker dürfte überhaupt kein Problem sein, dakeinedruckerspezifischen Befehleverwendetwerden. Einzig und allein der OPEN-Befehl in Zeile 5160 muß entsprechend des vorhandenen Druckers geändert werden.
Noch einige Hinweise: Das Programm ist auf 30 Titel pro Kassette beschränkt, mehr sind auf einer Kassette kaum sinnvoll. >Turbo-Tape«-Benutzer müssen noch die Zeile 2200 ändern. Dort wird das Eintippen der Tastenkombination »SHIFT/LOAD« simuliert, um das angewählte Programm zu laden, was mit manchen »Turbo-Tape«-Versionen nicht funktioniert. Am allereinfachsten wird dort nur der END-Befehl eingesetzt und der LOAD-Befehl dann von Hand eingegeben.
Für diejenigen, die das Programm verändern wollen, hier noch eine Variablenliste:
(Hubertus Luhmann/bs)Variablenliste:
A$ | Eingabe über GET |
C$ | Kassettennummer |
CS$ | Kassettenseite |
PP$(Q) | laufende Programmtitel |
Q | Zählervariable |
P$/P1$ | Play/Play löschen |
F$/F1$ | FFwd/FFwd löschen |
S$/S1$ | Stop/Stop löschen |
R$/R1$ | Record/Record löschen |
Z$/Z1$ | Rewind/Rewind löschen |
PR$/PL$ | Anzeige »Programm:«/PR$ löschen |
Q1 | Höchste Anzahl Programme |
Q2 | Höchste Anzahl Programme und Sternchen (Q2=Q1 + 1) |
TI$(Q) | Zeitvariable |
T1$(Q) | Zwischenspeicher der Zeitvariablen |
10 dim ti$(30):dim pp$(30):dim t1$(30) 20 q=0:t1$=ti$ 30 print chr$(147):poke 53280,0:poke 53281,0 40 rem ******* menue ****************** 50 printtab(8)chr$(18)" cassetten - directory ";chr$(146) 60 print:print:print:print:print:print"auswahlmoeglichkeiten:" 70 print:print:print:print"1 - anfaenge ermitteln - 1" 80 print:print"2 - programm suchen - 2" 90 print:print"3 - zeiten abspeichern - 3" 100 print:print"4 - zeiten einladen - 4" 110 print:print"5 - verzeichnis ausdrucken - 5" 120 print:print:print:print"bitte taste druecken !" 130 geta$:ifa$=""then130 140 onval(a$)goto1000,2000,3000,4000,5000 150 goto130 200 rem *** unterprogramme ************ 210 rem * tastatur zeichnen * 220 print " 230 print"{clr} {CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}" 240 forq=1to13 250 print" {SHIFT--} {SHIFT--}" 260 nextq 270 print" {CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-R}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W}" 280 print" {SHIFT--} record{SHIFT--}play{SHIFT--}rewind{SHIFT--}ffwd{SHIFT--}stop{SHIFT--}eject {SHIFT--} 290 print" {CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W}" 300 forq=1to4 310 print" {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} 320 nextq 330 print" {CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-E}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}" 340 r$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}^^^^^^" 350 r1$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght} " 360 p$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}^^^^" 370 p1$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght} " 374 z$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}^^^^^^" 376 z1$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght} " 380 f$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}^^^^" 390 f1$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght} " 400 s$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}^^^^" 410 s1$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght} " 420 print"{home}{down}{down}{rght}{rght}{rght}cassette:";c$ 430 print"{home}{down}{down}{down}{rght}{rght}{rght} seite:";cs$ 440 pr$="{home}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght}programm:" 445 pl$="{home}{down}{down}{down}{down}{down}{down}{rght}{rght}{rght} " 450 return 460 rem unterprogramm zeit 470 ti$=t1$ 480 return 500 t1$=ti$ 510 return 1000 rem *** anfaenge ermitteln ******* 1010 printchr$(18)"{clr} anfaenge ermitteln ";chr$(146) 1020 print:print:print:input"welche cassette ";c$ 1030 input"welche seite ";cs$ 1040 print:print"bitte geben sie die programme ein:" 1050 q=q+1 1060 print"programm";q;"=";:inputpp$(q) 1070 ifpp$(q)="*"then1090 1080 goto1050 1090 rem *** zeit ermitteln *********** 1200 print"{clr}":q1=q-1 1210 gosub 200 1220 if(peek(1)and16)=16then1250 1230 if(peek(1)and16)=0thenprints$ 1240 wait 1,16,255-16:prints1$ 1250 for q=1toq1 1260 printpl$:printpr$;pp$(q) 1270 printf$ 1275 geta$ 1280 if(peek(1)and16)=0thengoto1290 1285 ifa$=""then1275 1290 ifq=1thenti$="000000":ifq=1thent1$="000000" 1291 gosub460 1292 printf1$:prints$ 1295 geta$ 1300 if(peek(1)and16)=16then1310 1305 ifa$=""then1295 1310 gosub500 1315 ti$(q)=t1$ 1320 prints1$:nextq 1330 printz$:printpl$:printpr$;"ende" 1340 geta$ 1350 if(peek(1)and16)=0thengoto1365 1360 ifa$=""then1340 1365 printz1$:prints$ 1370 geta$ 1380 if(peek(1)and16)=16then1400 1390 ifa$=""then1370 1400 goto30 2000 rem *** programm suchen ********** 2010 gosub200:q=0 2020 q=q+1:ifq=q1+1then2075 2030 printpl$:printpr$;pp$(q) 2040 geta$:ifa$=""then2040 2050 ifa$=chr$(32)then2020 2060 ifa$=chr$(13)then2080 2070 goto2040 2075 q=0:goto2020 2080 printf$ 2090 geta$ 2100 if(peek(1)and16)=0then2115 2110 ifa$=""then2090 2115 t1$(q)=ti$(q) 2120 ti$="000000":printf1$ 2130 ift1$(q)<>ti$then2130 2150 poke192,1:poke1,peek(1)or32 2160 prints$ 2170 geta$ 2180 if(peek(1)and16)=16then2200 2190 ifa$=""then2170 2200 printchr$(147):poke198,1:poke631,131:end 3000 rem *** zeiten abspeichern ******* 3010 gosub200 3020 printr$:printk$ 3030 printp$ 3040 print:print:q=0:q2=q1+1 3050 open1,1,1,"directory" 3055 print#1,c$:print#1,cs$:print#1,q2:print#1,q1 3060 forq=q+1toq2 3070 print#1,pp$(q) 3080 print#1,ti$(q) 3090 nextq 3100 close1 3110 prints$:printp1$:printr1$ 3120 geta$ 3130 if(peek(1)and16)=16then3150 3140 ifa$=""then3120 3150 goto 30 4000 rem *** zeiten einladen ********** 4010 gosub200 4030 printp$ 4040 print:q=0 4050 open1,1,0,"directory" 4055 input#1,c$:input#1,cs$:input#1,q2:input#1,q1 4060 q=q+1 4065 ifq=q2then4100 4070 input#1,pp$(q) 4080 input#1,ti$(q) 4090 goto4060 4100 close1 4110 prints$:printp1$ 4120 geta$ 4130 if(peek(1)and16)=16then4150 4140 ifa$=""then4120 4150 goto 30 5000 rem *** verzeichnis ausdrucken *** 5010 printchr$(147):q=0 5020 printtab(10)chr$(18)" programmverzeichnis ";chr$(146) 5030 print:print"cassette: ";c$ 5040 print" seite: ";cs$:print 5050 q=q+1:ifq=q1+1then5100 5055 ifq=15thengoto5080 5060 print"programm ";q;"=";pp$(q) 5070 goto5050 5080 geta$:ifa$=""then5080 5090 ifa$=chr$(32)thenprintchr$(19):print:print:print:print:print:q=15:goto5060 5100 print"***************************************" 5110 print"a = ausdruck m = menue" 5120 geta$:ifa$=""then5120 5130 ifa$="m"then30 5140 ifa$="a"then5160 5150 goto5120 5160 open1,6 5170 print#1,"******** v e r z e i c h n i s ********" 5180 q=0:print#1:print#1 5190 print#1,"cassette: ";c$ 5200 print#1," seite: ";cs$ 5210 print#1 5220 q=q+1:ifq=q1+1then5250 5230 print#1,"programm ";q;"=";pp$(q) 5240 goto5220 5250 close1 5260 goto30