From f3df87fbbc4c2ed61a0225701d7abec080f33c87 Mon Sep 17 00:00:00 2001 From: copy Date: Mon, 2 Jun 2014 23:07:11 +0200 Subject: [PATCH] some more commands --- src/ide.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/ide.js b/src/ide.js index 7d0682a6..0613aa77 100644 --- a/src/ide.js +++ b/src/ide.js @@ -181,6 +181,22 @@ function IDEDevice(dev, buffer, is_cd, nr) push_irq(); break; + case 0x03: + // request sense + pio_data = new Uint8Array(Math.min(data_port_buffer[4], 15)); + status = 0x58; + + pio_data[0] = 0x80 | 0x70; + pio_data[7] = 8; + + data_pointer = 0; + bytecount = 2; + cylinder_low = 8; + cylinder_high = 0; + + push_irq(); + break; + case 0x12: // inquiry pio_data = new Uint8Array(Math.min(data_port_buffer[4], 35)); @@ -672,6 +688,12 @@ function IDEDevice(dev, buffer, is_cd, nr) switch(cmd) { + case 0x00: + // NOP + push_irq(); + status = 0x50; + break; + case 0x08: dbg_log("ATA device reset", LOG_DISK); data_pointer = 0; @@ -726,6 +748,14 @@ function IDEDevice(dev, buffer, is_cd, nr) ata_write(cmd); break; + case 0x90: + // EXECUTE DEVICE DIAGNOSTIC + dbg_log("ATA cmd 90", LOG_DISK); + push_irq(); + lba_count = 0x101; + status = 0x50; + break; + case 0x91: // INITIALIZE DEVICE PARAMETERS dbg_log("ATA cmd 91", LOG_DISK);