floppyseekcommand.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 61 行

JAVA
61
字号
/*
 * $Id: FloppySeekCommand.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 FloppySeekCommand extends FloppyCommand {

	/** The cylinder to seek to */
	private final int cylinder;

	/**
	 * Create a new instance
	 * @param drive
	 * @param cylinder
	 */
	public FloppySeekCommand(int drive, int cylinder) {
		super(drive);
		this.cylinder = cylinder;
	}

	/**
	 * @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[3];
		cmd[0] = 0x0f;
		cmd[1] = (byte)getDrive();
		cmd[2] = (byte)cylinder;
		
		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 {
			final int st0 = fdc.getST0();
			final int cmdState = (st0 & ST0_CMDST_MASK);
			if (cmdState != ST0_CMDST_NORMAL) {
				throw new FloppyException("Seek failed [command state=" + cmdState + "]");
			}
			notifyFinished();
		} catch (TimeoutException ex) {
			notifyError(new FloppyException(ex));
		}
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?