home *** CD-ROM | disk | FTP | other *** search
- 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
-