需要帮助弄清楚这个脚本如何在 Ubuntu 14.04 中写入软盘

需要帮助弄清楚这个脚本如何在 Ubuntu 14.04 中写入软盘

我正在努力奔跑这里描述的程序在 Ubuntu 14.04 上。
我是 Linux 新手,非常希望得到帮助,让我能够理解这个程序如何读取/写入我的 Ensoniq EPS16+ 采样键盘的软盘。

epsread 的描述是这样的:

埃普斯

fdrawcmd用于一次读取 EPS 磁盘一个轨道的shell 脚本。它将数据输出到 stdout,因此将其重定向到文件。警告:它不检查磁盘是否正确格式化,并且只从 读取/dev/fd0

如果您给它一个 write 参数,它就会写入 EPS 磁盘。从 stdin 重定向文件。磁盘必须已经正确格式化——它不会检查这一点。同样,它也只写入/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

我顺利安装了最新版本fdutils。我只是将 epsread shell 脚本复制并粘贴到终端中。然后它运行起来,我意识到我不知道自己在做什么。

如果有人可以向我介绍该程序正在做什么,我想这将有助于我形成下一个更详细的问题,我需要问这些问题,以便将我拥有的文件以 Ensoniq EPS16 + 格式写入软盘。

如果我们能够弄清楚如何让这个程序运行,它将帮助许多使用 Linux 且拥有几种不同 Ensoniq 键盘的人,因为它们彼此兼容。

答案1

你把 shell 脚本弄乱了。它应该是:

#! /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

工作原理如下:

首先,它将CMD局部变量设置为“ read”。
然后,如果脚本的basename值为“ ”,"epswrite"则将其设置CMD为“ write”。如果脚本的第一个参数为“ ”,则将其设置为“ ”。如果脚本的第一个参数为“ ”,则将其设置为“ ”。readCMDreadwriteCMDwrite

局部变量CYL设置为0

CMD和变量CYL将用于生成要运行的实际命令。

循环开始!只要条件$CYL -lt 80(的值CYL小于)为真,和匹配80之间的 shell code就会重复执行。dodone

循环中有 3 条命令。前两条命令中,插入和的值,CMD创建CYL用于执行的实际命令fdrawcmd(参见man fdrawcmd)。第一次循环时,命令将是:

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

循环中的第三条命令,

CYL=$(( $CYL + 1 ))

增加CYL1一段时间后,$CYL -lt 80将不再为真,循环将结束。shell 脚本的执行将在

done

线。

要了解命令的所有参数fdrawcmd,请阅读man fdrawcmd网上副本

答案2

由于软盘补丁已包含在现代主线内核中,因此您可以忽略此脚本,只需使用 setfdprm/fdformat/dd

也看看这个: http://www.buchty.net/ensoniq/

请记住,EPS16+ 使用 DD 磁盘,因此如果您有 HD 磁盘,则必须盖住孔。

简而言之你应该这样做:

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

然后您就可以使用 dd 读取/写入 EPS 磁盘,即:

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

您还可以像这样格式化它们

fdformat /dev/fd0eps

相关内容