Fluxengine scratchpad



fluxengine read ibm  -s lmz-inglese.flux:t=0-76 --overwrite -o prova5.img:c=77:h=2:s=16:b=512
cpmls -f diskformatwemade  prova5.img

root@rover:/home/asbesto/Desktop/cattolica/importanti1# head -n 10 /etc/cpmtools/diskdefs
diskdef diskformatwemade
  seclen 1024
  tracks 77
  sectrk 16
  blocksize 1024
  maxdir 64
  skew 1
  boottrk 2
  os 2.2

 fluxengine read ibm -s dade01.flux:t=0-76 -o dadeprova.img:c=77:h=2:s=16:b=512

strings dell'originale 2 mega:

 strings dade01.img > dade01.strings

strings della prova fatta specificando parametri come sotto:

  strings dadeprova.img > dadeprova.strings
  ls -la
  diff dadeprova.strings dade01.strings | less
sono diversi!!!

skippiamo la prima traccia:

  513  fluxengine read ibm -s dade01.flux:t=1-76 -o dadeprova176.img:c=76:h=2:s=16:b=512
  514  fluxengine read ibm -s dade01.flux:t=1-76 -o dade176.img
  515  strings dade176.img > dade176.strings
  516  strings dadeprova176.img > dadeprova176.strings
  518  diff dade176.strings  dadeprova176.strings

gli strings sono identici! QUINDI unica differenza traccia zero!

  519  less dade01.log

che infatti e' letta diversamente:

  0.0: 497.724 ms in 203840 bytes
       154 records, 77 sectors; 2.01us clock (497kHz);
       logical track 0.0; 3328 bytes decoded.
  0.1: 497.694 ms in 189696 bytes
       155 records, 77 sectors; 1.00us clock (1000kHz);
       logical track 0.1; 6656 bytes decoded.
  1.0: 497.486 ms in 191872 bytes
       96 records, 48 sectors; 1.01us clock (993kHz);
       logical track 1.0; 8192 bytes decoded.
  1.1: 497.39 ms in 191680 bytes
       96 records, 48 sectors; 1.00us clock (996kHz);
       logical track 1.1; 8192 bytes decoded.

Hardware connections

How to turn on

Turn on the FD FIRST, and connect the fluxengine usb cable AFTER. Drive must turn LED on for about 2 seconds, eventually parking the head.

If LED is fixed ON, this means some cable are upside down!

./fluxengine rpm must read the rpm speed. DO IT WITH A DISK INSIDE

Test cases

8 inches

Sometimes 77

This is OK

svg test

FINAL Automatic script to dump disks :)

echo usage: leggi name

# normale 0.2, --bit-error-threshold=0.4 da provare in caso di errori
# :s=0 single side read

fluxengine read ibm -s:t=0-77 --retries=100 --revolutions=5 --bit-error-threshold=0.4 --overwrite --write-flux=$nome.flux -o $nome.img 1>$nome.log 2>&1 &
#fluxengine read ibm -s:t=0-77 --retries=10 --revolutions=5 --bit-error-threshold=0.4 --overwrite --write-flux=$nome.flux -o $nome.img 1>$nome.log 2>&1 &
#fluxengine read ibm -s:t=0-77 --retries=5 --revolutions=5 --bit-error-threshold=0.5 --overwrite --write-flux=$nome.flux -o $nome.img 1>$nome.log 2>&1 &
tail -f $nome.log

# --revolutions=X: when reading, spin the disk X times.  X can be a floating
# point number.  The default is usually 1.25.  Some formats default to 1.
# Increasing the number will sample more data, and can be useful on dubious
# disks to try and get a better read.
# --pulse-debounce-threshold controls whether FluxEngine ignores pairs of
# pulses in rapid succession.  This is common on some disks (I've
# observed them on Brother word processor disks).
# --clock-interval-bias adds a constant bias to the intervals between pulses
# before doing decodes.  This is very occasionally necessary to get clean
# reads - for example, if the machine which wrote the disk always
# writes pulses late.  If you try this, use very small numbers (e.g.  0.02).
# Negative values are allowed.
# Both these parameters take a fraction of a clock as a parameter, and
# you'll probably never need to touch them.


for i in $(seq 1 20) ; do

fluxengine seek -t 77
fluxengine seek -t 0


Copy files

mkdir test

cpmcp prove.img 0:* test


Utility to read / manage those disk images: https://ucsd-psystem-fs.sourceforge.net/

it compiles under GNU/Linux: configure, make, make install. (install missing libraries if required)

Mount a disk image

((( ucsdpsys_mount box_05/05.06.img /mnt }}}

Converting files

Example is for a TEXT file

Always copy the file on another place, if not, you will edit the disk image

 cp SQ.TEXT /tmp

 cd \tmp

 ucsdpsys_text -d SQ.TEXT 

 less SQ.TEXT 

and there it is! ;)


UCSD Utils

UCSD converting TEXT format to readable

For every directory:

verde@vera:~/fluxengine/kowalski/box_11.files$ cd 11.07
verde@vera:~/fluxengine/kowalski/box_11.files/11.07$ mkdir DOCS && cp *TEXT DOCS && cd DOCS && for a in *TEXT; do ucsdpsys_text -d $a  ; done && ls && cd ../..

the command is just

ucsdpsys_text -d FILENAME.TEXT

BEWARE: the ucsdpsys_text utility OVERWRITE the original file. It can also be used to ENCODE the .TEXT file back in the compressed form.


for a in LIZMIT OTTO PHOTO PIOTR PIOTR2 RESTANY SAKANE ; do convert -depth 8 -size 256x128+0 gray:$a  $a.png ; done

New (latest) firmware conversion for syntax, tricks etc.

David Given (dg@cowlark.com) says:

Wow, you've been using a really old version of the client! That syntax predates the previous syntax change! Try this:

./fluxengine read ibm --1200 --cylinders=0-77 --decoder.retries=10 --decoder.bit_error_threshold=0.4 --drive.revolutions=5 --copy-flux-to=output.flux

The --1200 specifies which IBM format to use --- see https://cowlark.com/fluxengine/doc/disk-ibm.html

It is possible to autodetect this but it works very badly, which was why I changed it. If you have a specific format in mind then the best thing is to produce a custom format describing it; that way FluxEngine can know whether to retry or not, giving more accurate reads. I can help with that; what platform are you reading disks for?


FluxengineAppunti (last edited 2023-07-22 15:01:26 by asbesto)