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