home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 41 / 64er_Magazin_Sonderheft_41_19xx_Markt__Technik_de.d64 / direktzugriff (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  4KB  |  149 lines

  1. 90 dim name$(100), rec%(100)
  2. 95 gosub 1310 : rem blockbelegung
  3. 100 open 1,8,15: rem befehlskanal oeffnen
  4. 110 open 2,8,2,"infodatei,s,r": rem seq.datei oeffnen
  5. 120 input#1,a: rem fehler aufgetreten?
  6. 130 if a<>0 then goto 140: rem ja, dann weiter
  7. 132 input#2,ad: rem adressanzahl lesen
  8. 134 for i=1 to ad
  9. 136 : input#2,name$(i): input#2,rec%(i)
  10. 137 : if name$(i)="*" then name$(i)=""
  11. 138 next i
  12. 140 close 2: rem sequentielle datei schliessen
  13. 150 :
  14. 160 open 2,8,2,"#": rem direktzugriffs-datei oeffnen
  15. 170 :
  16. 180 :
  17. 190 rem *** menue ***
  18. 200 print:print "1=eintragen/2=suchen/3=blaettern/4=aendern/5=ende":print
  19. 210 get a$: if a$="" then goto 210
  20. 220 :
  21. 230 if a$<>"5" then on val(a$) gosub 340,1060,430,550: goto 200
  22. 240 :
  23. 250 close 2: rem relative datei schliessen
  24. 260 print#1,"s:infodatei": rem seq.datei loeschen
  25. 270 open 2,8,2,"infodatei,s,w": rem seq.datei oeffnen
  26. 280 print#2,ad: rem adressanzahl speichern
  27. 282 for i=1 to ad
  28. 284 : if name$(i)="" then name$(i)="*"
  29. 286 : print#2,name$(i): print#2,rec%(i)
  30. 288 next i
  31. 290 close 2: close 1: rem alle dateien schliesen
  32. 300 end
  33. 310 :
  34. 320 :
  35. 330 rem *** neue adresse eintragen ***
  36. 340 print "*eintragen*"
  37. 350 gosub 650: rem adresse abfragen
  38. 360 ad=ad+1
  39. 370 rec=ad: gosub 1210 : rem umrechnung
  40. 375 name$(ad)=n$: rec%(ad)=rec: gosub 950: rem index sortieren
  41. 380 gosub 740: rem satz schreiben
  42. 390 return
  43. 400 :
  44. 410 :
  45. 420 rem *** blaettern ***
  46. 430 print "*blaettern*"
  47. 435 snr=1: goto 475
  48. 440 get a$: if a$="" then goto 440
  49. 450 if a$<>chr$(29) and a$<>chr$(157) then return
  50. 460 if a$=chr$(29) and snr<ad then snr=snr+1
  51. 470 if a$=chr$(157) and snr>1 then snr=snr-1
  52. 475 rec=rec%(snr)
  53. 480 gosub 1210: rem umrechnung
  54. 490 gosub 810 : rem adresse lesen
  55. 500 print: print n$: print w$: print t$: print
  56. 510 goto 440
  57. 520 :
  58. 530 :
  59. 540 rem *** aendern ***
  60. 550 print "*aendern*"
  61. 560 gosub 650 : rem adresse abfragen
  62. 570 gosub 1210: rem umrechnung
  63. 575 name$(snr)=n$: rec%(snr)=rec: gosub 950: rem index sortieren
  64. 580 gosub 730: rem satz schreiben
  65. 590 return
  66. 600 :
  67. 610 :
  68. 640 rem *** adresse abfragen ***
  69. 650 n$="": w$="": t$=""
  70. 660 input "name";n$
  71. 670 input "wohnort";w$
  72. 680 input "telefon";t$
  73. 690 return
  74. 700 :
  75. 710 :
  76. 720 rem *** datensatz schreiben ***
  77. 730 if n$="" then n$="*": rem achtung: das schreiben von
  78. 740 if w$="" then w$="*": rem 'leerstrings' muss ver-
  79. 750 if t$="" then t$="*": rem mieden werden !!!
  80. 755 print#1,"b-p:";2;1  : rem buffer-pointer setzen
  81. 760 print#2,n$ chr$(13) w$ chr$(13) t$: rem 1 print#-befehl !!!
  82. 765 print#1,"u2:";2;0;spur;sekt : rem puffer auf disk schreiben
  83. 770 return
  84. 780 :
  85. 790 :
  86. 800 rem *** datensatz lesen ***
  87. 810 print#1,"u1:";2;0;spur;sekt
  88. 812 print#1,"b-p:";2;1
  89. 818 input#2,n$: if n$="*" then n$=""
  90. 820 input#2,w$: if w$="*" then w$=""
  91. 830 input#2,t$: if t$="*" then t$=""
  92. 840 return
  93. 850 :
  94. 860 :
  95. 940 rem *** sortieren ***
  96. 950 for i=1 to ad-1
  97. 960 : for j=i to ad
  98. 970 :   if name$(i)<=name$(j) then 1000
  99. 980 :   s$=name$(i): name$(i)=name$(j): name$(j)=s$
  100. 990 :   s=rec%(i): rec%(i)=rec%(j): rec%(j)=s
  101. 1000 : next j
  102. 1010 next i
  103. 1020 return
  104. 1030 :
  105. 1040 :
  106. 1050 rem *** adresse suchen ***
  107. 1060 input "gesuchter name";sn$
  108. 1070 for snr=1 to ad
  109. 1080 : if name$(snr)<>sn$ then goto 1150
  110. 1090 : rec=rec%(snr)
  111. 1100 : gosub 1210: rem umrechnung
  112. 1110 : gosub 810 : rem satz lesen
  113. 1120 : print: print n$: print w$: print t$: print
  114. 1130 : input "weitersuchen(j/n)";a$
  115. 1140 : if a$<>"j" then return
  116. 1150 next snr
  117. 1160 return
  118. 1170 :
  119. 1180 :
  120. 1200 rem *** recordnr.=>spur/sektor ***
  121. 1210 if rec<358 then aa=0:bb=22:dd=1:goto 1250
  122. 1220 if rec>471 then aa=357:bb=20:dd=19:goto 1250
  123. 1230 if rec<580 then aa=471:bb=19:dd=25:goto 1250
  124. 1240 aa=579:bb=18:dd=31
  125. 1250 spur=int(((rec-aa)-1)/(bb-1))+dd
  126. 1260 sekt=rec-aa-(spur-dd)*bb+(spur-dd-1)
  127. 1270 return
  128. 1280 :
  129. 1290 :
  130. 1300 rem *** blockbelegung ***
  131. 1310 open 1,8,15
  132. 1320 open 2,8,2,"#"
  133. 1330 print#1,"u1:";2;0;18;0 : rem sektor 0 von spur 18 lesen
  134. 1340 :
  135. 1350 print#1,"b-p:";2;4     : rem ab bytes fuer spur 1 manipul.
  136. 1360 for i=1 to 4*17        : rem spur 1-17 als belegt
  137. 1370 : print#2,chr$(0);     : rem kennzeichnen
  138. 1380 next
  139. 1390 :
  140. 1400 print#1,"b-p:";2;4+4*18: rem ab bytes fuer spur 19 manipul.
  141. 1410 for i=1 to 4*12        : rem spur 19-30 als belegt
  142. 1420 : print#2,chr$(0);     : rem kennzeichnen
  143. 1430 next
  144. 1440 :
  145. 1450 print#1,"u2:";2;0;18;0 : rem bam zurueckschreiben
  146. 1460 print#1,"i"            : rem manipul.directory holen
  147. 1470 close 1: close 2
  148. 1480 return
  149.