|
|
1.1 ! root 1: #include "scsi.h" ! 2: ! 3: static char mtab[5][2] = ! 4: { ! 5: '0', '0', '1', '1', '1', '2', '2', '2', '?', '?' ! 6: }; ! 7: char *brdname[] = { "no doard", "T.D. Systems Viking", "U.S. Design 1158" }; ! 8: ! 9: s_config() ! 10: { ! 11: struct scsi_i input; ! 12: struct scsi_o output; ! 13: int i; ! 14: ! 15: input.bus_id = scsi_id; ! 16: input.cmd[0] = 0x12; ! 17: input.cmd[1] = 0; ! 18: input.cmd[2] = 0; ! 19: input.cmd[3] = 0; ! 20: input.cmd[4] = 44; ! 21: input.cmd[5] = 0; ! 22: if(scsiio(&input, 0, &output, 44, "config") < 0) ! 23: return(1); ! 24: i = min(output.data[37], 4); ! 25: Fprint(1, "config(%d,%d): %s device, '%0.28s', %c controller%s, %c drive%s\n", ! 26: scsi_id, 0, (output.data[0] == 0x4)? "WORM":"Unknown", ! 27: &output.data[8], mtab[i][0], (mtab[i][0] == '1')?"":"s", ! 28: mtab[i][1], (mtab[i][1] == '1')?"":"s"); ! 29: Fprint(1, "\tUnibus-SCSI controller=%s\n", brdname[output.type]); ! 30: Fprint(1, "\tROMS:"); ! 31: if(output.data[38] != 0xFF) ! 32: Fprint(1, " upper controller=x%x,", output.data[38]); ! 33: if(output.data[40] != 0xFF) ! 34: Fprint(1, " lower controller=x%x,", output.data[40]); ! 35: Fprint(1, " IF-129=x%x, SY-46=x%x, SS-30=x%x\n", output.data[36], ! 36: output.data[42], output.data[43]); ! 37: return(0); ! 38: } ! 39: ! 40: s_ndrives() ! 41: { ! 42: struct scsi_i input; ! 43: struct scsi_o output; ! 44: int i; ! 45: ! 46: input.bus_id = scsi_id; ! 47: input.cmd[0] = 0x12; ! 48: input.cmd[1] = 0; ! 49: input.cmd[2] = 0; ! 50: input.cmd[3] = 0; ! 51: input.cmd[4] = 44; ! 52: input.cmd[5] = 0; ! 53: if(scsiio(&input, 0, &output, 44, "ndrives") < 0) ! 54: return(0); ! 55: i = min(output.data[37], 4); ! 56: return(mtab[i][1] - '0'); ! 57: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.