[BBC-Micro] ANN: AFSFiler

Alan Williams awilliams at linkme.com.au
Tue Aug 7 01:46:55 BST 2012

> (We've got builders in at the moment, so nothing is where I can use it!)
Likewise.  We are up to plasters and painters thank god.

I took a image of my E20 & E60 using a RISC PC, I can't remember if I used
the Acorn SCSI podule or the ANT parallel Ethernet in the end. But it wasn't
awfully difficult.  Probably about a 10 line basic program.  I can search
for that if its of any help.  It would probably be simpler if the SCSI card
was in a unix box of some sort you could then just use dd.

Neither of my Filestores will boot any more so I had to find another way of
searching them for stuff.  I was looking for the DR-DOS Econet support for
the 80186 co-processor, but to no avail.  This appears to be digitally

Once on RISC OS I copied the image to a FreeBSD box and I have a PHP page
which can read a number of Acorn file systems including L2, L3 and

This is what is sort of looks like in a browser.

Disc images

Say we click on RO3085.sfs  (looks better in a table)

Image file: RO83085.sfs
Disc: FS
Dir: $
!ArmBoot FFFFEB42 F267C084 WR/  000001EA 001F81 H T B S I 
!RunImage FFFFFB42 7B0BCA97 WR/  00006968 002761 H T B S I 
Acorn 00000000 00000000 D/  00000200 002F41 H T B S I 
ALVI 00000000 00000000 DL/  00000200 03A143 H T B S I 
ArthurLib 00000000 00000000 D/  000002EA 002F44 H T B S I 
BACH FFFF1B00 FFFF8023 WR/  00001065 0056A5 H T B S I 
Barson 00000000 00000000 DL/  00000200 008DC5 H T B S I 
BGETTST FFFF1B00 FFFF8023 WR/  00000045 014B09 H T B S I 
broad 00000000 00000000 D/  00000200 025EA9 H T B S I 
CardProbe FFFFFB43 B7126122 WR/  00000511 0113EC H T B S I 
CAT FFFFFB44 C4D988C1 WR/  000001A0 017A4C H T B S I 
Ccmp106 00000000 00000000 DL/  00000200 023F2C H T B S I 
CH FFFFF942 4B417514 WR/  00005048 00BD5A H T B S I 
CHAOS FFFFFB42 4B417A7E WR/  00000298 01A1BA H T B S I 
COMPACT 00000000 00000000 DL/  00000200 01A99A H T B S I 
Conv 00000000 00000000 DL/  00000200 00E4C9 H T B S I 
Examine1 FFFFFB43 6C12D597 WR/  000003F3 007E70 H T B S I 
FNCMP FFFFFB42 7B0B9CBB WR/  0000010F 009610 H T B S I 
FrontEnd 00000000 00000000 DL/  00000200 012BB0 H T B S I 
FS_OP_33 FFFFFB42 BE70AC57 WR/  00000313 00B5A7 H T B S I 
FS_OP_34 FFFFFB42 BE70A40F WR/  00000313 019A07 H T B S I 
Games 00000000 00000000 DL/  00000200 01C167 H T B S I 
JonMon 00000000 00000000 DL/  00000200 011430 H T B S I 
Library 00000000 00000000 D/  000007FE 015330 H T B S I 
Library1 00000000 00000000 DL/  00000200 005775 H T B S I 
M 00009000 00009000 WR/  00040000 028E76 H T B S I 
Mail 00000000 00000000 DL/  00000200 039256 H T B S I 
Manager 00000000 00000000 DL/  00000200 005779 H T B S I 
MSDOS 00000000 00000000 D/  000003EE 02D55B H T B S I 
NETCHAT FFFF1200 FFFF802B WR/  00002E93 0247AF H T B S I 
NETMAIL 00000000 00000000 D/  00000200 02AE0F H T B S I 
ObjInfo5 FFFF1B00 FFFF8023 WR/  0000037C 003810 H T B S I 
Passwords 00000000 00000000 LR/  00000800 00AE30 H T B S I 
Pet 00000000 00000000 DL/  000004F2 00DD70 H T B S I 
PGC 00001B00 00001B00 WR/  00000000 016356 H T B S I 
Public 00000000 00000000 DL/  00000200 0208B6 H T B S I 
PWFILE 00000000 00000000 LR/R  00000700 02F4FF H T B S I 
RAMDISC 01000000 01000000 WR/  00030000 0010C0 H T B S I 
ROOT FFFFFD43 4EC61187 WR/  000007FE 00F520 H T B S I 
SendMail FFFFFB44 C8DCF4A1 WR/R  00001CA6 0104E0 H T B S I 
SF-WhoAmI FFFF1B00 FFFF1B00 WR/  00000172 0114A0 H T B S I 
Software 00000000 00000000 DL/  00000200 0153A0 H T B S I 
SoftwareWR 00000000 00000000 DL/  00000200 024831 H T B S I 
Spooler FFFFFB42 7B13E141 WR/  00000F69 03B286 H T B S I 
SPOOLTEST FFFFFB42 7B31BE78 WR/  00000041 010567 H T B S I 
Time 00000000 00000000 D/  000002EA 01DA37 H T B S I 
Tools 00000000 00000000 DL/  00000200 01A2E7 H T B S I 
TRIAL 00000000 00000000 D/  00000200 023895 H T B S I 
Utils 00000000 00000000 DL/  00000200 00FD97 H T B S I 
VALIAN1 00002000 00002000 WR/  00000800 027F7F H T B S I 
ViewData 00000000 00000000 DL/  00000200 035BFF H T B S I 
WhoAmI 00000A00 00000A00 WR/  00000050 011557 H T B S I 
X 00008000 00008000 WR/  00002000 017BB7 H T B S I 
Z 00002000 00002000 R/  00001000 01B2D7 H T B S I 

Say we want to look at FS_OP_33 and we think its Basic then the 'B' at the
end of the line will list it.

BASIC listing - FS_OP_33
    10 REM > FS_OP_33
    20 DIMX%100:Y%=X%DIV256:A%=&14
    30 ARM%=160=(&FF AND(INKEY-256))
    50 X%?0=0
    60 X%?1=35 :REM SIZE OF BLOCK
    80 X%?3=33 :REM FUNCION CODE
    90 X%!4=0  :REM CONTEXT
   110 REM X%?7=S%
   120 $(X%+7)="SYST"
   130 PROC_FS_OP
   150 PRINT" Return block size is &";~X%?1
   160 PRINT" Command code is      &";~X%?2
   170 PRINT" Return code is       &";~X%?3
   180 IF X%?3<>0 THEN PRINT" Error is ";$(X%+4):END
   200 PRINT~X%?4
   210 PRINT~X%?5
   220 PRINT~X%?6
   230 PRINT~X%?7
   240 PRINT~X%?8
   250 PRINT~X%?9
   260 PRINT~X%?10
   270 PRINT~X%?11
   280 END
   310 REM This proc has Archimedes BASIC code in it.
   320 REM It will not list properly on 6502 computers.
   340 REM SYS"NetFS_DoFSOp",X%?3,X%+7,(X%?1)-7,240 TO X%?3,,,X%?1
   350 SYS"NetFS_DoFSOp",X%?3,X%+7,(X%?1)-7,240 TO X%?3,,,X%?1
   360 FORC%=X%+4TOX%+4+(X%?1)-1:?C%=C%?3:NEXT:ENDPROC

You can also use 'H' for a hex dump of the file, 'T' for text dump, 'S' for
save and 'I' for save the Acorn metadata (Info) for the file.

>> It should do, As far as all the documentation I've examined says, the 
>> FileStore just uses a L3FS filesystem, and documentation makes me 
>> understand that a FileStore hard drive is just a BBC SCSI drive, so is 
>> pluggable into a BBC SCSI hard drive interface.
> The E20s I have are the older 1MHz bus type drives, with on-board scsi
interface, so even
> easier.  I've been waiting to peek at them without actually risking firing
them up on a
> filestore.  This will definitely help...  (But how long to copy 20MB over

The only difference that I can remember between L3 and FS formats is that
the FS disk makes room for the parent directory sin.

Actually E20 are 2MHzE bus. But they are easier to deal with if you take
them out of the box and just use the SCSI bus.  At one point I had a driver
that would talk to them from the 1MhzE bus on the Archimedes IO Podule, but
my IO Podule is one of the ones that won't work in an ARM 3 machine and I
only have RPCs and A540s working.  In one it won't fit the other it won't
work :-(

At present I would say discreader.php is 'intranet' quality code, I would
have to look carefully over it for possible exploits before using it on a
public site though it was part of my original aim to make the contents of
disc images visible to the google bot.  Hast has probably go the better of
me.  If anybody wants it I will put it up for download somewhere.


More information about the bbc-micro mailing list