home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh2x / sh24a.d64 / disk-fueller (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  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.