Precisa de ajuda para descobrir este script para gravar em um disquete no Ubuntu 14.04

1

Estou tentando executar o programa descrito aqui no Ubuntu 14.04.
Sou novo no Linux e gostaria muito de ajudar a entender este programa para ler / gravar disquetes para o meu teclado de amostragem Ensoniq EPS16 +.

a descrição de epsread diz:

epsread

A shell script that uses fdrawcmd to read an EPS disk a track at a time. It spits the data out to stdout, so redirect it to a file. Warning: It doesn't check the disk is formatted correctly and it reads only from /dev/fd0.

If you give it a parameter of write it instead writes an EPS disk. Redirect a file from stdin. The disk must already be formatted correctly -- it doesn't check that. And again, it also only writes to /dev/fd0.

#! /bin/sh
#
# File copyright Wade Bowmer, but you're free to use it as you like.
# 
# Be sure to have a look at http://yceran.org/eps/
# 

# Parameter checking CMD=read if [ "'basename $0'" == "epswrite" ] ; then CMD=write ; fi if [ "$1" == "read" ] ; then CMD=read ; fi if [
"$1" == "write" ] ; then CMD=write ; fi

# Do the actual work CYL=0 while [ $CYL -lt 80 ] ; do

    fdrawcmd $CMD 0 $CYL 0 0 2 10 0x1b 0xff length=5120 rate=2 track=$CYL

    # Second side   fdrawcmd $CMD 4 $CYL 1 0 2 10 0x1b 0xff length=5120
rate=2 track=$CYL

    CYL=$(( $CYL + 1 ))

done

A versão mais recente do fdutils foi bem instalada. Eu apenas copiei e colei o script shell epsread em um terminal. Então correu e percebi que não tenho idéia do que estou fazendo.

Se alguém pudesse me orientar sobre o que este programa está tentando fazer, acho que isso me ajudaria a formular as próximas perguntas mais detalhadas que eu preciso fazer para começar a escrever os arquivos que tenho em um disquete no Ensoniq EPS16 + formato.

Se pudermos descobrir como fazer com que este programa funcione, isso ajudará muitas pessoas que estão no Linux com vários teclados Ensoniq diferentes, já que são compatíveis entre si.

    
por j b 23.08.2017 / 22:59

2 respostas

2

Você confundiu o script de shell. Deve ser:

#! /bin/sh
#
# File copyright Wade Bowmer, but you're free to use it as you like.
# 
# Be sure to have a look at http://yceran.org/eps/
# 

# Parameter checking 
CMD=read 
if [ "'basename $0'" == "epswrite" ] ; then CMD=write ; fi 
if [ "$1" == "read" ] ; then CMD=read ; fi 
if [ "$1" == "write" ] ; then CMD=write ; fi

# Do the actual work 
CYL=0 
while [ $CYL -lt 80 ] ; do

    fdrawcmd $CMD 0 $CYL 0 0 2 10 0x1b 0xff length=5120 rate=2 track=$CYL

    # Second side   
    fdrawcmd $CMD 4 $CYL 1 0 2 10 0x1b 0xff length=5120 rate=2 track=$CYL

    CYL=$(( $CYL + 1 ))

done

Veja como funciona:

Primeiro, define a variável CMD local como " read ".
Em seguida, se o basename do script for "epswrite" , define CMD como " write ". Se o primeiro parâmetro do script for " read ", CMD será definido como " read ". Se o primeiro parâmetro do script for " write ", CMD será definido como " write ".

A variável local CYL está definida como 0 .

As variáveis CMD e CYL serão usadas na geração do comando real a ser executado.

Um loop começa! Contanto que a condição $CYL -lt 80 (O valor de CYL seja menor que 80 ) seja verdadeira, o código de shell entre o do e o done correspondente será repetido.

Existem 3 comandos no loop. Nos dois primeiros, a interpolação dos valores para CMD e CYL cria os comandos acutal usados para executar o fdrawcmd (consulte man fdrawcmd ). A primeira vez através do loop, os comandos serão:

fdrawcmd read 0 0 0 0 2 10 0x1b 0xff length=5120 rate=2 track=0 
fdrawcmd read 4 0 1 0 2 10 0x1b 0xff length=5120 rate=2 track=0
#....CMD.^^^^   ^ CYL                                         ^ CYL

O terceiro comando no loop,

CYL=$(( $CYL + 1 ))

incrementa CYL em 1 . Depois de um tempo, $CYL -lt 80 não será verdadeiro e o loop terminará. A execução do script de shell será retomada após o

done

linha.

Para descobrir quais são todos esses parâmetros para o comando fdrawcmd , leia man fdrawcmd ou a cópia on-line

    
por waltinator 24.08.2017 / 00:02
0

Como o patch de disquete está incluído nos kernels mainline modernos, você pode desconsiderar este script e apenas o usuário setfdprm / fdformat / dd

Verifique isso também: link

Lembre-se de que o EPS16 + usa discos DD, portanto, se você tiver discos HD, precisará cobrir o buraco.

Em suma, você deve fazer:

mknod /dev/fd0eps b 2 120
setfdprm /dev/fd0eps ds dd sect=10 zerobased

você pode simplesmente ler / gravar discos EPS com dd, por exemplo:

dd if=/dev/fd0eps of=file.dd

você também pode formatá-los como

fdformat /dev/fd0eps
    
por pianist 30.10.2017 / 20:37