C 64/VC 20
Tips und Tricks

Disk-Designer

Dieses Programm für den C 64/VC 20 macht das Inhaltsverzeichnis Ihrer Disketten übersichtlicher und vereinfacht das Laden von Programmen.

Das Programm erklärt sich nach dem Starten von selbst. Es soll aber trotzdem noch kurz auf die einzelnen Funktionen eingegangen werden:

  1. Disketteninhalt wird alphabetisch sortiert.
  2. Files auf der Diskette lassen sich mit einem Löschschutz versehen. Das heißt, sie können nicht mehr versehentlich mit SCRATCH gelöscht werden (beim Formatieren gehen sie allerdings trotzdem verloren).
  3. Dem Programmnamen kann eine Ladehilfe angehängt werden. Das heißt, der Name wird auf zwölf Zeichen verkürzt und dem zweiten Anführungszeichen (") wird die Zeichenfolge »,8:« angehängt. Dies hat den Vorteil, daß nach Laden und Listen des Directorys nur noch vor dem betreffenden Programm »LOAD« und »RETURN« einzugeben ist, um es zu laden.
  4. Alle »SPACEs« in den Programmnamen können mit jedem beliebigen Zeichen aufgefüllt werden. Dadurch ergibt sich ein übersichtlicheres Directory, da alle File-Namen gleich lang dargestellt werden. Beispiel:
    Vorher: Nachher:
    64’ER 64’ER...........
    PROGRAMM PROGRAMM........
    DISK DESIGNER DISK.DESIGNER...

Mit den Funktionstasten können im Menü die gewünschten Funktionen ein- und ausgeschaltet und die Abarbeitung gestartet werden. Um das Programm auf dem VC 20 lauffähig zu machen, geben Sie bitte die Zeilen aus Listing 2 zusätzlich ein.

(Christian Quirin Spitzner/ev)
100— 400 Erklärung
410— 690 Menü & Auswahl
700— 790 Dimensionierung von Variablen
800— 1190 Directory lesen
1200— 1480 Files bearbeiten
1490— 1750 Directory sortieren
1760— 1970 Directory schreiben
1980— 2070 Neustart
2080— 2230 Unterprogramm: RAHMEN
2240— 2340 Unterprogramm: Wartet auf »RETURN«
2350— 2470 Unterprogramm: Disk-Errors
Programmbeschreibung
10 rem***************
20 rem*             *
30 rem* christian   *
40 rem* quirin      *
50 rem* spitzner    *
60 rem* gruberstr.53*
70 rem* 8011 poing  *
80 rem*             *
90 rem***************
100 poke53280,246
110 print"{blk}"
120 gosub 2150
130 print"{rght}{rght}{down}dieses programm kann  das directory"
140 print"{rght}{rght}{down}ihrer diskette je  nach  wunsch und"
150 print"{rght}{rght}{down}geschmack nach vier  kriterien ver-"
160 print"{rght}{rght}{down}schoenern :
170 print"{rght}{rght}{down}1) disk  wird alphabetisch sortiert"
180 print"{rght}{rght}{down}2) file- namen  koennen mit belieb-"
190 print"{rght}{rght}{down}   igen zeichen aufgefuellt werden:"
200 print"{rght}{rght}{down}   z.b. aus  {rvon}disk-designer{rvof}"
210 print"{rght}{rght}{down}        wird {rvon}disk-designer...{rvof}"
220 gosub 2310
230 gosub 2150
240 print"{rght}{rght}{down}3) files  koennen  mit loeschschutz"
250 print"{rght}{rght}{down}   versehen werden. d.h. dem  file-"
260 print"{rght}{rght}{down}   typ im directory wird  ein  '<'-"
270 print"{rght}{rght}{down}   zeichen angehaengt :"
280 print"{rght}{rght}{down}   z.b ohne loschschutz : prg  seq "
290 print"{rght}{rght}{down}        mit loschschutz : prg< seq<{down}{down}{down}{down}{down}{down}"
300 gosub 2310
310 gosub 2150
320 print"{rght}{rght}{down}4) files  koennen  mit  einer lade-"
330 print"{rght}{rght}{down}   hilfe versehen werden. d.h.  der"
340 print"{rght}{rght}{down}   filename wird auf 12 zeichen ge-"
350 print"{rght}{rght}{down}   gekuerzt und dem 2. '"chr$(34)"'- zeichen"
360 print"{rght}{rght}{down}   die zeichenfolge {rvon},8:{rvof} angehaengt."
370 print"{rght}{rght}{down}   so braucht man  nur noch  'load'"
380 print"{rght}{rght}{down}   vor den programmnamen zu schrei-"
390 print"{rght}{rght}{down}   und 'return' zu druecken um  ein"
400 print"{rght}{rght}{down}   programm zu laden.
410 gosub 2310
420 gosub 2150
430 g$="ja"
440 e$="ja"
450 i$="ja"
460 f$="."
470 j$="    {left}{left}{left}{left}"
480 print"{home}{down}{down}{down}{down}{down}{down}{rght}{rght}     {rvon} f1 {rvof} = start
485 print"{rght}{rght}{down}     {rvon} f2 {rvof} = ende
490 print"{rght}{rght}{down}     {rvon} f3 {rvof} = loeschschutz    :";j$;g$
500 print"{rght}{rght}{down}     {rvon} f5 {rvof} = ladehilfe       :";j$;e$
510 print"{rght}{rght}{down}     {rvon} f7 {rvof} = file auffuellen :";j$;i$
520 print"{rght}{rght}{down}     {rvon} f8 {rvof} = zeichen         :{SHIFT--}{up}{left}U{SHIFT-*}I{down}{left}{SHIFT--}{down}{left}{left}{left}J{SHIFT-*}K{up}{left}{left}";f$;"{left}";
530 get d$
540 if d$=""then 530
550 e=asc(d$)
560 if e=133 then 700
570 if e=134 and g$="ja" then g$="nein":goto 480
580 if e=134 and g$="nein" then g$="ja":goto 480
590 if e=135 and e$="ja" then e$="nein":goto 480
600 if e=135 and e$="nein" then e$="ja":goto 480
610 if e=136 and i$="ja" then i$="nein":goto 480
620 if e=136 and i$="nein" then i$="ja":goto 480
625 if e=137 then print"{clr}" : end
630 if e<>140 then 530
640 poke204,0
650 get f$:if f$="" then 650
660 d=asc(f$)
670 if d<32 or (d>127 and d<160)then 650
680 poke204,1
690 goto 480
700 gosub 2150
710 if i$="nein" then f$=chr$(160)
720 dim progr$(224),n(29),m(29)
730 h=0
740 o=0
750 p=1
760 g=0
770 n=18
780 m=1
790 k$=chr$(160)+",8:"
800 :
810 :
820 :
830 rem  ***   directory lesen   ***
840 :
850 :
860 :
870 print"{down}{down}{rght}       directory wird gelesen"
880 print"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}         U{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}I"
890 print"{rght}         {SHIFT--}                {SHIFT--}"
900 print"{rght}         J{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}K"
910 open 15,8,15,"i0"
920 gosub 2420
930 open 2,8,2,"#"
940 gosub 2420
950 print#15,"u1";2;0;n;m
960 n(o)=n
970 m(o)=m
980 get#2,eg$
990 if eg$="" then eg$=chr$(0)
1000 n=asc(eg$)
1010 get#2,eg$
1020 if eg$="" then eg$=chr$(0)
1030 m=asc(eg$)
1040 l=2
1050 print#15,"b-p";2;l
1060 h=h+1
1070 for i=1 to 30
1080 :  get#2,eg$
1090 :  if eg$="" then eg$=chr$(0)
1100 :  progr$(h) = progr$(h) + eg$
1110 next i
1120 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}";tab(11);mid$(progr$(h),4,16)
1130 if asc(left$(progr$(h),1))<>0then1180
1140 progr$(h)=""
1150 h=h-1
1160 g=g+1
1170 p=0
1180 ifl-226thenl=l+32:goto1050
1190 if n then l=2 : o=o+1 : goto 950
1200 :
1210 :
1220 :
1230 rem ***   files bearbeiten  ***
1240 :
1250 :
1260 :
1270 for j=1 to h
1280 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}      {rvon}files werden bearbeitet"
1290 for j=1 to h
1300 :  c$=mid$(progr$(j),17,1)
1310 :  for i=4 to 20
1320 :     a$=mid$(progr$(j),i,1)
1330 :     if a$=chr$(160) and e$="ja" then a$=f$ : goto 1370
1340 :     if a$=chr$(160) and c$<>"," then a$=f$ : goto 1370
1350 :     if a$=chr$(32) and i$="nein" then a$=chr$(32) : goto 1370
1360 :     if a$=chr$(32) and i$="ja" then a$=f$
1370 :     progr$(j)=left$(progr$(j),i-1)+a$+right$(progr$(j),30-i)
1380 :  next i
1390 :  f=asc(left$(progr$(j),1))
1400 :  iff<150andg$="nein"then1460
1410 :  iff>150andg$="ja"then1460
1420 :  ifg$="ja"thenf=f+64:goto1440
1430 :  ifg$="nein"thenf=f-64
1440 :  progr$(j)=chr$(f)+right$(progr$(j),29)
1450 :  if f >< 130 and f >< 194 then1470
1460 :  ife$="ja"thenprogr$(j)=left$(progr$(j),15)+k$+right$(progr$(j),11)
1470 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rvon}";tab(11);mid$(progr$(j),4,16)
1480 next j
1490 :
1500 :
1510 :
1520 rem *** directory sortieren ***
1530 :
1540 :
1550 :
1560 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}      files werden sortiert"
1570 for j=1 to h-1
1580 :  for i=j+1 to h
1590 :     ifmid$(progr$(i),4,16)>mid$(progr$(j),4,16)then1640
1600 :     h$=progr$(i)
1610 :     progr$(i)=progr$(j)
1620 :     progr$(j)=h$
1630 :     p=0
1640 :  next i
1650 :  print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}";tab(11);mid$(progr$(j),4,16)
1660 next j
1670 if p then 2050
1680 h$=""
1690 if g=0 then 1830
1700 for j=1 to 30
1710 :  h$=h$+chr$(0)
1720 next j
1730 for j=1 to g
1740 :  progr$(h+j)=h$
1750 next j
1760 :
1770 :
1780 :
1790 rem *** directory schreiben ***
1800 :
1810 :
1820 :
1830 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rght}{rght}      {rvon}directory wird geschrieben"
1840 k=1
1850 for j=0 to o
1860 :  print#15,"b-p";2;0
1870 :  print#2,chr$(n(j+1));chr$(m(j+1))
1880 :  l=2
1890 :  for i=1 to 8
1900 :     print#15,"b-p";2;l
1910 :     print#2,progr$(k);
1920 :     print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rvon}";tab(11);mid$(progr$(k),4,16)
1930 :     k=k+1
1940 :     l=l+32
1950 :  next i
1960 :  print#15,"u2";2;0;n(j);m(j)
1970 next j
1980 :
1990 :
2000 :
2010 rem ***      neustart       ***
2020 :
2030 :
2040 :
2050 close 2
2060 close 15
2070 run 420
2080 :
2090 :
2100 :
2110 rem ***       rahmen        ***
2120 :
2130 :
2140 :
2150 print"{clr}U{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-*}{SHIFT-*}I"
2160 for i=1 to 23
2170 :  print"{SHIFT--}                                     {SHIFT--}"
2180 next i
2190 print"J{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-*}{SHIFT-*}K{home}"
2200 print"{rght}{rght}{rght}{rght}{rght}U{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-*}I"
2210 print"{rght}{rght}{rght}{rght}{rght}{SHIFT--}{rvon} * * * disk-designer * * * {rvof}{SHIFT--}"
2220 print"{rght}{rght}{rght}{rght}{rght}J{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-*}K"
2230 return
2240 :
2250 :
2260 :
2270 rem *** wartet [return] ab  ***
2280 :
2290 :
2300 :
2310 print"{rght}{rght}{down}druecke [{rvon}return{rvof}]
2320 get retur$
2330 if retur$ <> chr$(13) then 2320
2340 return
2350 :
2360 :
2370 :
2380 rem ***     disk error      ***
2390 :
2400 :
2410 :
2420 input#15,a,b$,b,c
2430 if a=0 then return
2440 gosub 2150
2450 print"{down}{down}{down}{rght}     {rvon}disk-error :"
2460 print"{down}{rght}    ";a;b$;b;c
2470 goto2050
Listing 1. »Disk-Designer«, Version für den C 64
TODO
Listing 2. Diese Zeilen müssen für den VC 20 in Listing 1 geändert werden.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →