home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 41
/
64er_Magazin_Sonderheft_41_19xx_Markt__Technik_de.d64
/
direktzugriff
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
4KB
|
149 lines
90 dim name$(100), rec%(100)
95 gosub 1310 : rem blockbelegung
100 open 1,8,15: rem befehlskanal oeffnen
110 open 2,8,2,"infodatei,s,r": rem seq.datei oeffnen
120 input#1,a: rem fehler aufgetreten?
130 if a<>0 then goto 140: rem ja, dann weiter
132 input#2,ad: rem adressanzahl lesen
134 for i=1 to ad
136 : input#2,name$(i): input#2,rec%(i)
137 : if name$(i)="*" then name$(i)=""
138 next i
140 close 2: rem sequentielle datei schliessen
150 :
160 open 2,8,2,"#": rem direktzugriffs-datei oeffnen
170 :
180 :
190 rem *** menue ***
200 print:print "1=eintragen/2=suchen/3=blaettern/4=aendern/5=ende":print
210 get a$: if a$="" then goto 210
220 :
230 if a$<>"5" then on val(a$) gosub 340,1060,430,550: goto 200
240 :
250 close 2: rem relative datei schliessen
260 print#1,"s:infodatei": rem seq.datei loeschen
270 open 2,8,2,"infodatei,s,w": rem seq.datei oeffnen
280 print#2,ad: rem adressanzahl speichern
282 for i=1 to ad
284 : if name$(i)="" then name$(i)="*"
286 : print#2,name$(i): print#2,rec%(i)
288 next i
290 close 2: close 1: rem alle dateien schliesen
300 end
310 :
320 :
330 rem *** neue adresse eintragen ***
340 print "*eintragen*"
350 gosub 650: rem adresse abfragen
360 ad=ad+1
370 rec=ad: gosub 1210 : rem umrechnung
375 name$(ad)=n$: rec%(ad)=rec: gosub 950: rem index sortieren
380 gosub 740: rem satz schreiben
390 return
400 :
410 :
420 rem *** blaettern ***
430 print "*blaettern*"
435 snr=1: goto 475
440 get a$: if a$="" then goto 440
450 if a$<>chr$(29) and a$<>chr$(157) then return
460 if a$=chr$(29) and snr<ad then snr=snr+1
470 if a$=chr$(157) and snr>1 then snr=snr-1
475 rec=rec%(snr)
480 gosub 1210: rem umrechnung
490 gosub 810 : rem adresse lesen
500 print: print n$: print w$: print t$: print
510 goto 440
520 :
530 :
540 rem *** aendern ***
550 print "*aendern*"
560 gosub 650 : rem adresse abfragen
570 gosub 1210: rem umrechnung
575 name$(snr)=n$: rec%(snr)=rec: gosub 950: rem index sortieren
580 gosub 730: rem satz schreiben
590 return
600 :
610 :
640 rem *** adresse abfragen ***
650 n$="": w$="": t$=""
660 input "name";n$
670 input "wohnort";w$
680 input "telefon";t$
690 return
700 :
710 :
720 rem *** datensatz schreiben ***
730 if n$="" then n$="*": rem achtung: das schreiben von
740 if w$="" then w$="*": rem 'leerstrings' muss ver-
750 if t$="" then t$="*": rem mieden werden !!!
755 print#1,"b-p:";2;1 : rem buffer-pointer setzen
760 print#2,n$ chr$(13) w$ chr$(13) t$: rem 1 print#-befehl !!!
765 print#1,"u2:";2;0;spur;sekt : rem puffer auf disk schreiben
770 return
780 :
790 :
800 rem *** datensatz lesen ***
810 print#1,"u1:";2;0;spur;sekt
812 print#1,"b-p:";2;1
818 input#2,n$: if n$="*" then n$=""
820 input#2,w$: if w$="*" then w$=""
830 input#2,t$: if t$="*" then t$=""
840 return
850 :
860 :
940 rem *** sortieren ***
950 for i=1 to ad-1
960 : for j=i to ad
970 : if name$(i)<=name$(j) then 1000
980 : s$=name$(i): name$(i)=name$(j): name$(j)=s$
990 : s=rec%(i): rec%(i)=rec%(j): rec%(j)=s
1000 : next j
1010 next i
1020 return
1030 :
1040 :
1050 rem *** adresse suchen ***
1060 input "gesuchter name";sn$
1070 for snr=1 to ad
1080 : if name$(snr)<>sn$ then goto 1150
1090 : rec=rec%(snr)
1100 : gosub 1210: rem umrechnung
1110 : gosub 810 : rem satz lesen
1120 : print: print n$: print w$: print t$: print
1130 : input "weitersuchen(j/n)";a$
1140 : if a$<>"j" then return
1150 next snr
1160 return
1170 :
1180 :
1200 rem *** recordnr.=>spur/sektor ***
1210 if rec<358 then aa=0:bb=22:dd=1:goto 1250
1220 if rec>471 then aa=357:bb=20:dd=19:goto 1250
1230 if rec<580 then aa=471:bb=19:dd=25:goto 1250
1240 aa=579:bb=18:dd=31
1250 spur=int(((rec-aa)-1)/(bb-1))+dd
1260 sekt=rec-aa-(spur-dd)*bb+(spur-dd-1)
1270 return
1280 :
1290 :
1300 rem *** blockbelegung ***
1310 open 1,8,15
1320 open 2,8,2,"#"
1330 print#1,"u1:";2;0;18;0 : rem sektor 0 von spur 18 lesen
1340 :
1350 print#1,"b-p:";2;4 : rem ab bytes fuer spur 1 manipul.
1360 for i=1 to 4*17 : rem spur 1-17 als belegt
1370 : print#2,chr$(0); : rem kennzeichnen
1380 next
1390 :
1400 print#1,"b-p:";2;4+4*18: rem ab bytes fuer spur 19 manipul.
1410 for i=1 to 4*12 : rem spur 19-30 als belegt
1420 : print#2,chr$(0); : rem kennzeichnen
1430 next
1440 :
1450 print#1,"u2:";2;0;18;0 : rem bam zurueckschreiben
1460 print#1,"i" : rem manipul.directory holen
1470 close 1: close 2
1480 return