|
|
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.