home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / hd.doc < prev    next >
Text File  |  1990-01-04  |  27KB  |  780 lines

  1.                             Chapter  7
  2.  
  3.                      Fixed Disk Service (INT 13H)
  4.                      ----------------------------
  5.       
  6.      1.      Introduction
  7.       
  8.       
  9.              1.1     Disk Controller Basic Function
  10.       
  11.              1.2     Standard Disk Interface 
  12.       
  13.                      A.      ST-506/412 Winchester
  14.                      B.      Enhanced Small Device Interface (ESDI)
  15.                      C.      Storage Module Device (SMD)
  16.                      D.      Enhanced SMD
  17.                      E.      Small Computer Systems Interface (SCSI)
  18.                      F.      Intelligent Peripheral Interface (IPI)
  19.                      G.      AT-Bus
  20.       
  21.              1.3     Coding
  22.       
  23.                      A.      Frequency Modulation (FM)
  24.                      B.      Modified Frequency Modulation (MFM)
  25.                      C.      Run Length Limited (RLL)
  26.                      D.      Group Code Recording (GCR)
  27.                      E.      Zone Bit Recording (ZBR)*
  28.       
  29.              1.4     Data Format
  30.       
  31.              1.5     Sector Interleaving
  32.       
  33.              1.6     Disk Formatting
  34.       
  35.                      A.      Physical Format
  36.                      B.      Partitioning
  37.                      C.      Logical Format
  38.       
  39.              1.7     Translative Versus Non-Translative Mode
  40.       
  41.       
  42.      2.      Winchester Disk Controller
  43.       
  44.              2.1     System Configuration for Fixed Disk System
  45.  
  46.          2.2     I/O Port Definition
  47.  
  48.          2.3     Timing Consideration
  49.       
  50.      3.      Programming Sequence in Fixed Disk Service Program
  51.       
  52.      4.         SPEC
  53.  
  54.      5.      Q & A
  55.       
  56.       
  57.  
  58.  
  59.  
  60.  
  61.      1.1     Basic Function of a Disk Controller
  62.  
  63.       
  64.              1.      Write data to the disk
  65.              
  66.              2.      Read data from the disk
  67.       
  68.              3.      Serialize and de-serialize data
  69.       
  70.              4.      Control the disk drive (option)
  71.       
  72.              5.      Ensure data integrity
  73.       
  74.              6.      Provide reasonable system interface (option)
  75.       
  76.              7.      Buffer data to/from disk
  77.       
  78.       
  79.       
  80.  
  81.  
  82.  
  83.  
  84.      1.2     Disk Interface Standard
  85.       
  86.       
  87.       
  88.                │
  89.          High  │
  90.                │
  91.                │
  92.                │                                                  . IPI
  93.                │
  94.                │                   . SMD           . ESMD
  95.                │
  96.                │                                           . SCSI
  97.       COST     │                                . ESDI
  98.                │
  99.                │
  100.                │
  101.                │                     . ST-412HP
  102.                │
  103.                │          . ST-506/412        . AT Bus
  104.                │
  105.          Low   │   . 3.5 Floppy
  106.                │
  107.                └───────────────────────────────────────────────────────>
  108.                  Low                                            High
  109.                                 PERFORMANCE
  110.       
  111.              Fig 1 :    Fixed Disk Interface Versus Market
  112.       
  113.       
  114.      A.      ST-506 412 Winchester Interface
  115.       
  116.       
  117.              1.      Industry standard since 1981
  118.       
  119.              2.      Low capacity Winchester (5 - 150 Mbytes)
  120.       
  121.              3.      small size
  122.       
  123.              4.      Serial data transfer rate of 5 Mbits/second
  124.       
  125.              5.      Cost (not performance) oriented
  126.       
  127.              6.      Simple disk interface (most of the effort is in the 
  128.                      disk controller)
  129.  
  130.  
  131.  
  132.       
  133.      B.      Enhanced Small Device Interface (ESDI)
  134.       
  135.              
  136.              1.      Substantial upgrade to ST-506/412 interface
  137.       
  138.              2.      Oriented towards high-capacity, high speed small
  139.                      winchester
  140.       
  141.              3.      Capable of handling magnetic tapes and optical disks
  142.       
  143.              4.      Serial transfer rate 10 Mbits/second
  144.       
  145.              5.      Simpler controller
  146.       
  147.       
  148.      C.      Storage Module Device (SMD)
  149.       
  150.      D.      Enhanced SMD
  151.       
  152.      E.      Small Computer Systems Interface(SCSI)
  153.       
  154.       
  155.              1.      ANSI defined intelligent, low-cost peripheral interface
  156.       
  157.              2.      Derived from SASI (Shgart Assoc. Systems Interface)
  158.       
  159.              3.      8-bit parallel data transfer, 1.5 to 4 Mbytes/second
  160.       
  161.              4.      Provides device independent software
  162.       
  163.              5.      Function more as a computer interface than a disk 
  164.                      interface
  165.       
  166.              6.      Requires lots of intelligence in the peripheral
  167.              
  168.       
  169.      F.      Intelligent Peripheral Interface (IPI)
  170.       
  171.      G.      AT-Bus
  172.       
  173.       
  174.              1.      Cost dowm
  175.       
  176.              2.      Data transfer rate
  177.       
  178.              3.      One I/O slot for another add-on card
  179.       
  180.              4.      The fixed disk controller is no longer required
  181.  
  182.  
  183.  
  184.       
  185.      1.3     Coding
  186.       
  187.              The following are four different ways of improving the storage
  188.              capacity of disk drives:
  189.              
  190.                  1)  Add more platters
  191.                  2)  Add more tracks per platter
  192.                  3)  Increase BPI (bit per inch)
  193.                  4)  Use better encoding methods
  194.              
  195.              For method 1, it will increase manufacture cost for extra
  196.              platter and extra read/write head set.
  197.       
  198.              For method 2, it will increase control logic complexity for 
  199.              write current precompensation and interfere.
  200.       
  201.              For method 3, it will use better read/write to shorten 
  202.              the length between read/write head and platter.
  203.       
  204.              For method 4, it will increase the encoding/decoding complexity.
  205.       
  206.       
  207.      A.      Frequency Modulation (FM)
  208.       
  209.     
  210.                                1 bit cell
  211.                                 │<----->│
  212.                 ┌───────┐       ┌───────┐                       ┌───────┐
  213.                 │   1   │   0   │   1   │    0       0       0  │   1   │  0
  214.   NRZ Data    ──┘       └───────┘       └───────────────────────┘       └───
  215.    
  216.    
  217.                  c   d   c       c   d   c       c       c       c   d   c
  218.                 ┌─┐ ┌─┐ ┌─┐     ┌─┐ ┌─┐ ┌─┐     ┌─┐     ┌─┐     ┌─┐ ┌─┐ ┌─┐
  219.                 │ │ │ │ │ │     │ │ │ │ │ │     │ │     │ │     │ │ │ │ │ │
  220.   FM Data     ──┘ └─┘ └─┘ └─────┘ └─┘ └─┘ └─────┘ └─────┘ └─────┘ └─┘ └─┘ └─
  221.    
  222.    
  223.    
  224.                 ┌───┐   ┌───────┐   ┌───┐       ┌───────┐       ┌───┐   ┌───
  225.   Disk Flux     │   │   │       │   │   │       │       │       │   │   │
  226.   Transitions ──┘   └───┘       └───┘   └───────┘       └───────┘   └───┘  
  227.     
  228.  
  229.  
  230.      FM Encoding Rules:
  231.     
  232.        1.      Insert clock pulse for each bit cell
  233.        2.      Insert data pulse when NRZ data is "1"
  234.  
  235.  
  236.  
  237.       
  238.      B.      Modified Frequency Modulation(MFM)
  239.       
  240.       
  241.                                1 bit cell
  242.                                 │<----->│
  243.                 ┌───────┐       ┌───────┐                       ┌───────┐
  244.                 │   1   │   0   │   1   │    0       0       0  │   1   │  0
  245.   NRZ Data    ──┘       └───────┘       └───────────────────────┘       └────
  246.    
  247.                                                 ┌─┐     ┌─┐
  248.                                                 │ │     │ │
  249.   Clock       ──────────────────────────────────┘ └─────┘ └──────────────
  250.    
  251.                     ┌─┐             ┌─┐                             ┌─┐
  252.                     │ │             │ │                             │ │
  253.   Data        ──────┘ └─────────────┘ └─────────────────────────────┘ └────
  254.    
  255.                      d               d           c       c           d    
  256.                     ┌─┐             ┌─┐         ┌─┐     ┌─┐         ┌─┐    
  257.                     │ │             │ │         │ │     │ │         │ │    
  258.   MFM Data    ──────┘ └─────────────┘ └─────────┘ └─────┘ └─────────┘ └──
  259.    
  260.    
  261.                     ┌───────────────┐           ┌───────┐           ┌────
  262.   Disk Flux         │               │           │       │           │      
  263.   Transitions ──────┘               └───────────┘       └───────────┘      
  264.     
  265.    
  266.    
  267.      MFM Encoding Rules :
  268.    
  269.           1. Insert clock in pulse at the beginning of a bit cell only
  270.              if NRZ data = 0 for two consecutive bits.
  271.           2.  If data bit = 1, insert data pulse in the middle of the 
  272.              bit cell.
  273.           3. If data bit = 0, no insertion of data pulses in the bit 
  274.               cell.
  275.    
  276.       
  277.  
  278.  
  279.  
  280.      C.      Run Length Limited (RLL)
  281.       
  282.       
  283.              RLL 2,7 Encoding Rules:
  284.       
  285.              The following table shows encoding/decoding:
  286.       
  287.              ┌─────────┬────┬────┬──────┬──────┬────────┬────────┬────────┐
  288.              │ NRZ Data│10  │11  │000   │010   │011     │0010    │0011    │
  289.              ├─────────┼────┼────┼──────┼──────┼────────┼────────┼────────┤
  290.              │ RLL 2,7 │1000│0100│100100│001000│000100  │00001000│00100100│
  291.              └─────────┴────┴────┴──────┴──────┴────────┴────────┴────────┘
  292.       
  293.       
  294.      D.      Group Code Recording( GCR)
  295.       
  296.              4,5 GCR Encoding Rules :
  297.       
  298.              The following table shows encoding/decoding:
  299.       
  300.              ┌─────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  301.              │ NRZ Data│0000 │000 1│0010 │0011 │0100 │0101 │0110 │0111 │
  302.              ├─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
  303.              │ 4,5 GCR │11001│11011│10010│10011│11101│10101│10110│10111│
  304.              └─────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  305.       
  306.              ┌─────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  307.              │ NRZ Data│1000 │1001 │1010 │1011 │1100 │1101 │1110 │1111 │
  308.              ├─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
  309.              │ 4,5 GCR │11010│01001│01010│01011│11110│01101│01110│01111│
  310.              └─────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  311.       
  312.       
  313.       
  314.      E.      Zone Bit Recording(ZBR)
  315.       
  316.              
  317.              According to the track number, the fixed disk drive is divided 
  318.              into several zones. The tracks in the same zone have the same 
  319.              format, but the track in different zone may have different 
  320.              format.
  321.                      
  322.       
  323.  
  324.  
  325.  
  326.      1.4     Data Format
  327.       
  328.       
  329.           ┌─┐                                                          ┌─┐
  330.           │ │                                                          │ │
  331.    Index ─┘ └──────────────────────────────────────────────────────────┘ └──
  332.     
  333.     
  334.           ┌───────────┬──────┬──────┬────────────────┬──────┬──────┬─────┐
  335.           │Index delay│Sector│Sector│    . . . .     │Sector│Sector│Final│
  336.           │  Field    │  0   │  1   │    . . . .     │  N-1 │  N   │ Gap │
  337.           └───────────┴──────┴──────┴────────────────┴──────┴──────┴─────┘
  338.     
  339.                       │      │
  340.           ┌───────────┘      └─────────────────────────────────────────────┐
  341.           ┌───────────┬───────┬────────┬───┬───────────┬──────┬────────────┐
  342.           │Preamble 1 │Address│ I.D.   │EDC│Postamble 1│Sector│Inter sector│
  343.           │(Synch 1)  │ Mark  │(Header)│ECC│           │Data  │     Gap    │
  344.           └───────────┴───────┴────────┴───┴───────────┴──────┴────────────┘
  345.   
  346.                               │        │               │      │
  347.           ┌───────────────────┘        └─────┐         │      │
  348.           ┌─────┬─────┬─────┬────┬──────┬────┐         │      │
  349.           │ID AM│Track│Track│Head│Sector│ ID │         │      │
  350.           │     │(MSD)│(LSD)│ #  │  #   │Flag│         │      │
  351.           └─────┴─────┴─────┴────┴──────┴────┘         │      │
  352.                                                        │      │
  353.                                                        │      │
  354.                            ┌───────────────────────────┘      └────────────┐
  355.                            ┌───────────┬───────┬────┬──────┬───┬───────────┐
  356.                            │Preamble 2 │Address│Data│ Data │EDC│Postamble 2│
  357.                            │(Synch 2)  │ Mark  │Mark│Record│ECC│           │
  358.                            └───────────┴───────┴────┴──────┴───┴───────────┘
  359.   
  360.     
  361.  
  362.  
  363.  
  364.     1.5     Sector Interleaving
  365.       
  366.             The initial formatting of a disk determines where sectors are
  367.             located within a track. It is not necessary to allocate sectors
  368.             sequentially around the track. The technique known as sector 
  369.             interleaving optimizes access times when, although sectors are
  370.             accessed sequentially, a small amount of processing must be 
  371.             performed between sector read/write.
  372.       
  373.       
  374.             interleave factor = 3
  375.       
  376.       
  377.       
  378.       
  379.       
  380.       
  381.       
  382.       
  383.       
  384.       
  385.       
  386.       
  387.       
  388.       
  389.       
  390.       
  391.             interleave factor = 2
  392.       
  393.       
  394.       
  395.       
  396.       
  397.       
  398.       
  399.       
  400.       
  401.       
  402.       
  403.       
  404.       
  405.       
  406.  
  407.  
  408.  
  409.       
  410.      1.6     Disk Formatting
  411.       
  412.       
  413.              A.  Physical Format (initialization)
  414.       
  415.                  Initializes the fixed disk with sectors and addresses to
  416.                  access data.
  417.       
  418.              B.  Partitioning
  419.       
  420.                  Assigns a partical amount of disk space to DOS.
  421.       
  422.              C.  Logical Format
  423.       
  424.                  Verifies that the initialization of the fixed disk drive 
  425.                  was successfully completed.
  426.       
  427.       
  428.      1.7     Translative Versus Non-Translative Mode
  429.       
  430.       
  431.              Owing to the use of advanced technique, the new WDD contains 
  432.              more cylinders, heads, and sectors per track. But due to DOS 
  433.              limitation, some DOS  software can't access the extra disk 
  434.              space. So some WDD manufacturer support "Translative mode" to 
  435.              translate the extra disk space into DOS disk space.
  436.       
  437.              Example 1 :
  438.       
  439.              WDD have 1033 cylinders, 2 heads, 33  sectors/track in 
  440.              non-translative mode, but it can have 1002 cylinders, 4 heads,
  441.              and 17 sectors/track in translative mode.
  442.       
  443.                1033 * 2 * 33 = 68178 sectors/drive in non-translative mode
  444.                1002 * 4 * 17 = 68136 sectors/drive in translative mode
  445.       
  446.              About 42 sectors in translative mode will be lost.
  447.       
  448.  
  449.  
  450.  
  451.  
  452.      2.1     System Configuration for Fixed Disk Subsystem
  453.       
  454.  
  455.  
  456.       
  457.                        ┌────────┐                                        
  458.           ┌────────────┤        │<───────────┐
  459.           │            │ 8259A  │            │
  460.           │       ┌───>│        │            │                            
  461.           │       │    └────────┘            │                 ┌────────┐
  462.           │ ┌─────┴──┐                   ┌───┴────┐      ┌---->│ WDD 0  │
  463.           │ │  CPU   ├──────────────────>│        │<─────|──┬─>│        │
  464.           │ │ INT 13H│<----┬-------------│  WDC   │      |  │  └────────┘
  465.           │ │ -------│     |             │        │<-----|  │  ┌────────┐
  466.           └>│ INT 0EH│     |             └────────┘      |  └─>│ WDD 1  │
  467.             └────────┘     |                 ^           └---->│        │
  468.                            |                 |                 └────────┘
  469.                            |                 |                           
  470.                        ┌───┴────┐            |                           
  471.                        │ DRAM   │<-----------┘                           
  472.                        └────────┘                                          
  473.       
  474.       
  475.               Command/Control  ────────
  476.       
  477.               Data/Status      --------
  478.       
  479.       
  480.        Fig :    System Configuration for Fixed Disk System
  481.       
  482.       
  483.  
  484.  
  485.  
  486.  
  487.      2.2     I/O Port Definition
  488.  
  489.  
  490.          I/O Port Addr      Read               Write
  491.  
  492.          1F0H/170H          Data register           Data register
  493.          1F1H/171H          Error register       Write Precomp
  494.          1F2H/172H          Sector Count         Sector Count
  495.          1F3H/173H          Sector number           Sector number
  496.          1F4H/174H          Cylinder Low           Cylinder Low
  497.          1F5H/175H          Cylinder High           Cylinder High
  498.          1F6H/176H          Drive/Head(SDH)      Drive/Head(SDH)
  499.          1F7H/177H          Status register      Command register
  500.          3F6H          Alternate Status     Fixed Disk Control
  501.          3F7H          Digital Input    
  502.  
  503.  
  504.          A.     Data Register
  505.  
  506.          Transfers through this register are 16 bits wide for all 
  507.              data transfer except ECC byte transfers during read/write 
  508.              long command, which are 8 bits wide.
  509.  
  510.          B.     Error Register
  511.  
  512.          There are two mode in all WDC operation: operational mode and
  513.          diagnostic mode. The controller is set into diagnostic mode 
  514.              upon power on or receiving a diagnostic command. In diagnostic
  515.              mode, the status register contents are invalid and the error 
  516.              register contents reflects a self test completion code. If bit 
  517.              7 of completion code is set, the slave drive will fail.
  518.  
  519.         Completion Code        Description
  520.  
  521.         01H/81H            No error
  522.         02H/82H            Winchester Controller
  523.         03H/83H            Sector Buffer Error
  524.         04H/84H            ECC Device Error
  525.         05H/85H            Control Processor Error
  526.  
  527.  
  528.  
  529.  
  530.  
  531.           The controller is set into operational mode by issuing any 
  532.           command other than the diagnostic command. While in operational
  533.           mode, the error register is valid only when the error bit in the
  534.           status register is set. The bit definitions for operational mode
  535.           are shown:
  536.  
  537.         bit 7        Bad Block
  538.         bit 6        Data ECC Error
  539.         bit 5        Reserved
  540.         bit 4        ID Not Found
  541.         bit 3        Reserved
  542.         bit 2        Aborted Command
  543.         bit 1        Track 0 Error
  544.         bit 0        Address Mark Not Found
  545.  
  546.          C.  Write Precompensation Register
  547.  
  548.          The Write precompensation register holds the value of the 
  549.          starting  write precompensation cylinder divided by four. The
  550.          controller may use this value to determine when to turn on the
  551.          write precompensation logic.
  552.  
  553.          D.  Sector Count Register
  554.  
  555.          This register holds the number of sector to be transferred
  556.          during a read or write command, and the number of sectors per
  557.          per track during a format command. This register is decremented
  558.          for every sector during a multi-sector operation. Therefore, if
  559.          an error occurs during a multi-sector operation, this register
  560.          contains the number of sectors left to be transferred.
  561.  
  562.          E.     Sector Number Register
  563.  
  564.          This register holds the starting sector number for any disk 
  565.          operation. This register is updated as each sector is processed 
  566.          in a multi-sector operation.
  567.  
  568.  
  569.  
  570.  
  571.  
  572.          F.  Cylinder Number Register
  573.  
  574.          The two eight bit cylinder number registers (Low and High) 
  575.          specify the starting cylinder argument for disk operation.
  576.  
  577.          G.  Drive/Head Register(SDH)
  578.  
  579.          This register is used to specify the drive and head number 
  580.          to be operated on during any following disk operation. During 
  581.          the set parameters commands it is used to specify the maximun
  582.          number of heads on the drive. The bits are defined as follow:
  583.  
  584.         bit 7        Reserved
  585.         bit 6        0
  586.         bit 5        1
  587.         bit 4        Drive select
  588.         bit 3        Reserved
  589.         bit 2-0        Head select
  590.         
  591.          H.  Status Register
  592.  
  593.          This register contains the results of the last command executed
  594.          and the status of the drive. Reading the status register also
  595.          clears any interrupt request to the host. The bits are defined 
  596.              as follows:
  597.  
  598.         bit 7        WDC Busy
  599.         bit 6        WDC Ready to accept command
  600.         bit 5        Write Fault
  601.         bit 4        Seek Completed
  602.         bit 3        Data request
  603.         bit 2        Corrected Data
  604.         bit 1        Index 
  605.         bit 0        Non-coverable error
  606.         
  607.  
  608.  
  609.  
  610.  
  611.          I.  Command Register
  612.  
  613.          This register contains the code for the command to be performed.
  614.          All other command information should be written to the task 
  615.              file before the command register is loaded. The BUSY bit in 
  616.              the status register will be set when this register is written. 
  617.              Interrupt request to the host is also cleared when this register 
  618.              is written.
  619.          Valid command formats are as follows:
  620.  
  621.         Recalibrate         0 0 0 1 0 0 0 0
  622.         Seek            0 1 1 1 0 0 0 0
  623.         Read Sector        0 0 1 0 0 0 L R
  624.         Write Sector        0 0 1 1 0 0 L R
  625.         Format Track        0 1 0 1 0 0 0 0
  626.         Read Verify        0 1 0 0 0 0 0 R
  627.         Write Verify        0 0 1 1 1 1 0 0
  628.         Diagnostic        1 0 0 1 0 0 0 0
  629.         Read Buffer        1 1 1 0 0 1 0 0
  630.         Write Buffer        1 1 1 0 1 0 0 0
  631.         Set Parameters        1 0 0 1 0 0 0 1
  632.  
  633.         L : ECC        R : Retry
  634.  
  635.          J.  Alternate Status Register
  636.  
  637.          This register contains the same information of the status
  638.          register. However, this register may be read anytime without
  639.          clearing a pending interrupt.
  640.  
  641.          K.     Fixed Disk Control Register
  642.  
  643.          This register contains the software reset bit and the enable
  644.          bit to enable interrupt requests to the host. The bits are 
  645.              defined as follows:
  646.  
  647.         bit 7-3        0
  648.         bit 2        Reset(1 for 5 us minimun)
  649.         bit 1        Interrupt enable
  650.         bit 0        0
  651.  
  652.          L.     Digital Input Register
  653.  
  654.          This register contains information about the state of the 
  655.          drive. The bits are defined as follows:
  656.  
  657.         bit 7        Reserved
  658.         bit 6        Write Gate status(0 - on, 1 - off)
  659.         bit 5-2        Head Select
  660.         bit 1-0        Drive Select
  661.     
  662.  
  663.  
  664.  
  665.      2.3     Timing Consideration
  666.  
  667.          A.      WDD Start Time & Stop Time
  668.  
  669.          The WDD will speed up spindle to desired speed when user
  670.              powers on. 
  671.              The time from power on to spindle settling down is called
  672.          start time. Do not attempt to issue any command during WDD 
  673.              start time, for it will interfere with WDD self test. Generally
  674.              , the WDD start time is approximately 15 seconds. 
  675.     
  676.          The WDD will speed down spindle until stopped when powered off. 
  677.              The time from power off to spindle halt is called stop time.
  678.          Generally, the stop time will be approximately 15 seconds.
  679.  
  680.          
  681.          B.      WDD Access time & Seek Time
  682.  
  683.          The performance of WDD is relative to the access time and seek 
  684.          Time. Generally, the access time and seek time does not affect
  685.          the  WDD  programming sequence. In some WDD,  it supports
  686.              different seek speed that is set using seek command.
  687.     
  688.          C.      WDD  Restart time
  689.  
  690.          In some WDD, it will turn off spindle automatically when it
  691.          detects unstable condition of the power supply, delay some time
  692.              , and turn on the spindle automatically. The time between turn
  693.              off and on of the spindle is called restart time.  The WDD 
  694.              restart time must be  considered in WDD programming sequence 
  695.              when using CONNER WDD.
  696.  
  697.  
  698.  
  699. 3.      Programming Sequence in Fixed Disk Service Program
  700.       
  701.      ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  702.      ;Module_Name: read_sector_hd
  703.      ;Calling Sequence:
  704.      ;
  705.      ;        Input :   AH = 02h
  706.      ;                  AH (in stack) = no_error
  707.      ;                  DL = drive no.(not value check)
  708.      ;                  DH = head no.
  709.      ;                  CH = cylinder low
  710.      ;                  CL =  bit 7-6  -- cylinder high
  711.      ;                        bit 5-0  -- sector no.(1 base)
  712.      ;                  AL = no. of sectors to be read
  713.      ;        output :  AH (in stack) = status of operation
  714.      ;
  715.      ;PDL:    IF WDC valid THEN
  716.      ;           prepare task file
  717.      ;           IF WDC ready THEN
  718.      ;              write READ command to WDC
  719.      ;           ENDIF
  720.      ;           DO 
  721.      ;           IF interrupt occurred THEN
  722.      ;                read one sector from data register
  723.      ;                get result back
  724.      ;           ELSE 
  725.      ;              return error code = 80H (timeout)
  726.      ;           ENDIF
  727.      ;           UNTIL no data to be transferred
  728.      ;        ELSE
  729.      ;           return error code = 01H (invalid function call)
  730.      ;        ENDIF
  731.      ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  732.      page
  733.       
  734.      f02_00:  ; check valid_WDC
  735.       
  736.            call      valid_wdc            ; check valid_wdc
  737.            jc        f02_60               ; goto f02_40 if error occurred
  738.       
  739.      ;     send read command block to WDC
  740.       
  741.            call      write_data           ; Send command
  742.            mov       ah, 021h             ; BX = 021h for read command
  743.            call      out_com              ; out command byte to WDC
  744.            jc        f02_60               ; goto f02_60 if WDC is not ready
  745.            mov       di, [bp-4]           ; DI = offset of transfer address
  746.            call      wait_drq             ;
  747.            jc        f02_60               ;
  748.       
  749.      f02_20:  ; wait DRQ and test 64K boundary
  750.       
  751.            cmp       di, 0fe00h           ; in 64K boundary
  752.            jb        f02_30               ; goto f02_30 if there is no boundary error
  753.            mov       ax, es               ;
  754.            add       ax, 20h              ;
  755.            mov       es, ax               ; adjust ES
  756.            sub       di, 200h             ; adjust DI
  757.      f02_30:
  758.            call      wait_int             ; wait_interrupt
  759.            jc        f02_60               ; goto f02_60 if time out
  760.            mov       dx, hd_port0         ; data register
  761.            mov       cx, 100h             ; count = 256 words
  762.            cld                            ;
  763.            cli                            ;
  764.            rep       insw                 ;
  765.            sti                            ;
  766.       
  767.      ;     get result back
  768.       
  769.            call      get_result           ; get result byte into AL
  770.            jc        f02_60               ;
  771.            dec       byte ptr [bp-2]      ;
  772.            jnz       f02_20               ;
  773.      f02_60:
  774.            jmp       disk_end
  775.       
  776.  
  777.  
  778.  
  779.              5.      Q & A
  780.