Home » Archimedes archive » Micro User » MU 1992-01.adf » PDstuffing » ArcFSExtra/BgArcFS104
ArcFSExtra/BgArcFS104
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Micro User » MU 1992-01.adf » PDstuffing |
Filename: | ArcFSExtra/BgArcFS104 |
Read OK: | ✔ |
File size: | 02BE bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There are 2 duplicate copies of this file in the archive:
- Archimedes archive » Micro User » MU 1991-12.adf » PD-Stuff » ArcFSExtra/BgArcFS104
- Archimedes archive » Micro User » MU 1992-01.adf » PDstuffing » ArcFSExtra/BgArcFS104
- Archimedes archive » Micro User » MU 1992-02.adf » PD » ArcFSExtra/BgArcFS104
File contents
5 REM >BgArcFS104 10 MODE 0 20 DIM pointers(200) 25 PRINT "Recovery of files lost by the bug in ArcFS v1.04"'' 30 INPUT "Archive pathname ? "N$ 40 X=OPENUP(N$) 50 PTR#X=8 60 pointers(0)=BGET#X OR (BGET#X<<8) OR (BGET#X<<16) OR (BGET#X<<24) 65 pointers(0)+=96 70 level%=1 80 PTR#X=&60 90 REPEAT 95 byte%=BGET#X 97 PTR#X=PTR#X+&1F 100 word=(BGET#X) OR (BGET#X<<8) OR (BGET#X<<16) OR (BGET#X<<24) 105 levelend%=FALSE 110 IF byte%=0 THEN 130 IF PTR#X<>pointers(level%-1) THEN PROCerror ELSE level%-=1:levelend%=TRUE 140 ENDIF 150 IF (NOT levelend%) AND byte%<>1 THEN 160 IF (word<0) THEN pointers(level%)=(word-&80000000)+96:level%+=1 170 ENDIF 180 UNTIL level%=0 190 CLOSE#X 200 END 500 DEFPROCerror 510 PTR#X=PTR#X-36 520 PRINT "Removing end-of-directory marker at &";~PTR#X;" level ";level%-1 530 BPUT#X,1:PTR#X=PTR#X+35 540 ENDPROC
� >BgArcFS104 � 0 � pointers(200) ; � "Recovery of files lost by the bug in ArcFS v1.04"'' � "Archive pathname ? "N$ ( X=�(N$) 2 �#X=8 <7 pointers(0)=�#X � (�#X<<8) � (�#X<<16) � (�#X<<24) A pointers(0)+=96 F level%=1 P �#X=&60 Z � _ byte%=�#X a �#X=�#X+&1F d2 word=(�#X) � (�#X<<8) � (�#X<<16) � (�#X<<24) i levelend%=� n � byte%=0 � �? � �#X<>pointers(level%-1) � �error � level%-=1:levelend%=� � � �! � (� levelend%) � byte%<>1 � �@ � (word<0) � pointers(level%)=(word-&80000000)+96:level%+=1 � � � � level%=0 � �#X � � � ��error � �#X=�#X-36 F � "Removing end-of-directory marker at &";~�#X;" level ";level%-1 �#X,1:�#X=�#X+35 � �
00000000 0d 00 05 12 20 f4 20 3e 42 67 41 72 63 46 53 31 |.... . >BgArcFS1| 00000010 30 34 0d 00 0a 08 20 eb 20 30 0d 00 14 14 20 de |04.... . 0.... .| 00000020 20 70 6f 69 6e 74 65 72 73 28 32 30 30 29 0d 00 | pointers(200)..| 00000030 19 3b 20 f1 20 22 52 65 63 6f 76 65 72 79 20 6f |.; . "Recovery o| 00000040 66 20 66 69 6c 65 73 20 6c 6f 73 74 20 62 79 20 |f files lost by | 00000050 74 68 65 20 62 75 67 20 69 6e 20 41 72 63 46 53 |the bug in ArcFS| 00000060 20 76 31 2e 30 34 22 27 27 0d 00 1e 1e 20 e8 20 | v1.04"''.... . | 00000070 22 41 72 63 68 69 76 65 20 70 61 74 68 6e 61 6d |"Archive pathnam| 00000080 65 20 3f 20 22 4e 24 0d 00 28 0c 20 58 3d ad 28 |e ? "N$..(. X=.(| 00000090 4e 24 29 0d 00 32 0a 20 cf 23 58 3d 38 0d 00 3c |N$)..2. .#X=8..<| 000000a0 37 20 70 6f 69 6e 74 65 72 73 28 30 29 3d 9a 23 |7 pointers(0)=.#| 000000b0 58 20 84 20 28 9a 23 58 3c 3c 38 29 20 84 20 28 |X . (.#X<<8) . (| 000000c0 9a 23 58 3c 3c 31 36 29 20 84 20 28 9a 23 58 3c |.#X<<16) . (.#X<| 000000d0 3c 32 34 29 0d 00 41 14 20 70 6f 69 6e 74 65 72 |<24)..A. pointer| 000000e0 73 28 30 29 2b 3d 39 36 0d 00 46 0d 20 6c 65 76 |s(0)+=96..F. lev| 000000f0 65 6c 25 3d 31 0d 00 50 0c 20 cf 23 58 3d 26 36 |el%=1..P. .#X=&6| 00000100 30 0d 00 5a 06 20 f5 0d 00 5f 0e 20 62 79 74 65 |0..Z. ..._. byte| 00000110 25 3d 9a 23 58 0d 00 61 10 20 cf 23 58 3d 8f 23 |%=.#X..a. .#X=.#| 00000120 58 2b 26 31 46 0d 00 64 32 20 77 6f 72 64 3d 28 |X+&1F..d2 word=(| 00000130 9a 23 58 29 20 84 20 28 9a 23 58 3c 3c 38 29 20 |.#X) . (.#X<<8) | 00000140 84 20 28 9a 23 58 3c 3c 31 36 29 20 84 20 28 9a |. (.#X<<16) . (.| 00000150 23 58 3c 3c 32 34 29 0d 00 69 10 20 6c 65 76 65 |#X<<24)..i. leve| 00000160 6c 65 6e 64 25 3d a3 0d 00 6e 10 20 e7 20 62 79 |lend%=...n. . by| 00000170 74 65 25 3d 30 20 8c 0d 00 82 3f 20 e7 20 8f 23 |te%=0 ....? . .#| 00000180 58 3c 3e 70 6f 69 6e 74 65 72 73 28 6c 65 76 65 |X<>pointers(leve| 00000190 6c 25 2d 31 29 20 8c 20 f2 65 72 72 6f 72 20 8b |l%-1) . .error .| 000001a0 20 6c 65 76 65 6c 25 2d 3d 31 3a 6c 65 76 65 6c | level%-=1:level| 000001b0 65 6e 64 25 3d b9 0d 00 8c 06 20 cd 0d 00 96 21 |end%=..... ....!| 000001c0 20 e7 20 28 ac 20 6c 65 76 65 6c 65 6e 64 25 29 | . (. levelend%)| 000001d0 20 80 20 62 79 74 65 25 3c 3e 31 20 8c 0d 00 a0 | . byte%<>1 ....| 000001e0 40 20 e7 20 28 77 6f 72 64 3c 30 29 20 8c 20 70 |@ . (word<0) . p| 000001f0 6f 69 6e 74 65 72 73 28 6c 65 76 65 6c 25 29 3d |ointers(level%)=| 00000200 28 77 6f 72 64 2d 26 38 30 30 30 30 30 30 30 29 |(word-&80000000)| 00000210 2b 39 36 3a 6c 65 76 65 6c 25 2b 3d 31 0d 00 aa |+96:level%+=1...| 00000220 06 20 cd 0d 00 b4 0f 20 fd 20 6c 65 76 65 6c 25 |. ..... . level%| 00000230 3d 30 0d 00 be 08 20 d9 23 58 0d 00 c8 06 20 e0 |=0.... .#X.... .| 00000240 0d 01 f4 0c 20 dd f2 65 72 72 6f 72 0d 01 fe 0f |.... ..error....| 00000250 20 cf 23 58 3d 8f 23 58 2d 33 36 0d 02 08 46 20 | .#X=.#X-36...F | 00000260 f1 20 22 52 65 6d 6f 76 69 6e 67 20 65 6e 64 2d |. "Removing end-| 00000270 6f 66 2d 64 69 72 65 63 74 6f 72 79 20 6d 61 72 |of-directory mar| 00000280 6b 65 72 20 61 74 20 26 22 3b 7e 8f 23 58 3b 22 |ker at &";~.#X;"| 00000290 20 6c 65 76 65 6c 20 22 3b 6c 65 76 65 6c 25 2d | level ";level%-| 000002a0 31 0d 02 12 15 20 d5 23 58 2c 31 3a cf 23 58 3d |1.... .#X,1:.#X=| 000002b0 8f 23 58 2b 33 35 0d 02 1c 06 20 e1 0d ff |.#X+35.... ...| 000002be