Fluxengine scratchpad
Contents
Resources
Notes
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 end
fluxengine read ibm -s dade01.flux:t=0-76 -o dadeprova.img:c=77:h=2:s=16:b=512 ls 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
- Flat cable pin 1 to the micro-USB side.
- Non-inverted floppy connection to the drive! Red wire to the dent side. This is the same for 5"1/4 and 8" disks.
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
- IBM PC 360K disk on 360KB drive: ./fluxengine read ibm -s:t=0-40 -o test.img
- ???IBM PC 1.2MB on 1.2MB drive: ./fluxengine read ibm -o test.img (to be tested)
- IBM PC 360K Floppy disk on a 1.2MB DRIVE: ./fluxengine read ibm -s:t=0-79x2 -o test.img Read data and flux, IBM PC 360KB Disk on 360K drive:
- fluxengine read ibm -s:t=0-40 --retries=0 --revolutions=10 --overwrite --write-flux=testdisk.flux
- Olivetti M20: using 1.2MB disk drive: fluxengine read ibm --retries=10 --revolutions=10 --write-flux=testdisk.flux
8 inches
- fluxengine read ibm -s:t=0-76 --retries=1 --revolutions=3 --overwrite --write-flux=prova.flux -o prova.img
Sometimes 77
This is OK
- name="prova"; fluxengine read ibm --retries=1 --revolutions=3 --overwrite --write-flux=$name.flux --visualiser-period=167 --write-svg=$name.svg -o $name.img
svg test
- seq 1 380 | while read i; do fluxengine read ibm -s prova.flux --visualiser-period=$i --write-svg=$i.svg ; done
FINAL Automatic script to dump disks :)
echo usage: leggi name nome=$1 # 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.
HEAD CLEANER
for i in $(seq 1 20) ; do fluxengine seek -t 77 fluxengine seek -t 0 done
Copy files
mkdir test cpmcp prove.img 0:* test
UCSD PASCAL SYSTEM NOTES
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!
KOWALSKI
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.
PICTURE CONVERSION
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?