BBC basic file viewer, disc/tape reading & writing software for PCs (unix, PC DOS/windoze); suggested tape format

1. Software for download

None of the PC DOS/windoze binaries of the programs mentioned will be updated by me. If you use one of those toy OS'es, you should switch to a proper OS like FreeBSD and you can use/compile the latest versions of all programs, except for FDC (anyone want to write a kernel driver for FreeBSD? Well, the kernel floppy driver actually only needs little change to change some floppy settings, but I'm not inclined to do this myself).

1.1 BBC basic file viewer

1.2 Disc reading and disk image manipulation



1.3 Tape reading and tape image manipulation

A new version of bbctape and the other utilities will be released at some point, in particular to get round a bug in the FreeBSD audio driver (8 bit mono 22 kHz doesn't work on my PC so I'm using stereo 16 bit 44kHz now) and compiler changes in GCC which don't allow embedded carriage returns in strings any more, for example. I also want to complete tape image support in various utilities and finish the new program 'bbctapeim' which manipulates tape images. bbctape 0.98 uses Fourier integration to calculate the bits; the results, for bad tapes, of the current test version are excellent compared to the other tape reading programs...

All of the following locally downloadable utilities point to a single zip file (dd 10-05-2001) containing all of them, and are source code only (with makefiles for unix, will probably need a few changes for other operating systems).

2. Software that's not available for download (unix)

2.1 bbccom: communication between unix machine-BBC


3. Suggested tape format

 Tape image format:
   first the identifier:
        - 8 bytes: "BBCTAPE" + terminating 0

   followed by data blocks which consist of:
    byte  0     : block type:
    bytes 1 - 4 : block len (MSB)
    bytes 5 - <block_len-1> : data


   Currently assigned block types (all other information can be inferred by the decoding program):
   block type = 0 : silence
       - 4 bytes : MSB block length (=1+4+4)
       - 4 bytes : MSB duration (ms)

   block type = 1 : bit stream:
       - 4 bytes : MSB block length (=1+4+2+4+ ({nbits} +7)/8)
       - 2 bytes : MSB tone frequency (Hz) (= baud rate)
       - 4 bytes : MSB number of bits in the block
       - { ({nbits} +7)/8 } bytes : data block with the bits

   block type = 2 : standard BBC tape block
       - 4 bytes : MSB block length (=1+4+2+ {tape block size})
       - 2 bytes : MSB tone frequency (Hz) (= baud rate)
       - { tape block size } bytes : data block with the actual tape block

Example tape images

None yet for the above format, but here's a single bitstream of fortress: fortress.tape.zip
    bbctape -w /dev/dsp -T fortress.tape
writes it to line out...

Converting a batch of uef images to tape images is easy:

   for i in *.uef; do uef_extract -t "${i%.uef}.tape"; done

To email me, go to this page

Back

Last modified: Wed Sep 19 23:44:18 CEST 2007