SCSI: Add clean SCSI command debugging support

This commit is contained in:
Mark Pizzolato 2022-03-25 17:32:57 -07:00
parent 6cac5c9eae
commit a15c6407bd
2 changed files with 66 additions and 55 deletions

View file

@ -55,6 +55,10 @@
#define CMD_SPACE 0x11 /* space */ #define CMD_SPACE 0x11 /* space */
#define CMD_WRFMARK 0x10 /* write filemarks */ #define CMD_WRFMARK 0x10 /* write filemarks */
#define CMD_READ6_TAPE_FIXED 0x01 /* Fixed record size read */
#define CMD_READ6_TAPE_SILI 0x02 /* Suppress Incorrect Length Indicator */
/* SCSI status codes */ /* SCSI status codes */
#define STS_OK 0 /* good */ #define STS_OK 0 /* good */
@ -88,6 +92,26 @@
b[x+3]) b[x+3])
#define GETW(b,x) ((b[x] << 8)|b[x+1]) #define GETW(b,x) ((b[x] << 8)|b[x+1])
static void _scsi_vdebug (uint32 dbits, SCSI_BUS *bus, const char* fmt, va_list arglist)
{
UNIT *uptr = bus->dev[bus->target];
size_t tfmt_size = strlen (fmt) + strlen (sim_uname (uptr)) + 3;
char *tfmt = (char *)malloc (tfmt_size);
snprintf (tfmt, tfmt_size, "%s: %s", sim_uname (uptr), fmt);
_sim_vdebug (dbits, bus->dptr, uptr, tfmt, arglist);
free (tfmt);
}
static void scsi_debug_cmd (SCSI_BUS *bus, const char* fmt, ...)
{
va_list arglist;
va_start (arglist, fmt);
_scsi_vdebug (SCSI_DBG_CMD, bus, fmt, arglist);
va_end (arglist);
}
static const char *scsi_phases[] = { static const char *scsi_phases[] = {
"DATO", /* data out */ "DATO", /* data out */
"DATI", /* data in */ "DATI", /* data in */
@ -352,7 +376,7 @@ void scsi_test_ready (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
UNIT *uptr = bus->dev[bus->target]; UNIT *uptr = bus->dev[bus->target];
sim_debug (SCSI_DBG_CMD, bus->dptr, "Test Unit Ready\n"); scsi_debug_cmd (bus, "Test Unit Ready\n");
if (uptr->flags & UNIT_ATT) /* attached? */ if (uptr->flags & UNIT_ATT) /* attached? */
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* unit is ready */ scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* unit is ready */
@ -367,7 +391,7 @@ void scsi_inquiry (SCSI_BUS *bus, uint8 *data, uint32 len)
UNIT *uptr = bus->dev[bus->target]; UNIT *uptr = bus->dev[bus->target];
SCSI_DEV *dev = (SCSI_DEV *)uptr->up7; SCSI_DEV *dev = (SCSI_DEV *)uptr->up7;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Inquiry\n"); scsi_debug_cmd (bus, "Inquiry\n");
if ((bus->lun != 0) || (uptr->flags & UNIT_DIS)) { if ((bus->lun != 0) || (uptr->flags & UNIT_DIS)) {
memset (&bus->buf[0], 0, 36); /* no such device or lun */ memset (&bus->buf[0], 0, 36); /* no such device or lun */
@ -431,7 +455,7 @@ scsi_set_req (bus); /* request to send data
void scsi_req_sense (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_req_sense (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Request Sense\n"); scsi_debug_cmd (bus, "Request Sense\n");
bus->buf[bus->buf_b++] = (0x70 | 0x80); /* current error, valid */ bus->buf[bus->buf_b++] = (0x70 | 0x80); /* current error, valid */
bus->buf[bus->buf_b++] = 0; /* segment # */ bus->buf[bus->buf_b++] = 0; /* segment # */
@ -467,14 +491,14 @@ scsi_set_req (bus); /* request to send data
void scsi_mode_sel6 (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_mode_sel6 (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
if (bus->phase == SCSI_CMD) { if (bus->phase == SCSI_CMD) {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Mode Select(6) - CMD\n"); scsi_debug_cmd (bus, "Mode Select(6) - CMD\n");
memcpy (&bus->cmd[0], &data[0], 6); memcpy (&bus->cmd[0], &data[0], 6);
bus->buf_b = bus->cmd[4]; bus->buf_b = bus->cmd[4];
scsi_set_phase (bus, SCSI_DATO); /* data out phase next */ scsi_set_phase (bus, SCSI_DATO); /* data out phase next */
scsi_set_req (bus); /* request data */ scsi_set_req (bus); /* request data */
} }
else if (bus->phase == SCSI_DATO) { else if (bus->phase == SCSI_DATO) {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Mode Select(6) - DATO\n"); scsi_debug_cmd (bus, "Mode Select(6) - DATO\n");
/* Not currently implemented so just return /* Not currently implemented so just return
good status for now */ good status for now */
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); scsi_status (bus, STS_OK, KEY_OK, ASC_OK);
@ -486,14 +510,14 @@ else if (bus->phase == SCSI_DATO) {
void scsi_mode_sel10 (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_mode_sel10 (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
if (bus->phase == SCSI_CMD) { if (bus->phase == SCSI_CMD) {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Mode Select(10) - CMD\n"); scsi_debug_cmd (bus, "Mode Select(10) - CMD\n");
memcpy (&bus->cmd[0], &data[0], 10); memcpy (&bus->cmd[0], &data[0], 10);
bus->buf_b = GETW (data, 7); bus->buf_b = GETW (data, 7);
scsi_set_phase (bus, SCSI_DATO); /* data out phase next */ scsi_set_phase (bus, SCSI_DATO); /* data out phase next */
scsi_set_req (bus); /* request data */ scsi_set_req (bus); /* request data */
} }
else if (bus->phase == SCSI_DATO) { else if (bus->phase == SCSI_DATO) {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Mode Select(6) - DATO\n"); scsi_debug_cmd (bus, "Mode Select(6) - DATO\n");
/* Not currently implemented so just return /* Not currently implemented so just return
good status for now */ good status for now */
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); scsi_status (bus, STS_OK, KEY_OK, ASC_OK);
@ -624,7 +648,7 @@ UNIT *uptr = bus->dev[bus->target];
SCSI_DEV *dev = (SCSI_DEV *)uptr->up7; SCSI_DEV *dev = (SCSI_DEV *)uptr->up7;
uint32 pc, pctl; uint32 pc, pctl;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Mode Sense(6)\n"); scsi_debug_cmd (bus, "Mode Sense(6)\n");
pc = data[2] & 0x3F; /* page code */ pc = data[2] & 0x3F; /* page code */
pctl = (data[2] >> 6) & 0x3F; /* page control */ pctl = (data[2] >> 6) & 0x3F; /* page control */
@ -658,7 +682,7 @@ void scsi_mode_sense10 (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
uint32 pc, pctl; uint32 pc, pctl;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Mode Sense(10)\n"); scsi_debug_cmd (bus, "Mode Sense(10)\n");
pc = data[2] & 0x3F; /* page code */ pc = data[2] & 0x3F; /* page code */
pctl = (data[2] >> 6) & 0x3F; /* page control */ pctl = (data[2] >> 6) & 0x3F; /* page control */
@ -691,7 +715,7 @@ scsi_set_req (bus); /* request to send data
void scsi_start_stop (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_start_stop (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Start/Stop Unit\n"); scsi_debug_cmd (bus, "Start/Stop Unit\n");
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); scsi_status (bus, STS_OK, KEY_OK, ASC_OK);
} }
@ -699,7 +723,7 @@ scsi_status (bus, STS_OK, KEY_OK, ASC_OK);
void scsi_prev_allow (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_prev_allow (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Prevent/Allow Medium Removal\n"); scsi_debug_cmd (bus, "Prevent/Allow Medium Removal\n");
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); scsi_status (bus, STS_OK, KEY_OK, ASC_OK);
} }
@ -710,7 +734,7 @@ void scsi_read_capacity (SCSI_BUS *bus, uint8 *data, uint32 len)
UNIT *uptr = bus->dev[bus->target]; UNIT *uptr = bus->dev[bus->target];
SCSI_DEV *dev = (SCSI_DEV *)uptr->up7; SCSI_DEV *dev = (SCSI_DEV *)uptr->up7;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Read Capacity, pmi = %d\n", (data[8] & 0x1)); scsi_debug_cmd (bus, "Read Capacity, pmi = %d\n", (data[8] & 0x1));
if ((uptr->flags & UNIT_ATT) == 0) { /* not attached? */ if ((uptr->flags & UNIT_ATT) == 0) { /* not attached? */
scsi_status (bus, STS_CHK, KEY_NOTRDY, ASC_NOMEDIA); scsi_status (bus, STS_CHK, KEY_NOTRDY, ASC_NOMEDIA);
@ -740,7 +764,7 @@ sects = data[4];
if (sects == 0) if (sects == 0)
sects = 256; sects = 256;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Read(6) lba %d blks %d\n", lba, sects); scsi_debug_cmd (bus, "Read(6) lba %d blks %d\n", lba, sects);
if (uptr->flags & UNIT_ATT) if (uptr->flags & UNIT_ATT)
r = sim_disk_rdsect (uptr, lba, &bus->buf[0], &sectsread, sects); r = sim_disk_rdsect (uptr, lba, &bus->buf[0], &sectsread, sects);
@ -776,43 +800,34 @@ if (sects == 0) { /* no data to read */
return; return;
} }
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Read(6) blks %d fixed %d\n", sects, (data[1] & 0x1));
"Read(6) blks %d fixed %d\n", sects, (data[1] & 0x1));
if (uptr->flags & UNIT_ATT) { if (uptr->flags & UNIT_ATT) {
if (data[1] & 0x1) { if (data[1] & 0x1) {
r = sim_tape_rdrecf (uptr, &bus->buf[0], &sectsread, (sects * dev->block_size)); r = sim_tape_rdrecf (uptr, &bus->buf[0], &sectsread, (sects * dev->block_size));
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Read tape blk %d, read %d, r = %d\n", sects, sectsread, r);
"Read tape blk %d, read %d, r = %d\n", sects, sectsread, r);
} }
else { else {
r = sim_tape_rdrecf (uptr, &bus->buf[0], &sectsread, sects); r = sim_tape_rdrecf (uptr, &bus->buf[0], &sectsread, sects);
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Read tape max %d, read %d, r = %d\n", sects, sectsread, r);
"Read tape max %d, read %d, r = %d\n", sects, sectsread, r);
if (r == MTSE_INVRL) { /* overlength condition */ if (r == MTSE_INVRL) { /* overlength condition */
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Overlength\n");
"Overlength\n");
if ((data[1] & 0x2) && (dev->block_size == 0)) { /* SILI set */ if ((data[1] & 0x2) && (dev->block_size == 0)) { /* SILI set */
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "SILI set\n");
"SILI set\n");
} }
else { else {
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "SILI not set - check condition\n");
"SILI not set - check condition\n");
scsi_status (bus, STS_CHK, (KEY_OK | KEY_M_ILI), ASC_OK); scsi_status (bus, STS_CHK, (KEY_OK | KEY_M_ILI), ASC_OK);
return; return;
} }
} }
else if ((r == MTSE_OK) && (sectsread < sects)) { /* underlength condition */ else if ((r == MTSE_OK) && (sectsread < sects)) { /* underlength condition */
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Underlength\n");
"Underlength\n");
if (data[1] & 0x2) { /* SILI set */ if (data[1] & 0x2) { /* SILI set */
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "SILI set\n");
"SILI set\n");
} }
else { else {
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "SILI not set - check condition\n");
"SILI not set - check condition\n");
scsi_status_deferred (bus, STS_CHK, (KEY_OK | KEY_M_ILI), ASC_OK); scsi_status_deferred (bus, STS_CHK, (KEY_OK | KEY_M_ILI), ASC_OK);
bus->sense_info = (sects - sectsread); bus->sense_info = (sects - sectsread);
} }
@ -820,8 +835,7 @@ if (uptr->flags & UNIT_ATT) {
} }
if (r != MTSE_OK) { if (r != MTSE_OK) {
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Read error, r = %d\n", r);
"Read error, r = %d\n", r);
} }
scsi_tape_status (bus, r); scsi_tape_status (bus, r);
} }
@ -854,7 +868,7 @@ t_stat r;
lba = GETL (data, 2); lba = GETL (data, 2);
sects = GETW (data, 7); sects = GETW (data, 7);
sim_debug (SCSI_DBG_CMD, bus->dptr, "Read(10) lba %d blks %d\n", lba, sects); scsi_debug_cmd (bus, "Read(10) lba %d blks %d\n", lba, sects);
if (sects == 0) { /* no data to read */ if (sects == 0) { /* no data to read */
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); scsi_status (bus, STS_OK, KEY_OK, ASC_OK);
@ -887,7 +901,7 @@ t_stat r;
lba = GETL (data, 2); lba = GETL (data, 2);
sects = GETW (data, 7); sects = GETW (data, 7);
sim_debug (SCSI_DBG_CMD, bus->dptr, "Read Long lba %d bytes %d\n", lba, sects); scsi_debug_cmd (bus, "Read Long lba %d bytes %d\n", lba, sects);
if (uptr->flags & UNIT_ATT) if (uptr->flags & UNIT_ATT)
r = sim_disk_rdsect (uptr, lba, &bus->buf[0], &sectsread, ((sects >> 9) + 1)); r = sim_disk_rdsect (uptr, lba, &bus->buf[0], &sectsread, ((sects >> 9) + 1));
@ -911,7 +925,7 @@ t_seccnt sects, sectswritten;
t_stat r; t_stat r;
if (bus->phase == SCSI_CMD) { if (bus->phase == SCSI_CMD) {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Write(6) - CMD\n"); scsi_debug_cmd (bus, "Write(6) - CMD\n");
memcpy (&bus->cmd[0], &data[0], 6); memcpy (&bus->cmd[0], &data[0], 6);
sects = bus->cmd[4]; sects = bus->cmd[4];
if (sects == 0) sects = 256; if (sects == 0) sects = 256;
@ -923,7 +937,7 @@ else if (bus->phase == SCSI_DATO) {
sects = bus->cmd[4]; sects = bus->cmd[4];
if (sects == 0) sects = 256; if (sects == 0) sects = 256;
lba = GETW (bus->cmd, 2) | ((bus->cmd[1] & 0x1F) << 16); lba = GETW (bus->cmd, 2) | ((bus->cmd[1] & 0x1F) << 16);
sim_debug (SCSI_DBG_CMD, bus->dptr, "Write(6) - DATO, lba %d bytes %d\n", lba, sects); scsi_debug_cmd (bus, "Write(6) - DATO, lba %d bytes %d\n", lba, sects);
if (uptr->flags & UNIT_ATT) if (uptr->flags & UNIT_ATT)
r = sim_disk_wrsect (uptr, lba, &bus->buf[0], &sectswritten, sects); r = sim_disk_wrsect (uptr, lba, &bus->buf[0], &sectswritten, sects);
@ -943,8 +957,7 @@ t_seccnt sects;
t_stat r; t_stat r;
if (bus->phase == SCSI_CMD) { if (bus->phase == SCSI_CMD) {
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Write(6) - CMD\n");
"Write(6) - CMD\n");
memcpy (&bus->cmd[0], &data[0], 6); /* save current cmd */ memcpy (&bus->cmd[0], &data[0], 6); /* save current cmd */
sects = GETW (bus->cmd, 3) | (bus->cmd[2] << 16); sects = GETW (bus->cmd, 3) | (bus->cmd[2] << 16);
if (data[1] & 0x1) /* FIXED */ if (data[1] & 0x1) /* FIXED */
@ -957,13 +970,11 @@ else if (bus->phase == SCSI_DATO) {
sects = GETW (bus->cmd, 3) | (bus->cmd[2] << 16); sects = GETW (bus->cmd, 3) | (bus->cmd[2] << 16);
if (data[1] & 0x1) /* FIXED */ if (data[1] & 0x1) /* FIXED */
sects = sects * dev->block_size; sects = sects * dev->block_size;
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Write(6) - DATO, bytes %d\n", sects);
"Write(6) - DATO, bytes %d\n", sects);
if (uptr->flags & UNIT_ATT) { if (uptr->flags & UNIT_ATT) {
r = sim_tape_wrrecf (uptr, &bus->buf[0], sects); r = sim_tape_wrrecf (uptr, &bus->buf[0], sects);
sim_debug (SCSI_DBG_CMD, bus->dptr, scsi_debug_cmd (bus, "Write(6) - DATO, r = %d\n", r);
"Write(6) - DATO, r = %d\n", r);
scsi_tape_status (bus, r); /* translate status */ scsi_tape_status (bus, r); /* translate status */
} }
else else
@ -985,7 +996,7 @@ t_seccnt sects, sectswritten;
t_stat r; t_stat r;
if (bus->phase == SCSI_CMD) { if (bus->phase == SCSI_CMD) {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Write(10) - CMD\n"); scsi_debug_cmd (bus, "Write(10) - CMD\n");
memcpy (&bus->cmd[0], &data[0], 10); memcpy (&bus->cmd[0], &data[0], 10);
sects = GETW (bus->cmd, 7); sects = GETW (bus->cmd, 7);
if (sects == 0) /* no data to write */ if (sects == 0) /* no data to write */
@ -999,7 +1010,7 @@ if (bus->phase == SCSI_CMD) {
else if (bus->phase == SCSI_DATO) { else if (bus->phase == SCSI_DATO) {
sects = GETW (bus->cmd, 7); sects = GETW (bus->cmd, 7);
lba = GETL (bus->cmd, 2); lba = GETL (bus->cmd, 2);
sim_debug (SCSI_DBG_CMD, bus->dptr, "Write(10) - DATO, lba %d bytes %d\n", lba, sects); scsi_debug_cmd (bus, "Write(10) - DATO, lba %d bytes %d\n", lba, sects);
if (uptr->flags & UNIT_ATT) if (uptr->flags & UNIT_ATT)
r = sim_disk_wrsect (uptr, lba, &bus->buf[0], &sectswritten, sects); r = sim_disk_wrsect (uptr, lba, &bus->buf[0], &sectswritten, sects);
@ -1017,7 +1028,7 @@ UNIT *uptr = bus->dev[bus->target];
SCSI_DEV *dev = (SCSI_DEV *)uptr->up7; SCSI_DEV *dev = (SCSI_DEV *)uptr->up7;
t_stat r; t_stat r;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Erase\n"); scsi_debug_cmd (bus, "Erase\n");
if (data[1] & 0x1) /* LONG bit set? */ if (data[1] & 0x1) /* LONG bit set? */
r = sim_tape_wreom (uptr); /* erase to EOT */ r = sim_tape_wreom (uptr); /* erase to EOT */
@ -1032,7 +1043,7 @@ scsi_status (bus, bus->status, bus->sense_key, bus->sense_code);
void scsi_reserve_unit (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_reserve_unit (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Reserve Unit\n"); scsi_debug_cmd (bus, "Reserve Unit\n");
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */ scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */
} }
@ -1040,7 +1051,7 @@ scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */
void scsi_release_unit (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_release_unit (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Release Unit\n"); scsi_debug_cmd (bus, "Release Unit\n");
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */ scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */
} }
@ -1051,7 +1062,7 @@ void scsi_rewind (SCSI_BUS *bus, uint8 *data, uint32 len)
UNIT *uptr = bus->dev[bus->target]; UNIT *uptr = bus->dev[bus->target];
t_stat r; t_stat r;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Rewind\n"); scsi_debug_cmd (bus, "Rewind\n");
r = sim_tape_rewind (uptr); r = sim_tape_rewind (uptr);
@ -1063,7 +1074,7 @@ scsi_status (bus, bus->status, bus->sense_key, bus->sense_code);
void scsi_send_diag (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_send_diag (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Send Diagnostic\n"); scsi_debug_cmd (bus, "Send Diagnostic\n");
if (data[1] & 0x4) /* selftest */ if (data[1] & 0x4) /* selftest */
scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */ scsi_status (bus, STS_OK, KEY_OK, ASC_OK); /* GOOD status */
@ -1083,7 +1094,7 @@ t_stat r = 0;
code = data[1] & 0x7; code = data[1] & 0x7;
sects = GETW (data, 3) | (data[2] << 16); sects = GETW (data, 3) | (data[2] << 16);
sim_debug (SCSI_DBG_CMD, bus->dptr, "Space %d %s\n", sects, ((code == 0) ? "records" : "files")); scsi_debug_cmd (bus, "Space %d %s\n", sects, ((code == 0) ? "records" : "files"));
switch (code) { switch (code) {
@ -1121,7 +1132,7 @@ uint32 i;
t_seccnt sects; t_seccnt sects;
t_stat r; t_stat r;
sim_debug (SCSI_DBG_CMD, bus->dptr, "Write Filemarks\n"); scsi_debug_cmd (bus, "Write Filemarks\n");
sects = GETW (data, 3) | (data[2] << 16); sects = GETW (data, 3) | (data[2] << 16);
@ -1140,7 +1151,7 @@ scsi_set_req (bus); /* request to send data
void scsi_read_blklim (SCSI_BUS *bus, uint8 *data, uint32 len) void scsi_read_blklim (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
sim_debug (SCSI_DBG_CMD, bus->dptr, "Read Block Limits\n"); scsi_debug_cmd (bus, "Read Block Limits\n");
bus->buf[bus->buf_b++] = 0x00; /* reserved */ bus->buf[bus->buf_b++] = 0x00; /* reserved */
bus->buf[bus->buf_b++] = (MTR_MAXLEN >> 16) & 0xFF; /* max block length (23:16) */ bus->buf[bus->buf_b++] = (MTR_MAXLEN >> 16) & 0xFF; /* max block length (23:16) */
@ -1158,7 +1169,7 @@ void scsi_load_unload (SCSI_BUS *bus, uint8 *data, uint32 len)
{ {
UNIT *uptr = bus->dev[bus->target]; UNIT *uptr = bus->dev[bus->target];
sim_debug (SCSI_DBG_CMD, bus->dptr, "Load/Unload\n"); scsi_debug_cmd (bus, "Load/Unload\n");
if ((data[4] & 0x5) == 0x5) { /* EOT & Load? */ if ((data[4] & 0x5) == 0x5) { /* EOT & Load? */
scsi_status (bus, STS_CHK, KEY_ILLREQ, ASC_INVCDB); /* invalid combination */ scsi_status (bus, STS_CHK, KEY_ILLREQ, ASC_INVCDB); /* invalid combination */

View file

@ -65,7 +65,7 @@
#define SCSI_DBG_MSG 0x02000000 /* SCSI messages */ #define SCSI_DBG_MSG 0x02000000 /* SCSI messages */
#define SCSI_DBG_BUS 0x04000000 /* bus activity */ #define SCSI_DBG_BUS 0x04000000 /* bus activity */
#define SCSI_DBG_DSK 0x08000000 /* disk activity */ #define SCSI_DBG_DSK 0x08000000 /* disk activity */
#define SCSI_DBG_TAP 0x10000000 /* disk activity */ #define SCSI_DBG_TAP 0x10000000 /* tape activity */
#define SCSI_V_NOAUTO ((DKUF_V_UF > MTUF_V_UF) ? DKUF_V_UF : MTUF_V_UF)/* noautosize */ #define SCSI_V_NOAUTO ((DKUF_V_UF > MTUF_V_UF) ? DKUF_V_UF : MTUF_V_UF)/* noautosize */
#define SCSI_V_UF (SCSI_V_NOAUTO + 1) #define SCSI_V_UF (SCSI_V_NOAUTO + 1)