100 REM ************************** 110 REM * * 120 REM * * 130 REM * DISK FUELLER * 140 REM * * 150 REM * * 160 REM * * 170 REM * VON UWE GERLACH * 180 REM * * 190 REM * BRUEHLSTR. 23 * 200 REM * * 210 REM * * 220 REM * 6440 BEBRA 1 * 230 REM * * 240 REM * * 250 REM * * 260 REM * * 270 REM * IM APRIL 1985 * 280 REM * * 290 REM * * 300 REM ************************** 400 : 500 : 1000 POKE53280,0: POKE53281,0: REM FARBE 1010 PRINT CHR$(14);"[147][152] [214][195] 1541 [196] I S K [198] U E L L E R":PRINT:PRINT:PRINT 1015 PRINT"[196]IESES [208]ROGRAMM WURDE GESCHRIEBEN VON:":PRINT:PRINT 1020 PRINT,"[154] [213]WE [199]ERLACH": PRINT," [194]RUEHLSTR. 23": PRINT: PRINT," 6440 [194]EBRA 1[152]" 1025 PRINT:PRINT:PRINT"[197]S SCHAFFT AUF VOLLEN [196]ISKETTEN NOCH" 1030 PRINT"ETWAS [208]LATZ, INDEM ES DIE EIGENTLICH" 1035 PRINT"FUER DAS [196]IRECTORY VORGESEHENE [211]PUR 18" 1040 PRINT"BELEGT.":PRINT:PRINT 1045 : 1050 OPEN 1,8,15,"I": REM FUER BEFEHLE 1060 OPEN 2,8,2,"#" : REM PUFFERKANAL 1090 : 1100 REM ***************************** 1110 REM DIRECTORYLAENGE ERMITTELN 1120 REM ***************************** 1130 : 2000 DIM T(25): DIM S(25): DIM E(25) 2010 PRINT# 1, "U1:"2;0;18;0: REM BAM 2020 GET# 2,T$,S$: REM ZEIGER AUF DIR. 2030 T(0)=ASC(T$+CHR$(0)): REM TRACK 2040 S(0)=ASC(S$+CHR$(0)): REM SECTOR 2050 T=T(0): REM TRACK DIR. ANFANG 2060 S=S(0): REM SECTOR DIR. ANFANG 2070 B=1: REM BLOCKZAEHLER 2100 PRINT# 1, "U1:"2;0;T;S 2110 GET# 2,T$,S$: REM ZEIGER 2120 T=ASC(T$+CHR$(0)) 2130 S=ASC(S$+CHR$(0)) 2140 IF T=0 OR T>35 OR S>20 OR B=25 THEN 2400: REM LETZTER DIRECTORY-BLOCK 2150 T(B)=T: S(B)=S: REM ZEIGER MERKEN 2155 E(B-1)=8: REM EINTRAEGE IM BLOCK 2160 B=B+1: REM ZAEHLER ERHOEHEN 2190 GOTO 2100 : REM NAECHSTER BLOCK 2400 M=B: REM DIR. BLOCKZAHL 2500 F=0: REM ZAEHLER FREIE EINTRAEGE 2510 FOR I=2 TO 226 STEP 32 2520 : PRINT# 1, "B-P:"2,I: REM ZEIGER 2530 : GET# 2,W$: REM FILETYP 2540 : IF W$="" THEN F=F+1: REM FREI 2590 NEXT I: REM ALLE EINTR. IM BLOCK 2600 E(B-1)=8-F: REM EINTRAEGE/BLOCK 2610 IF F=8 AND M=1 THEN 7800: REM LEER 2700 PRINT "[199]ENUEGEN";F;"FREIE [196]IRECTORY-[208]LAETZE ? "; 2750 GET A$: IF A$="" THEN 2750 2760 IF A$<>"N" THEN A$="J" 2770 PRINT A$: PRINT: PRINT: PRINT 2790 : 3000 REM ***************************** 3010 REM LEERE DIR. BLOECKE FESTST. 3020 REM ***************************** 3030 : 3050 PRINT# 1, "U1:"2;0;18;0: REM BAM 3060 PRINT# 1, "B-P:"2,73: REM SPUR 18 3100 B=0 : REM BLOCKZAEHLER 3110 L=19: REM ZAHL LEERE DIR-BLOECKE 3120 DIM Z(25): REM ZUSTAND DER BLOCKS 3130 FOR I=1 TO 3: REM BYTES SPUR 18 3140 : GET# 2, W$: REM BELEGUNGSCODE 3150 : W=ASC(W$+CHR$(0)) 3160 : FOR J=1 TO 8: REM DUALSTELLEN 3170 : W=W/2 3180 : IF W=INT(W) THEN Z(B)=1 3190 : IF Z(B)=0 AND A$="N" THEN A$="": Z(B)=1: REM EINEN BLOCK FREIHALTEN 3195 : IF Z(B)=1 AND B<19 THEN L=L-1 3200 : B=B+1 3085 : W=INT(W) 3220 : NEXT J 3230 NEXT I 3310 IF L<1 THEN 8000 3390 PRINT: PRINT: PRINT "[197]S WERDEN NUN";L;" [194]LOECKE FREIGESTELLT !": PRINT 3990 : 4000 REM ***************************** 4010 REM FUELLEN DER DIR.- BLOECKE 4020 REM ***************************** 4021 : 4025 B=0: REM BLOCKZAEHLER, SIEHE OBEN 4027 FOR E=0 TO E(B)-1: REM EINTR/BLOCK 4030 AT=T(B): REM ALTER DIR-TRACK 4035 AS=S(B): NS=AS: REM ALTER SECTOR 4040 IF AT=0 AND AS=0 THEN 7050 4050 I=0 4060 Z=E*32+3: REM STELLE DES ZEIGERS 4100 R=0: REM MARKE DIR.-BLOCK AENDERN 4150 PRINT# 1, "U1:"2;0;AT;AS: REM ALT 4160 PRINT# 1, "B-P:"2,Z: REM ZEIGER 4170 GET# 2, T$,S$: REM ZEIGER FORTS. 4180 T=ASC(T$+CHR$(0)) 4190 S=ASC(S$+CHR$(0)) 4191 IF T=18 THEN 4670: REM BEARBEITET 4192 IF T=0 OR T>35 OR S>20 THEN Z=1: GOTO 4520: REM FILEENDE 4200 FOR I=0 TO 18 STEP 10: REM SUCHE NACH FREIEM SECTOR IM SECTORABSTAND 4210 : IF Z(I)=0 THEN 4500: REM LEER 4212 : IF I=9 THEN GOTO 4230 4215 : IF I>8 THEN I=I-9: GOTO 4210 4220 NEXT I 4230 Z=-1: REM MARKE: SPUR 18 VOLL 4300 GOTO 4520: REM RUECK OHNE AENDER. 4500 PRINT# 1, "B-P:"2,Z: REM ZEIGER 4510 PRINT# 2, CHR$(18);CHR$(I);: REM ZEIGER VERBIEGEN 4515 IF AT=18 AND AS=NS THEN R=1: REM IN DEN BLOCK, AUS DEM GELESEN WURDE 4520 PRINT " [194]LOCK";RIGHT$(" "+STR$(AT),3);","RIGHT$(" "+STR$(AS),3); 4525 IF R=1 THEN PRINT" [218]EIGER";E+1;"GEAENDERT": GOTO 4570 4530 PRINT " --> 18,";RIGHT$(" "+STR$(NS),3) 4550 PRINT# 1, "B-A:"0,18,NS:REM IN BAM 4560 PRINT# 1, "B-F:"0,AT,AS: REM ALTEN BLOCK FREIGEBEN 4570 Z(I)=1: REM BLOCK IN LISTE BELEGEN 4580 PRINT# 1, "U2:"2;0;18;NS:REM RUEC 4650 AT=T: AS=S: NS=I: REM NORM. BLOCK 4655 IF Z=-1 THEN GOTO 9000: REM OK 4660 IF Z<>1 THEN Z=0: GOTO 4100 4670 NEXT E: REM NEUER DIR.-EINTRAG 4680 B=B+1: GOTO 4027: REM WEITER MIT NAECHSTEM DIRECTORYBLOCK 6990 : 7000 REM ***************************** 7010 REM FEHLERMELDUNGEN 7020 REM ***************************** 7030 : 7050 PRINT: PRINT "[197]S WAREN NICHT GENUG BELEGTE [194]LOCKS DA." 7060 PRINT " [211]PUR 18 IST IMMERNOCH TEILWEISE FREI!" 7090 GOTO 9000 7800 PRINT:PRINT:PRINT"[196]IE [196]ISKETTE IST LEER!" 7810 GOTO 9000 8000 PRINT "[212]UT MIR LEID, DA IST NICHTS ZU MACHEN." 8010 PRINT "[196]IE GESAMTE [211]PUR 18 IST VOLL BELEGT !" 9000 PRINT 9010 CLOSE 1: CLOSE 2: END