Old hardware: Reading BBC micro diskettes (Also, OT)

Hi,

I have been given a usb floppy disk drive & a bunch of BBC micro diskettes. The drive is a xenta one (allegedly from Amazon, but I can’t find it…). There was apparently someone who posted a review saying they had successfully used it with BBC disks, which is why it was purchased.

I haven’t tried anything yet, I’m assuming the drive will get detected & work just fine. It’s reading the data I’m more interested in.

Does anyone have/know of anyone with any experience of reading the data off these BBC disks? I have googled around and found a few promising leads, but they all seem to mention special floppy drivers in order to read the data off correctly. Also, they’re all really, really old (think 90’s) and mostly reference i386 architecture. I’m using 11.4 x86_64.

The data on the discs is quite precious to their owner (assuming it is still readable, they may have degraded/rotted to the point of decrepitude!), so I don’t want to damage them if I can avoid it.

Thanks in advance!

The file spec is described in Wikipedia and at http://mdfs.net/Docs/Comp/Disk/Format/DFS. Under CP/M plus you could insert a non-standard set of disk parameters into memory and read foreign disks that way. I presume that in Linux you would have to write a driver to do this but I’ve not heard of one. If you can find a PC program that will read BBC disks, you could install FreeDos and then the program and read them that way.

Alternatively, if you can locate a working BBC micro + floppy drive, it should be possible to do a serial connection to DOS and transfer them that way; that was how my first computer files were transferred between an RML380Z and an IBM and later between a PCW512 and a Windows machine - they are now on my Linux machine!

On 2011-11-24 15:06, weighty foe wrote:
> I have googled around and found a few promising
> leads, but they all seem to mention special floppy drivers in order to
> read the data off correctly.

The floppy drive was controlled directly from the cpu, it has no
intelligence of its own. The cpu has to turn the motor on, time the turns,
read at appropriate point… all in software. Indeed you need special
drivers to read floppies made with a different format. If in your searches
you find references to whatever drivers and OS they used, do the same.


Cheers / Saludos,

Carlos E. R.
(from 11.4 x86_64 “Celadon” at Telcontar)

Have been playing with this a bit today.

Can’t seem to get it to work though. Here’s some output, perhaps someone might know what it all ads up to?

Plug in usb floppy & insert a (BBC disk):


tail -f /var/log/messages
... click click whir...
Dec  6 14:59:15 ayreon kernel:  2603.134195] sd 7:0:0:0: [sdb] Unit Not Ready
Dec  6 14:59:15 ayreon kernel:  2603.134208] sd 7:0:0:0: [sdb]  Sense Key : Medium Error [current] 
Dec  6 14:59:15 ayreon kernel:  2603.134219] sd 7:0:0:0: [sdb]  Add. Sense: Cannot read medium - unknown format
.
.
.

Same, with an old MSDOS disk instead:


Dec  6 15:00:58 ayreon kernel:  2706.064471] sd 7:0:0:0: [sdb] 2880 512-byte logical blocks: (1.47 MB/1.40 MiB)
Dec  6 15:00:58 ayreon kernel:  2706.080778] sd 7:0:0:0: [sdb] Assuming drive cache: write through
Dec  6 15:00:58 ayreon kernel:  2706.128670] sd 7:0:0:0: [sdb] Assuming drive cache: write through
Dec  6 15:00:58 ayreon kernel:  2706.272523] ldm_parse_privhead(): Cannot find PRIVHEAD structure. LDM database is corrupt. Aborting.
Dec  6 15:00:58 ayreon kernel:  2706.272537] ldm_validate_privheads(): Cannot find PRIVHEAD 1.
Dec  6 15:00:58 ayreon kernel:  2706.272550]  sdb:

Mount that msdos disk:


# mount -t msdos /dev/sdb /mnt/temp
mount: block device /dev/sdb is write-protected, mounting read-only
# cd /mnt/temp
# ls
..floppy contents listed...
# cd ..
# umount /mnt/temp

Mount the BBC disk:


# mount /dev/sdb /mnt/temp
mount: no medium found on /dev/sdb

I found libdsk (LIBDSK homepage) - a library for reading old disks - and installed it via zypper.
I also found Reading DFS and ADFS floppy disks under Linux and trying a few commands:

BBC disk


# dsktrans /dev/sdb adfs.raw -otype raw -format acorn640
... some checking stuff flashes up here...                                                                            
Opening: Disc rejected by driver.

# dskid /dev/sdb
/dev/sdb: Disc rejected by driver.

MSDOS disk


# dsktrans /dev/sdb adfs.raw -otype raw -format acorn640
Input driver: Raw file driver                                                  
Output driver:Raw file driver
^C^C^C/80 Head 1/2 Sector 000/015 <-- I pressed ctrl+C here to cancel

# dskid /dev/sdb
/dev/sdb:                                                                      
  Driver:      Raw file driver
  Sidedness:      0
  Cylinders:     80
  Heads:          2
  Sectors:       18
  First sector:   1
  Sector size:  512
  Data rate:      2
  Record mode:  MFM
  R/W gap:     0x1b
  Format gap:  0x50

  Drive status:  0x68

So, does this mean:
That libdsk can’t read the bbc filesystem (software issue), or
The bbc disk is damaged (media problem), or
The floppy drive can’t read the kind of disk the BBC uses (hardware issue) or?

The floppy says on it, by way of reference,
MF2DD
Double Sided
Double Density
135 TPI (80 Tr.)

Which I’m assuming means an 80 track double sided, double density disk

Any information is gratefully received!

I’m reasonably sure the answer is that the software cannot read the BBC format because it was so unconventional at the time; double sided, double density is meaningless in the sense that BBC single sided, single density was so different from any other single sided, single density disk at the time. (Most other formats were extensions of the IBM 8" disk format - the BBC went its own way).

libdsk will read BBC diskettes, but not on a USB floppy drive – it needs a PC motherboard floppy controller. USB floppy drives don’t support the FDRAWCMD ioctl, which libdsk uses for low-level floppy access.

Thanks for that very helpful information and welcome to the forum.

@johncelliott

Ah! Thanks for that bit of info. I’d have been wasting my time completely trying to get it to work - thanks very much & welcome to the forums as well.
So my next move is to find a PC with a built in floppy drive.

@john_hudson

Thanks for the info on the BBC disk format. I have to say I was under the impression libdsk could handle it, and was becoming confused about the output it was giving me. The above reply makes everything suddenly clear to me :slight_smile:

Thanks both.

On 2011-12-13 12:36, weighty foe wrote:
> So my next move is to find a PC with a built in floppy drive.

The drives are cheap. You just need a board with the socket and plug it in.


Cheers / Saludos,

Carlos E. R.
(from 11.4 x86_64 “Celadon” at Telcontar)