|
|
1.1 root 1: #include "vdfmt.h"
2: #include "cmd.h"
3:
4: /*
5: */
6:
7: to_track(daddr)
8: dskadr daddr;
9: {
10: return ((daddr.cylinder * CURRENT->ntrak) + daddr.track);
11: }
12:
13:
14: /*
15: */
16:
17: dskadr *from_track(trk)
18: int trk;
19: {
20: static dskadr temp;
21:
22: temp.cylinder = trk / CURRENT->ntrak;
23: temp.track = trk % CURRENT->ntrak;
24: temp.sector = 0;
25: return &temp;
26: }
27:
28:
29: /*
30: */
31:
32: to_sector(daddr)
33: dskadr daddr;
34: {
35: return ((to_track(daddr) * CURRENT->nsec) + daddr.sector);
36: }
37:
38:
39: /*
40: */
41:
42: dskadr *from_sector(sec)
43: unsigned int sec;
44: {
45: static dskadr temp;
46:
47: temp = *from_track((int)(sec / CURRENT->nsec));
48: temp.sector = sec % CURRENT->nsec;
49: return &temp;
50: }
51:
52:
53: /*
54: **
55: */
56:
57: print_unix_block(dskaddr)
58: dskadr dskaddr;
59: {
60: char fs;
61: int blk;
62: int sec_per_blk=DEV_BSIZE / CURRENT->secsize;
63:
64: indent();
65: blk = to_sector(dskaddr) / sec_per_blk;
66: print("** Warning - Unable to relocate sector %d:\n",to_sector(dskaddr));
67: indent();
68: print("to map out using BADSECT use the following values:\n");
69: indent();
70: for(fs = 0; fs < 8; fs++) {
71: int s, l;
72:
73: s = CURRENT->partition[fs].par_start;
74: l = CURRENT->partition[fs].par_len;
75: if((blk < (s+l)) && (blk >= s)) {
76: print("On the '%c' Partition use block %d.\n",
77: fs+'a', blk-s);
78: }
79: }
80: exdent(3);
81: }
82:
83: dskadr *from_unix(par, block)
84: unsigned char par;
85: unsigned int block;
86: {
87: unsigned int sector;
88: register int fs;
89: static dskadr dskaddr;
90:
91: fs = tolower(par) - 'a';
92: if((fs < 8) && (block <= CURRENT->partition[fs].par_len)) {
93: sector = CURRENT->partition[fs].par_start;
94: sector += block;
95: sector *= DEV_BSIZE;
96: sector /= CURRENT->secsize;
97: dskaddr = *from_sector(sector);
98: }
99: else {
100: dskaddr.cylinder = -1;
101: dskaddr.track = -1;
102: dskaddr.sector = -1;
103: }
104: return &dskaddr;
105: }
106:
107:
108: blkzero(addr, len)
109: register char *addr;
110: register int len;
111: {
112: while(len--)
113: *(addr++) = (char)0;
114: }
115:
116:
117: blkcopy(from, to, len)
118: register char *from;
119: register char *to;
120: register int len;
121: {
122: while(len--)
123: *(to++) = *(from++);
124: }
125:
126:
127: boolean blkcmp(a, b, len)
128: register char *a;
129: register char *b;
130: register int len;
131: {
132: while(len--) {
133: if(*(a++) != *(b++))
134: return false;
135: }
136: return true;
137: }
138:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.