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

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: 

unix.superglobalmegacorp.com

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