Annotation of ntddk/src/scsi/qic117/mt1defs.h, revision 1.1

1.1     ! root        1: /*++
        !             2: 
        !             3: Copyright (c) 1993 - Colorado Memory Systems, Inc.
        !             4: All Rights Reserved
        !             5: 
        !             6: Module Name:
        !             7: 
        !             8:     mt1defs..h
        !             9: 
        !            10: Abstract:
        !            11: 
        !            12: 
        !            13: Revision History:          
        !            14: 
        !            15: 
        !            16: 
        !            17: 
        !            18: --*/
        !            19: 
        !            20: #define FIRM_VERSION_60             60    // First jumbo B firmware version
        !            21: #define FIRM_VERSION_63             63    // Cart in problems
        !            22: #define FIRM_VERSION_64             64    // First Firmware version to support Skip_n_Seg through the Erase Gap
        !            23: #define FIRM_VERSION_65             65    // First Firmware version to support Pegasus
        !            24: #define FIRM_VERSION_80             80    // First Firmware version to support Jumbo c
        !            25: #define FIRM_VERSION_87             87    // First Firmware revision to support QIC-117 C
        !            26: #define FIRM_VERSION_110            110   // First Firmware version to support Eagle
        !            27: 
        !            28: // EQU's for QIC-40 firmware commands
        !            29: 
        !            30: typedef enum _FIRMWARE_CMD {
        !            31:     Soft_Reset              =  1,      // soft reset of tape drive
        !            32:     Rpt_Next_Bit            =  2,      // report next bit (in report subcontext)
        !            33:     Pause                   =  3,      // pause tape motion
        !            34:     Micro_Pause             =  4,      // pause and microstep the head
        !            35:     Alt_Timeout             =  5,      // set alternate command timeout
        !            36:     Report_Status           =  6,      // report drive status
        !            37:     Report_Error            =  7,      // report drive error code
        !            38:     Report_Confg            =  8,      // report drive configuration
        !            39:     Report_ROM              =  9,      // report ROM version
        !            40:     Rpt_Signature           =  9,      // report drive signature (model dependant diagnostic mode)
        !            41:     Logical_Fwd             = 10,      // move tape in logical forward mo
        !            42:     Physical_Rev            = 11,      // move tape in physical reverse mode
        !            43:     Physical_Fwd            = 12,      // move tape in physical forward mode
        !            44:     Seek_Track              = 13,      // seek head to track position
        !            45:     Seek_LP                 = 14,      // seek load point
        !            46:     Format_Mode             = 15,      // enter format mode
        !            47:     Write_Ref               = 16,      // write reference burst
        !            48:     Verify_Mode             = 17,      // enter verify mode
        !            49:     Park_Head               = 17,      // park head (model dependant diagnostic mode)
        !            50:     Stop_Tape               = 18,      // stop the tape
        !            51:     Read_Noise_Code         = 18,      // check noise on drive (model dependent diagnostic mode)
        !            52:     Microstep_up            = 21,      // microstep head up
        !            53:     Disable_WP              = 21,      // disable write protect line (model dependent diagnostic mode)
        !            54:     Microstep_down          = 22,      // microstep head down
        !            55:     Set_Gain                = 22,      // set absolute drive gain (model dependant diagnostic mode)
        !            56:     Read_Port2              = 23,      // read the drive processor port 2 (diagnostic command)
        !            57:     Report_Vendor           = 24,      // report vendor number
        !            58:     Skip_N_Rev              = 25,      // skip n segments reverse
        !            59:     Skip_N_Fwd              = 26,      // skip n segments forward
        !            60:     Select_Speed            = 27,      // select tape speed
        !            61:     Diag_1_Mode             = 28,      // enter diagnostic mode 1
        !            62:     Diag_2_Mode             = 29,      // enter diagnostic mode 2
        !            63:     Primary_Mode            = 30,      // enter primary mode
        !            64:     Report_Vendor32         = 32,      // report vendor number (for firmware versions > 33)
        !            65:     Report_Tape_Stat        = 33,      // reports the tape format of the currently loaded tape
        !            66:     Skip_N_Rev_Ext          = 34,      // skip n segments reverse (extended format)
        !            67:     Skip_N_Fwd_Ext          = 35,      // skip n segments forward (extended format)
        !            68:     Rpt_CMS_Status          = 37,      // report CMS status byte (model dependant - diagnostic mode)
        !            69:     Read_Ram                = 44,      // read tape drive RAM
        !            70:     New_Tape                = 45,      // load tape sequence
        !            71:     Select_Drive            = 46,      // select the tape drive
        !            72:     Deselect_Drive          = 47,      // deselect the tape drive
        !            73:     ReportProtoVer          = 50,      // reports firmware prototype version number (model dependant - diagnostic mode)
        !            74:     Dtrain_Info             = 53,      // enter Drive Train Information mode (model dependant - diagnostic mode)
        !            75:     Mtn_Select_1            = 23,      // Mountain select byte 1
        !            76:     Mtn_Select_2            = 20,      // Mountain select byte 2
        !            77:     Mtn_Deselect            = 24,      // Mountain deselect byte
        !            78:     Rpt_Archive_Native_Mode = 40       // Archive Native Mode diagnostic command
        !            79: } FIRMWARE_CMD, *PFIRMWARE_CMD;
        !            80: 
        !            81: // Parameters for the Drive Training Information Commands
        !            82: #define         Gdesp_Info                      5
        !            83: 
        !            84: // QIC-40 Firmware errors
        !            85: 
        !            86: typedef enum _FIRMWARE_ERROR {
        !            87:     Drv_Not_Rdy     =  1,          // command received while drive not ready
        !            88:     No_Cart         =  2,          // cartridge not present or removed
        !            89:     Speed_Err       =  3,          // motor speed error
        !            90:     Speed_Anom      =  4,          // motor speed anomaly (motor jammed, or gross speed error)
        !            91:     Writ_Prot       =  5,          // cartridge write protected
        !            92:     Undef_Cmd       =  6,          // undefined or reserved command code
        !            93:     Illegal_Trk     =  7,          // illegal track address specified for Seek
        !            94:     Cmd_in_Rpt      =  8,          // illegal command in report subcontext
        !            95:     Bad_Diag_Entry  =  9,          // illegal entry attempt into a diagnostic mode
        !            96:     Broken_Tape     = 10,          // broken tape detected (based on hole and mo
        !            97:     Read_Gain_Err   = 11,          // Warning -- read gain setting error
        !            98:     Cmd_on_Err      = 12,          // command Received while error status pending
        !            99:     Cmd_on_New_Cart = 13,          // command received while new cartridge pendin
        !           100:     Bad_Prm_Cmd     = 14,          // command illegal or undefined in primary mo
        !           101:     Bad_Fmt_Cmd     = 15,          // command illegal or undefined in format mode
        !           102:     Bad_Vfy_Cmd     = 16,          // command illegal or undefined in verify mode
        !           103:     Bad_Log_Fwd     = 17,          // logical forward not a logical BOT in format mo
        !           104:     Early_Fmt_EOT   = 18,          // logical EOT before all segments generated
        !           105:     Cmd_on_No_Ref   = 19,          // command illegal when cartridge not reference
        !           106:     Self_Diag       = 20,          // self-diagnostic failed -- NOTE: this error CA
        !           107:     Uninit_PROM     = 21,          // Warning -- EEPROM not initialized, default set
        !           108:     Bad_PROM        = 22,          // EEPROM contents corrupted or EEPROM hardware m
        !           109:     Motion_Timeout  = 23,          // tape motion timeout (max EOT-to-BOT time ex
        !           110:     Long_Data_Seg   = 24,          // data segment too long -- logical forward
        !           111:     Xmit_Overrun    = 25,          // command transmit overrun (usually a firmware
        !           112:     Pwr_On_Reset    = 26,          // power on reset occurred
        !           113:     Swre_Reset      = 27,          // software initiated reset occurred
        !           114:     Diag_Err_2      = 28,          // model-dependant diagnostic error
        !           115:     Diag_Err_1      = 29,          // model-independant diagnostic error
        !           116:     Non_Int_Cmd     = 30,          // command received during non-interruptible process
        !           117:     Speed_not_Avail = 31,          // speed selection requested is not ava
        !           118:     Inval_Media     = 34,          // tape media is invalid for the drive (QIC80 only)
        !           119:     Head_Ref_Fail   = 35,          // head reference failure (QIC80 only)
        !           120:     Edge_Seek_Fail  = 36,          // seeking to edge tracks failed (QIC80 only)
        !           121:     Mssng_Train_Tbl = 37,          // 37 - Missing Training Table
        !           122:     Invalid_Format  = 38,          // 38 - Invalid Format
        !           123:     EOT_Sensor_Flr  = 39,          // 39 - EOT/BOT Sensor Failure
        !           124:     Trn_Tbl_Chksum  = 40,          // 40 - Training Table Checksum Error
        !           125:     Wtchdog_Reset   = 41,          // 41 - Watchdog Timer Reset Occurred
        !           126:     Illegal_Error   = 42,          // 42 - Illegal Error Number
        !           127:     NotRdy          = 106         // Drive Not Ready
        !           128: } FIRMWARE_ERROR, *PFIRMWARE_ERROR;
        !           129: 
        !           130: // Floppy Disk Port constants
        !           131: 
        !           132: // normal drive B
        !           133: #define curb                            1
        !           134: #define selb                0x2d    // 00101101: motor B + enable DMA/IRQ/FDC + sel B
        !           135: #define dselb               0x0c    // 00001100: enable DMA/IRQ/FDC + sel A
        !           136: // unselected drive
        !           137: #define curu                            0
        !           138: #define selu                0x0d    // 00001101: enable DMA/IRQ/FDC + sel B
        !           139: #define dselu               0x0c    // 00001100: enable DMA/IRQ/FDC + sel A
        !           140: // normal drive D
        !           141: #define curd                            3
        !           142: #define seld                0x8f    // 10001111: motor D + enable DMA/IRQ/FDC + sel D
        !           143: #define dseld               0x0e    // 00001110  motor D + enable DMA/IRQ/FDC + sel C
        !           144: // laptop unselected drive
        !           145: #define curub                           0
        !           146: #define selub               0x2d    // 00101101: motor B + enable DMA/IRQ/FDC + sel B
        !           147: #define dselub              0x0c    // 00001100: enable DMA/IRQ/FDC + sel A
        !           148: 
        !           149: #define alloff              0x08    // no motor + enable DMA/IRQ + disable FDC + sel A
        !           150: #define fdc_idle            0x0c    // no motor + enable DMA/IRQ/FDC + sel A
        !           151: 
        !           152: #define DRIVE_ID_MASK       0x03
        !           153: 
        !           154: // Floppy configuration parameters
        !           155: 
        !           156: #define FDC_FIFO            15      // FIFO size for an 82077
        !           157: #define FMT_GPL             233     // gap length for format (QIC-40 205ft & 310ft)
        !           158: #define WRT_GPL             109     // gap length for write (QIC-40 205ft & 310ft)
        !           159: #define FMT_BPS             03      // bytes per sector for formatting(1024)
        !           160: #define WRT_BPS             FMT_BPS // bytes per sector for reading/writing (1024)
        !           161: #define FSC_SEG             32      // floppy sectors per segment (QIC-40 205ft & 310ft)
        !           162: #define SEG_FTK             4       // segments per floppy track (QIC-40 205ft & 310ft)
        !           163: #define FSC_FTK             (FSC_SEG*SEG_FTK)    // floppy sectors per floppy track (QIC-40 205ft & 310ft)
        !           164: #define SEG_TTRK_40         68      // segments per tape track (QIC-40 205ft)
        !           165: #define SEG_TTRK_40L        102     // segments per tape track (QIC-40 310ft)
        !           166: #define SEG_TTRK_80         100     // segments per tape track (QIC-80 205ft)
        !           167: #define SEG_TTRK_80L        150     // segments per tape track (QIC-80 310ft)
        !           168: #define SEG_TTRK_QICEST_40  365     // segments per tape track (QIC-40 QICEST)
        !           169: #define SEG_TTRK_QICEST_80  537     // segments per tape track (QIC-80 QICEST)
        !           170: #define SEG_TTRK_500        422     // segments per tape track (QIC-500)
        !           171: #define SEG_TTRK_500L       1574    // segments per tape track (QIC-500)
        !           172: 
        !           173: #define FTK_FSD_40          170     // floppy tracks per floppy side (QIC-40 205ft)
        !           174: #define FTK_FSD_40L         255     // floppy tracks per floppy side (QIC-40 310ft)
        !           175: #define FTK_FSD_80          150     // floppy tracks per floppy side (QIC-80 205ft)
        !           176: #define FTK_FSD_80L         150     // floppy tracks per floppy side (QIC-80 310ft)
        !           177: #define FTK_FSD_QICEST_40   254     // floppy tracks per floppy side (QIC-40 QICEST) */
        !           178: #define FTK_FSD_QICEST_80   254     // floppy tracks per floppy side (QIC-80 QICEST) */
        !           179: #define FTK_FSD_500         254     // floppy tracks per floppy side (QIC-500) */
        !           180: #define FTK_FSD_QICEST_500  254     // floppy tracks per floppy side (QIC-500) */
        !           181: 
        !           182: #define NUM_TTRK_40         20      // number of tape tracks (QIC-40 205ft & 310ft)
        !           183: #define NUM_TTRK_80         28      // number of tape tracks (QIC-40 205ft & 310ft)
        !           184: #define NUM_TTRK_500        40      // number of tape tracks (QIC-500)
        !           185: #define PHY_SIZ             1024    // number of bytes per sector
        !           186: 
        !           187: //
        !           188: // Tape Format Types and lengths/Coercivity
        !           189: //
        !           190: 
        !           191: #define QIC_UNKNOWN         0       // Unknown Tape Format and Length
        !           192: #define QIC_40              1       // QIC-40 Tape Format
        !           193: #define QIC_80              2       // QIC-80 Tape Format
        !           194: #define QIC_500             3       // QIC-500 Tape Format
        !           195: #define QIC_SHORT           1       // Length = 205 & Coercivity = 550 Oe
        !           196: #define QIC_LONG            2       // Length = 307.5 & Coercivity = 550 Oe
        !           197: #define QIC_SHORT_900       3       // Length = 295 & Coercivity = 900 Oe
        !           198: #define QICEST              4       // Length = 1100 & Coercivity = 550 Oe
        !           199: #define QICEST_900          5       // Length = 1100 & Coercivity = 900 Oe
        !           200: 
        !           201: // Floppy disk controller misc constants
        !           202: 
        !           203: // 82077 version number
        !           204: #define VALID_NEC_FDC       0x90    // version number
        !           205: #define NSC_PRIMARY_VERSION 0x70    // National 8477 verion number
        !           206: #define NSC_MASK            0xF0    // mask for National version number
        !           207: #define FDC_82078_44_MASK   0x40    // mask for 82078 44 pin part id
        !           208: 
        !           209: // main status register
        !           210: #define MSR_RQM             0x80    // request for master
        !           211: #define MSR_DIO             0x40    // data input/output (0=input, 1=output)
        !           212: #define MSR_EXM             0x20    // execution mode
        !           213: #define MSR_CB              0x10    // FDC busy
        !           214: #define MSR_D3B             0x08    // FDD 3 busy
        !           215: #define MSR_D2B             0x04    // FDD 2 busy
        !           216: #define MSR_D1B             0x02    // FDD 1 busy
        !           217: #define MSR_D0B             0x01    // FDD 0 busy
        !           218: 
        !           219: // status register 0
        !           220: #define ST0_IC              0xC0    // Interrupt code (00=Normal, 01=Abnormal, 10=Illegal cmd, 11=Abnormal)
        !           221: #define ST0_SE              0x20    // Seek end
        !           222: #define ST0_EC              0x10    // Equipment check
        !           223: #define ST0_NR              0x08    // Not Ready
        !           224: #define ST0_HD              0x04    // Head Address
        !           225: #define ST0_US              0x03    // Unit Select (0-3)
        !           226: 
        !           227: // status register 1
        !           228: #define ST1_EN              0x80    // End of Cylinder
        !           229: #define ST1_DE              0x20    // Data Error (CRC error)
        !           230: #define ST1_OR              0x10    // Over Run
        !           231: #define ST1_ND              0x04    // No Data
        !           232: #define ST1_NW              0x02    // Not Writable (write protect error)
        !           233: #define ST1_MA              0x01    // Missing Address Mark
        !           234: 
        !           235: // status register 2
        !           236: #define ST2_CM              0x40    // Control Mark (Deleted Data Mark)
        !           237: #define ST2_DD              0x20    // Data Error in Data Field
        !           238: #define ST2_WC              0x10    // Wrong Cylinder
        !           239: #define ST2_SH              0x08    // Scan Equal Hit
        !           240: #define ST2_SN              0x04    // Scan Not Satisfied
        !           241: #define ST2_BC              0x02    // Bad Cylinder
        !           242: #define ST2_MD              0x01    // Missing Address Mark in Data Field
        !           243: 
        !           244: // status register 3
        !           245: #define ST3_FT              0x80    // Fault
        !           246: #define ST3_WP              0x40    // Write Protected
        !           247: #define ST3_RY              0x20    // Ready
        !           248: #define ST3_T0              0x10    // Track 0
        !           249: #define ST3_TS              0x08    // Two Side
        !           250: #define ST3_HD              0x04    // Head address
        !           251: #define ST3_US              0x03    // Unit Select (0-3)
        !           252: 
        !           253: // Misc. constants
        !           254: 
        !           255: #define FWD                 0       // seek in the logical forward direction
        !           256: #define REV                 1       // seek in the logical reverse direction
        !           257: #define STOP_LEN            5       // approximate number of blocks used to stop the tape
        !           258: #define SEEK_SLOP           3       // number of blocks to overshoot at high speed in a seek
        !           259: #define SEEK_TIMED          0x01    // Perform a timed seek
        !           260: #define SEEK_SKIP           0x02    // perform a skip N segemnts seek
        !           261: #define SEEK_SKIP_EXTENDED  0x03    // perform an extended skip N segemnts seek
        !           262: 
        !           263: // number of blocks to overshoot when performing a high speed reverve seek
        !           264: #define QIC_REV_OFFSET      3
        !           265: #define QIC_REV_OFFSET_L        4
        !           266: #define QICEST_REV_OFFSET   14
        !           267: #define MAX_SKIP            255     // Max number of segments that a Skip N Segs command can skip
        !           268: #define MAX_SEEK_NIBBLES    3       // Maximum number of nibbles in an extended mode seek
        !           269: 
        !           270: #define NumBad              10      // number of bad READ ID's in row for no_data error
        !           271: #define OR_TRYS             10      // number of Over Runs ignored per block (system 50)
        !           272: 
        !           273: #define PRIMARY_MODE        0       // tape drive is in primary mode
        !           274: #define FORMAT_MODE         1       // tape drive is in format mode
        !           275: #define VERIFY_MODE         2       // tape drive is in verify mode
        !           276: #define DIAGNOSTIC_1_MODE   3       // tape drive is in diagnostic mode 1
        !           277: #define DIAGNOSTIC_2_MODE   4       // tape drive is in diagnostic mode 2
        !           278: 
        !           279: #define DMA_WRITE           FALSE   // Program the DMA to write (FDC->DMA->RAM)
        !           280: #define DMA_READ            TRUE    // Program the DMA to read (RAM->DMA->FDC)
        !           281: 
        !           282: #define READ_BYTE           8       // Number of Bytes to receive from the tape
        !           283: #define READ_WORD           16      //  drive during communication.
        !           284: 
        !           285: #define HD_SELECT           0x01    // High Density Select bit from the PS/2 DCR
        !           286: 
        !           287: #define TAPE_250Kbps        0       // Program drive for 250 Kbps transfer rate
        !           288: #define TAPE_2Mbps          1       // Program drive for 2Mbps transfer rate
        !           289: #define TAPE_500Kbps        2       // Program drive for 500 Kbps transfer rate
        !           290: #define TAPE_1Mbps          3       // Program drive for 1 Mbps transfer rate
        !           291: #define FDC_250Kbps         2       // Program FDC for 250 Kbps transfer rate
        !           292: #define FDC_500Kbps         0       // Program FDC for 500 Kbps transfer rate
        !           293: #define FDC_1Mbps           3       // Program FDC for 1 Mbps transfer rate
        !           294: #define FDC_2Mbps           1       // Program FDC for 2 Mbps transfer rate
        !           295: #define SRT_250Kbps         0xff    // FDC step rate for 250 Kbps transfer rate
        !           296: #define SRT_500Kbps         0xef    // FDC step rate for 500 Kbps transfer rate
        !           297: #define SRT_1Mbps           0xdf    // FDC step ratefor 1 Mbps transfer rate
        !           298: #define SRT_2Mbps           0xcf    // FDC step rate for 2 Mbps transfer rate
        !           299: #define SPEED_MASK          0x03    // FDC speed mask for lower bits
        !           300: #define SLOW                0       // current transfer rate is slow
        !           301: #define FAST                1       // current transfer rate is fast
        !           302: #define FDC_2MBPS_TABLE     2       // 2 Mbps data rate table for the 82078
        !           303: 
        !           304: #define UNKNOWN             0xFF    // drive_type = unknown
        !           305: #define CMS                 0       // drive_type = CMS (command set specific) drive
        !           306: #define SUMMIT              1       // drive_type = Summit
        !           307: #define WANGTEK             2       // drive_type = Wangtek
        !           308: #define CORE                3       // drive_type = Core
        !           309: #define ARCHIVE             4       // drive_type = Archive
        !           310: #define CMS_ENHANCEMENTS    5       // drive_type = CMS Enhancements
        !           311: #define IOMEGA              6       // drive_type = IOMega
        !           312: #define UNSUPPORTED         7       // drive_type = Unsupported
        !           313: #define CMS_SIG             0xa5    // drive signature for CMS drives
        !           314: #define CMS_VEND_NO         0x0047  // CMS vendor number
        !           315: #define SUMMIT_VEND_NO      0x0180  // Summit vendor number
        !           316: #define IOMEGA_VEND_NO      0x8880  // Iomega vendor number
        !           317: #define WANGTEK_VEND_NO     0x01c0  // Wangtek vendor number
        !           318: #define TECHMAR_VEND_NO     0x01c0  // Techmar vendor number
        !           319: #define CORE_VEND_NO        0x0000  // Core vendor number
        !           320: #define ARCHIVE_VEND_NO_OLD 0x0005  // Archive vendor number (old mode)
        !           321: #define ARCHIVE_VEND_NO_NEW 0x0140  // Archive vendor number (new mode)
        !           322: #define VENDOR_MASK         0xffc0  // Vendor id mask
        !           323: #define SUMMIT_QIC80        0x0001  // Summit QIC80 Model #
        !           324: #define WANGTEK_QIC80       0x000a  // Wangtek QIC80 Model #
        !           325: #define WANGTEK_QIC40       0x0002  // Wangtek QIC40 Model #
        !           326: #define CORE_QIC80          0x0021  // Core QIC80 Model #
        !           327: 
        !           328: 
        !           329: //
        !           330: // Archive Native mode defines
        !           331: //
        !           332: 
        !           333: #define ARCHIVE_500KB_XFER  0x0400  // 500 KB xfer rate
        !           334: #define ARCHIVE_1MB_XFER    0x0800  // 1 MB xfer rate
        !           335: #define ARCHIVE_20_TRACK    0x0001  // Drive supports 20 tracks
        !           336: #define ARCHIVE_28_TRACK    0x000e  // Drive supports 28 tracks
        !           337: #define ARCHIVE_MODEL_5580  0x0002  // Archive Model 5580 series (Hornet)
        !           338: #define ARCHIVE_MODEL_XKE   0x0004  // Archive 11250 series (1" drives) XKE
        !           339: #define ARCHIVE_MODEL_XKEII 0x0008  // Archive 11250 series (1" drives) XKEII
        !           340: 
        !           341: 
        !           342: 
        !           343: 
        !           344: #define FDC_PART_ID         0x11    // Part Id Command
        !           345: #define READ                0x46    // read data + MFM + do not Skip del. data + not Multi-track
        !           346: #define WRITE               0x45    // write data + MFM + not Multi-track
        !           347: #define WRTDEL              0x49    // write deleted data + MFM + not Multi-track
        !           348: #define FDC_SNS_INT         0x08    // FDC sense interrupt status
        !           349: #define FDC_VERSION         0x10    // report FDC version
        !           350: #define NSC_VERSION         0x18    // report National 8477 version
        !           351: #define FDC_CONFIG          0x13    // configure 82077 FDC
        !           352: #define FDC_SPECIFY         0x03    // specify setup parameters
        !           353: #define FDC_SAVE            0x4e    // 82078 64 pin save state command
        !           354: #define FDC_DRIVE_SPECIFY   0x8e    // 82078 64 pin drive specification command
        !           355: #define PERP_MODE_COMMAND   0x12    // Perpendicular Mode Command Byte
        !           356: #define FDC_P_MODE2         0x00    // second byte of perpendicular mode cmd
        !           357: #define FDC_INVALID_CMD     0x80    // invalid cmd sent to FDC returns this value
        !           358: #define RTIMES              3       // times to retry on a read of a sector (retry mode)
        !           359: #define NTIMES              2       // times to retry on a read of a sector (normaly)
        !           360: #define WTIMES              10      // times to retry on a write of a sector
        !           361: #define VTIMES              0       // times to retry on verify
        !           362: #define ANTIMES             0
        !           363: #define ARTIMES             6
        !           364: #define DRIVE_SPEC_SAVE     2       // sizeof the drive spec save command
        !           365: 
        !           366: #define FIND_RETRIES        2
        !           367: #define REPORT_RPT          6       // Number of times to attempt drive communication when
        !           368:                                     //  an ESD induced error is suspected.
        !           369: #define FDC_MSR_RETRIES     50      // Number of times to read the FDC Main
        !           370:                                     //  Status Register before reporting a NECFlt
        !           371: 
        !           372: #define DRIVEA              0
        !           373: #define DRIVEB              1
        !           374: #define DRIVEC              2
        !           375: #define DRIVED              3
        !           376: #define DRIVEU              4
        !           377: #define DRIVEUB             5
        !           378: 
        !           379: #define DISABLE_PRECOMP     1       // Value used by the 82078's Drive Spec
        !           380:                                     // command to disable Precomp
        !           381: 
        !           382: #define FDC_BOOT_MASK     0x06      // Mask used to isolate the Boot Select
        !           383:                                     // Bits in the TDR Register
        !           384: 
        !           385: #define MAX_SEEK_COUNT      10
        !           386: 
        !           387: #define WRITE_REF_RPT       2
        !           388: 
        !           389: #define _DISK_RESET         0
        !           390: 
        !           391: #define WRITE_PROTECT_MASK  0x20    // bit from byte from port 2 of the jumbo B processor that indicates write protect
        !           392: 
        !           393: // Constants for sense_speed algorithm
        !           394: // These ranges are based on 1.5 sec @ 250kb.  The units are 54.95ms (1 IBM PC
        !           395: // timer tick (18.2 times a second)) and are +-1 tick from nominal due to time
        !           396: // base fluctuation (in FDC and IBM PC TIMER).
        !           397: // The threshold for the 750kb transfer rate is < 11 ticks due to the
        !           398: // uncertainty of this future transfer rate.
        !           399: // If a transfer rate of 750kb is needed code MUST be added to verify that
        !           400: // 750kb does exist
        !           401: 
        !           402: #define sect_cnt            35      // .04285 sec. per sector * 35 = 1.4997 sec.
        !           403: #define MIN1000             0
        !           404: #define MAX1000             11
        !           405: #define MIN500              12
        !           406: #define MAX500              15
        !           407: #define MIN250              26
        !           408: #define MAX250              29
        !           409: 
        !           410: // Array indices and size for the time_out array. The time out array contains the  *
        !           411: // time outs for the QIC-117 commands.
        !           412: #define L_SLOW                          0
        !           413: #define L_FAST              1
        !           414: #define PHYSICAL                2
        !           415: #define TIME_OUT_SIZE           3
        !           416: 
        !           417: // Constants for the arrays defined in the S_O_DGetInfo structure
        !           418: #define OEM_LENGTH          20
        !           419: #define SERIAL_NUM_LENGTH       4
        !           420: #define MAN_DATE_LENGTH     2
        !           421: #define PEGASUS_START_DATE  517
        !           422: 
        !           423: // Constant for the array dimension used in Q117iHighSpeedSeek
        !           424: #define  FOUR_NIBS                      4
        !           425: 
        !           426: // Constants for identifing bytes in a word array
        !           427: #define LOW_BYTE            0
        !           428: #define HI_BYTE                         1
        !           429: 
        !           430: // Strings that are sent to DComFirm
        !           431: #define DCOMFIRM_READ_RAM_STRING            "\x01\x2C\xFD\x01\x00"
        !           432: #define DCOMFIRM_SET_RAM_STRING             "\x04\x2A\x00\x2B\x00\xFD\x00"
        !           433: #define DCOMFIRM_WRITE_RAM_STRING           "\x06\x28\x28\x00\x29\x29\x00\xFD\x00"
        !           434: 
        !           435: // The number of characters in the DComFirm strings
        !           436: #define DCOMFIRM_NUM_READ_RAM_CHARS         5
        !           437: #define DCOMFIRM_NUM_SET_RAM_CHARS          7
        !           438: #define DCOMFIRM_NUM_WRITE_RAM_CHARS        9
        !           439: 
        !           440: // Numbers used as arguments to Q117iGetComFirmStr to indicate the desired
        !           441: // DComfirm String
        !           442: #define DCOMFIRM_READ_RAM_REQ               0
        !           443: #define DCOMFIRM_SET_RAM_REQ                1
        !           444: #define DCOMFIRM_WRITE_RAM_REQ              2
        !           445: 
        !           446: 
        !           447: #define DCOMFIRM_MAX_CHARS  10  // Max number of chars in a DComFirm string
        !           448: 
        !           449: // Various addresses used as arguments in the set ram command for the Sankyo
        !           450: // motor fix hack
        !           451: #define DBL_HOLE_CNTER_ADD_UPPER_NIBBLE         5
        !           452: #define DBL_HOLE_CNTER_ADD_LOWER_NIBBLE         0xD
        !           453: #define HOLE_FLAG_BYTE_ADD_UPPER_NIBBLE         4
        !           454: #define HOLE_FLAG_BYTE_ADD_LOWER_NIBBLE         8
        !           455: #define TAPE_ZONE_BYTE_ADD_UPPER_NIBBLE         6
        !           456: #define TAPE_ZONE_BTYE_ADD_LOWER_NIBBLE         8
        !           457: 
        !           458: // String indices for key bytes in DComFirm Strings
        !           459: #define DCOMFIRM_READ_RTRN_BYTE_INDEX       4
        !           460: #define DCOMFIRM_SETRAM_HI_NIB_INDEX            2
        !           461: #define DCOMFIRM_SETRAM_LOW_NIB_INDEX           4
        !           462: #define DCOMFIRM_WRTRAM_HI_NIB_INDEX            3
        !           463: #define DCOMFIRM_WRTRAM_LOW_NIB_INDEX           6
        !           464: 
        !           465: 
        !           466: // Miscellaneous defines used in the Sankyo Motor fix hack
        !           467: #define REVERSE                             0
        !           468: #define FORWARD                             1
        !           469: #define AT_BOT                              0
        !           470: #define AT_EOT                              1
        !           471: #define HOLE_INDICATOR_MASK                 0X40
        !           472: #define EOT_ZONE_COUNTER_UPPER_NIBBLE       2
        !           473: #define EOT_ZONE_COUNTER_LOWER_NIBBLE       9
        !           474: #define BOT_ZONE_COUNTER_UPPER_NIBBLE       2
        !           475: #define BOT_ZONE_COUNTER_LOWER_NIBBLE       3
        !           476: #define MAX_DECOMFIRM_CHARS                 10

unix.superglobalmegacorp.com

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