|
|
1.1 root 1: #include "vdfmt.h"
2:
3:
4:
5: /*
6: ** The sector format of the SMD controller looks like this:
7: ** 28 bytes sector gap (header error)
8: ** 1 byte sync (0x19) (header error)
9: ** 2 bytes cylinder address (header error)
10: ** 1 byte track address (header error)
11: ** 1 byte sector address (header error)
12: ** 2 bytes header crc (header error)
13: ** 18 bytes header gap (data error)
14: ** 512 bytes data (data error)
15: ** 4 byte ecc (data error)
16: ** ?? trailing pad (data error)
17: */
18:
19: fmt_err smd_decode_position(bad_entry)
20: bs_entry bad_entry;
21: {
22: fmt_err error;
23: int sector_length = CURRENT->nbyte / CURRENT->nsec;
24: int offset = (bad_entry.bs_offset-2) % sector_length;
25: int bytes = ((bad_entry.bs_length / 8)) + 4;
26:
27: error.err_adr.cylinder = bad_entry.bs_cyl;
28: error.err_adr.track = bad_entry.bs_trk;
29: error.err_adr.sector = (bad_entry.bs_offset-2) / sector_length;
30: if(error.err_adr.sector >= CURRENT->nsec) {
31: error.err_adr.sector = CURRENT->nsec - 1;
32: error.err_stat = DATA_ERROR;
33: }
34: else if((offset < 35) || ((offset+bytes) > sector_length))
35: error.err_stat = HEADER_ERROR;
36: else
37: error.err_stat = DATA_ERROR;
38: return error;
39: }
40:
41:
42: /*
43: **
44: */
45:
46: bs_entry smd_code_position(error)
47: fmt_err error;
48: {
49: int sector_length = CURRENT->nbyte / CURRENT->nsec;
50: bs_entry temp;
51:
52: temp.bs_length = 1;
53: temp.bs_cyl = error.err_adr.cylinder;
54: temp.bs_trk = error.err_adr.track;
55: temp.bs_offset = error.err_adr.sector * sector_length;
56: if(error.err_stat & HEADER_ERROR) {
57: temp.bs_offset += 1;
58: }
59: else {
60: temp.bs_offset += 50;
61: }
62: temp.bs_alt.cylinder = 0;
63: temp.bs_alt.track = 0;
64: temp.bs_alt.sector = 0;
65: temp.bs_how = scanning;
66: return temp;
67: }
68:
69:
70:
71: /*
72: **
73: */
74:
75: smd_cyl_skew()
76: {
77: return 0;
78: }
79:
80:
81: /*
82: **
83: */
84:
85: smd_trk_skew()
86: {
87: return 0;
88: }
89:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.