Annotation of cci/sys/stand/vdfmt/smd_e.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.