slitaz-forge diff mirror/floppies/resizefdset.sh @ rev 716

mirror/floppies: multi-format support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Jul 23 16:41:12 2021 +0000 (2021-07-23)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/mirror/floppies/resizefdset.sh	Fri Jul 23 16:41:12 2021 +0000
     1.3 @@ -0,0 +1,38 @@
     1.4 +#!/bin/sh
     1.5 +
     1.6 +[ -z "$1" ] &&
     1.7 +echo "Usage: $0 [360|720|1200|2880]   resize a floppy disk set" && exit 2
     1.8 +i=0
     1.9 +while [ $(cat fd$i*.img 2> /dev/null | wc -c) -ne 0 ]; do
    1.10 +	cat fd$i*.img | split -b ${1}k - fdx$$ 
    1.11 +	n=0; [ $i -eq 0 ] && n=1
    1.12 +	for f in fdx$$* ; do
    1.13 +		[ -z "$(hexdump -C $f | sed 4!dq)" ] && rm $f && continue
    1.14 +		x=fd$i$(printf "%02d" $n).$1
    1.15 +		mv $f $x
    1.16 +		dd of=$x bs=1k seek=$1 count=0 2> /dev/null
    1.17 +		ls -l $x
    1.18 +		n=$(($n+1))
    1.19 +	done
    1.20 +	i=$(($i+1))
    1.21 +done
    1.22 +trk=80
    1.23 +[ $1 -lt 720 ] && trk=40
    1.24 +false && for i in $(seq 0 9) ; do
    1.25 +	[ $(($1%($trk+$i))) -eq 0 ] || continue
    1.26 +	for j in 362 369 ; do
    1.27 +		[ $(od -j $j -N 2 -t u2 -An fd001.$1) -eq 20733 ] &&
    1.28 +		printf '\\\\x%02X' $(($trk+$i)) | xargs echo -en | \
    1.29 +		dd bs=1 seek=$(($j+1)) of=fd001.$1 conv=notrunc
    1.30 +	done 2> /dev/null
    1.31 +	break
    1.32 +done
    1.33 +false && if [ $1 -lt 200 ]; then
    1.34 +	while read j d ; do
    1.35 +		[ $(od -j $j -N 2 -t u2 -An fd001.$1) -eq $d ] && echo -en \
    1.36 +		\\xF6 | dd bs=1 seek=$(($j+1)) of=fd001.$1 conv=notrunc
    1.37 +	done 2> /dev/null <<EOT
    1.38 +355	12494
    1.39 +359	4566
    1.40 +EOT
    1.41 +fi