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 + -
显示快捷键?