home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 24 / 64er_Magazin_Sonderheft_24_19xx_Markt__Technik_de_Side_A.d64 / disk-fueller (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  5KB  |  150 lines

  1. 100 rem   **************************
  2. 110 rem   *                        *
  3. 120 rem   *                        *
  4. 130 rem   *     disk   fueller     *
  5. 140 rem   *                        *
  6. 150 rem   *                        *
  7. 160 rem   *                        *
  8. 170 rem   *    von  uwe  gerlach   *
  9. 180 rem   *                        *
  10. 190 rem   *      bruehlstr. 23     *
  11. 200 rem   *                        *
  12. 210 rem   *                        *
  13. 220 rem   *      6440  bebra 1     *
  14. 230 rem   *                        *
  15. 240 rem   *                        *
  16. 250 rem   *                        *
  17. 260 rem   *                        *
  18. 270 rem   *      im april 1985     *
  19. 280 rem   *                        *
  20. 290 rem   *                        *
  21. 300 rem   **************************
  22. 400 :
  23. 500 :
  24. 1000 poke53280,0: poke53281,0: rem farbe
  25. 1010 print chr$(14);"[147][152]  [214][195] 1541    [196] i s k   [198] u e l l e r":print:print:print
  26. 1015 print"[196]ieses [208]rogramm wurde geschrieben von:":print:print
  27. 1020 print,"[154]  [213]we [199]erlach": print,"  [194]ruehlstr. 23": print: print,"  6440 [194]ebra 1[152]"
  28. 1025 print:print:print"[197]s schafft auf vollen [196]isketten noch"
  29. 1030 print"etwas [208]latz, indem es die eigentlich"
  30. 1035 print"fuer das [196]irectory vorgesehene [211]pur 18"
  31. 1040 print"belegt.":print:print
  32. 1045 :
  33. 1050 open 1,8,15,"i": rem  fuer befehle
  34. 1060 open 2,8,2,"#" : rem  pufferkanal
  35. 1090 :
  36. 1100 rem  *****************************
  37. 1110 rem    directorylaenge ermitteln
  38. 1120 rem  *****************************
  39. 1130 :
  40. 2000 dim t(25): dim s(25): dim e(25)
  41. 2010 print# 1, "u1:"2;0;18;0: rem  bam
  42. 2020 get# 2,t$,s$: rem  zeiger auf dir.
  43. 2030 t(0)=asc(t$+chr$(0)): rem  track
  44. 2040 s(0)=asc(s$+chr$(0)): rem  sector
  45. 2050 t=t(0): rem  track  dir. anfang
  46. 2060 s=s(0): rem  sector dir. anfang
  47. 2070 b=1: rem  blockzaehler
  48. 2100 print# 1, "u1:"2;0;t;s
  49. 2110 get# 2,t$,s$: rem  zeiger
  50. 2120 t=asc(t$+chr$(0))
  51. 2130 s=asc(s$+chr$(0))
  52. 2140 if t=0 or t>35 or s>20 or b=25 then 2400:  rem  letzter directory-block
  53. 2150 t(b)=t: s(b)=s: rem  zeiger merken
  54. 2155 e(b-1)=8: rem  eintraege im block
  55. 2160 b=b+1: rem  zaehler erhoehen
  56. 2190 goto 2100 : rem  naechster block
  57. 2400 m=b: rem  dir. blockzahl
  58. 2500 f=0: rem  zaehler freie eintraege
  59. 2510 for i=2 to 226 step 32
  60. 2520 : print# 1, "b-p:"2,i: rem zeiger
  61. 2530 : get# 2,w$: rem  filetyp
  62. 2540 : if w$="" then f=f+1: rem  frei
  63. 2590 next i: rem  alle eintr. im block
  64. 2600 e(b-1)=8-f: rem  eintraege/block
  65. 2610 if f=8 and m=1 then 7800: rem leer
  66. 2700 print "[199]enuegen";f;"freie [196]irectory-[208]laetze ? ";
  67. 2750 get a$: if a$="" then 2750
  68. 2760 if a$<>"n" then a$="j"
  69. 2770 print a$: print: print: print
  70. 2790 :
  71. 3000 rem  *****************************
  72. 3010 rem    leere dir. bloecke festst.
  73. 3020 rem  *****************************
  74. 3030 :
  75. 3050 print# 1, "u1:"2;0;18;0: rem  bam
  76. 3060 print# 1, "b-p:"2,73: rem  spur 18
  77. 3100 b=0 : rem  blockzaehler
  78. 3110 l=19: rem  zahl leere dir-bloecke
  79. 3120 dim z(25): rem  zustand der blocks
  80. 3130 for i=1 to 3: rem  bytes spur 18
  81. 3140 : get# 2, w$: rem  belegungscode
  82. 3150 : w=asc(w$+chr$(0))
  83. 3160 : for j=1 to 8: rem  dualstellen
  84. 3170 :  w=w/2
  85. 3180 :  if w=int(w) then z(b)=1
  86. 3190 :  if z(b)=0 and a$="n" then a$="": z(b)=1: rem  einen block freihalten
  87. 3195 :  if z(b)=1 and b<19 then l=l-1
  88. 3200 :  b=b+1
  89. 3085 :  w=int(w)
  90. 3220 : next j
  91. 3230 next i
  92. 3310 if l<1 then 8000
  93. 3390 print: print: print "[197]s werden nun";l;" [194]loecke freigestellt !": print
  94. 3990 :
  95. 4000 rem  *****************************
  96. 4010 rem    fuellen der dir.- bloecke
  97. 4020 rem  *****************************
  98. 4021 :
  99. 4025 b=0: rem  blockzaehler, siehe oben
  100. 4027 for e=0 to e(b)-1: rem eintr/block
  101. 4030 at=t(b): rem  alter dir-track
  102. 4035 as=s(b): ns=as: rem  alter sector
  103. 4040 if at=0 and as=0 then 7050
  104. 4050 i=0
  105. 4060 z=e*32+3: rem  stelle des zeigers
  106. 4100 r=0: rem  marke dir.-block aendern
  107. 4150 print# 1, "u1:"2;0;at;as: rem  alt
  108. 4160 print# 1, "b-p:"2,z: rem  zeiger
  109. 4170 get# 2, t$,s$: rem  zeiger forts.
  110. 4180 t=asc(t$+chr$(0))
  111. 4190 s=asc(s$+chr$(0))
  112. 4191 if t=18 then 4670: rem  bearbeitet
  113. 4192 if t=0 or t>35 or s>20 then z=1: goto 4520: rem  fileende
  114. 4200 for i=0 to 18 step 10: rem  suche nach freiem sector im sectorabstand
  115. 4210 : if z(i)=0 then 4500: rem  leer
  116. 4212 : if i=9 then goto 4230
  117. 4215 : if i>8 then i=i-9: goto 4210
  118. 4220 next i
  119. 4230 z=-1: rem  marke: spur 18 voll
  120. 4300 goto 4520: rem  rueck ohne aender.
  121. 4500 print# 1, "b-p:"2,z: rem  zeiger
  122. 4510 print# 2, chr$(18);chr$(i);: rem   zeiger verbiegen
  123. 4515 if at=18 and as=ns then r=1: rem   in den block, aus dem gelesen wurde
  124. 4520 print "      [194]lock";right$("  "+str$(at),3);","right$("  "+str$(as),3);
  125. 4525 if r=1 then print"  [218]eiger";e+1;"geaendert": goto 4570
  126. 4530 print "  -->  18,";right$("  "+str$(ns),3)
  127. 4550 print# 1, "b-a:"0,18,ns:rem in bam
  128. 4560 print# 1, "b-f:"0,at,as: rem  alten block freigeben
  129. 4570 z(i)=1: rem block in liste belegen
  130. 4580 print# 1, "u2:"2;0;18;ns:rem ruec
  131. 4650 at=t: as=s: ns=i: rem  norm. block
  132. 4655 if z=-1 then goto 9000: rem  ok
  133. 4660 if z<>1 then z=0: goto 4100
  134. 4670 next e: rem  neuer dir.-eintrag
  135. 4680 b=b+1: goto 4027: rem  weiter mit naechstem directoryblock
  136. 6990 :
  137. 7000 rem  *****************************
  138. 7010 rem         fehlermeldungen
  139. 7020 rem  *****************************
  140. 7030 :
  141. 7050 print: print "[197]s waren nicht genug belegte [194]locks da."
  142. 7060 print " [211]pur 18 ist immernoch teilweise frei!"
  143. 7090 goto 9000
  144. 7800 print:print:print"[196]ie [196]iskette ist leer!"
  145. 7810 goto 9000
  146. 8000 print "[212]ut mir leid, da ist nichts zu machen."
  147. 8010 print "[196]ie gesamte [211]pur 18 ist voll belegt !"
  148. 9000 print
  149. 9010 close 1: close 2: end
  150.