我正在努力奔跑这里描述的程序在 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
”。如果脚本的第一个参数为“ ”,则将其设置为“ ”。如果脚本的第一个参数为“ ”,则将其设置为“ ”。read
CMD
read
write
CMD
write
局部变量CYL
设置为0
。
CMD
和变量CYL
将用于生成要运行的实际命令。
循环开始!只要条件$CYL -lt 80
(的值CYL
小于)为真,和匹配80
之间的 shell code就会重复执行。do
done
循环中有 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 ))
增加CYL
。1
一段时间后,$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