floppyidcommand.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 88 行
JAVA
88 行
/*
* $Id: FloppyIdCommand.java,v 1.1 2003/11/25 11:50:45 epr Exp $
*/
package org.jnode.driver.floppy;
import org.jnode.util.TimeoutException;
/**
* @author epr
*/
public class FloppyIdCommand extends FloppyCommand {
/** Resulting state */
private byte[] st;
/**
* Create a new instance
* @param drive
*/
public FloppyIdCommand(int drive) {
super(drive);
}
/**
* @param fdc
* @see org.jnode.driver.floppy.FloppyCommand#setup(org.jnode.driver.floppy.FDC)
* @throws FloppyException
*/
public void setup(FDC fdc)
throws FloppyException {
final byte[] cmd = new byte[2];
cmd[0] = 0x4a;
cmd[1] = (byte)getDrive();
fdc.setDorReg(getDrive(), true, true);
fdc.sendCommand(cmd, false);
}
/**
* @param fdc
* @see org.jnode.driver.floppy.FloppyCommand#handleIRQ(org.jnode.driver.floppy.FDC)
* @throws FloppyException
*/
public void handleIRQ(FDC fdc)
throws FloppyException {
try {
st = fdc.getCommandState(7);
final int st0 = st[0] & 0xFF;
final int cmdState = (st0 & ST0_CMDST_MASK);
if (cmdState != ST0_CMDST_NORMAL) {
throw new FloppyException("Id failed [command state=" + cmdState + "]");
}
notifyFinished();
} catch (TimeoutException ex) {
notifyError(new FloppyException(ex));
}
}
public int getST0() {
return st[0];
}
public int getST1() {
return st[1];
}
public int getST2() {
return st[2];
}
public int getCylinder() {
return st[3];
}
public int getHead() {
return st[4];
}
public int getSector() {
return st[5];
}
public int getSectorSize() {
return st[6];
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?