home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / doc.all / icp < prev    next >
Encoding:
Text File  |  1992-03-11  |  153.7 KB  |  4,072 lines

  1. 0. ÅαÑñ¿ß½«ó¿Ñ...................................................  1
  2. 1. çáΘ¿Γá «Γ ¬«»¿α«óá¡¿∩, «ß¡«óá¡¡á∩ ¡á ¬½ετÑó«¼ ñ¿ß¬Ñ...........  1
  3.  1.1 MFM ºá»¿ß∞ ñá¡¡δσ ú¿í¬«ú« ñ¿ß¬á.............................  1
  4.   1.1.1 Éáºñѽѡ¿Ñ ñó«¿τ¡δσ αáºα∩ñ«ó.............................  2
  5.   1.1.2 Å«½Ñ ß¿¡σα«¡¿ºáµ¿¿ ¿ íá⌐Γ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.................  2
  6.   1.1.3 Å«½¡δ⌐ Σ«α¼áΓ ñ«α«ª¬¿....................................  3
  7.  1.2 è«¡Γα«½½Ñα ú¿í¬«ú« ñ¿ß¬á INTEL 8272A........................  3
  8.   1.2.1 ÉÑú¿ßΓαδ 8272A...........................................  4
  9.   1.2.2 Äíº«α ¬«¼á¡ñ 8272A.......................................  4
  10.   1.2.3 Ä»¿ßá¡¿Ñ ¬«¼á¡ñ ¬«¡Γα«½½Ñαá 8272A........................  7
  11.   1.2.4 è«¡Γα«½½Ñα ú¿í¬«ú« ñ¿ß¬á AT.............................. 10
  12.   1.2.5 "ì«α¼á½∞¡δÑ" Σ«α¼áΓδ ñ¿ß¬ÑΓδ PC.......................... 11
  13.  1.3 æ»«ß«í óαѼ∩¡Ñºáó¿ß¿¼«⌐ ºáΘ¿Γδ.............................. 12
  14.   1.3.1 ä«»«½¡¿Γѽ∞¡δÑ ¿½¿  «ΓßπΓßΓóπεΘ¿Ñ ßÑ¬Γ«αá................ 12
  15.   1.3.2 æ½áíδÑ ñó«¿τ¡δÑ αáºα∩ñδ.................................. 13
  16.   1.3.3 äá¡¡δÑ ó »α«¼ÑªπΓ¬Ñ...................................... 13
  17.   1.3.4 æÑ¬Γ«αá íѺ ¼ÑΓ¬¿ áñαÑßá ñá¡¡δσ.......................... 14
  18.   1.3.5 æÑ¬Γ«αá íѺ áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá........ 14
  19.   1.3.6 æÑ¬Γ«αá ß »½«σ«⌐ áñαÑß¡«⌐ ¼ÑΓ¬«⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá.. 15
  20.   1.3.7 Å«½Ñ ñá¡¡δσ, »ÑαÑñáóáѼ«Ñ »« áñαÑß¡«⌐ ¼ÑΓ¬Ñ ¿¡ñѬßá...... 15
  21.   1.3.8 î¡«ú«ß¬«α«ßΓ¡δÑ ñ«α«ª¬¿.................................. 16
  22.   1.3.9 ä«ßΓπ» ¬ ñá¡¡δ¼ τÑαѺ »α«¼ÑªπΓ«¬......................... 16
  23.   1.3.10 æπ¼áßΦÑñΦ¿Ñ ¿ñÑ¿........................................ 17
  24.  1.4 Äß¡«óá¡¡δÑ ¡á Γá⌐¼ÑαÑ ß»«ß«íδ ºáΘ¿Γδ........................ 17
  25.   1.4.1 Å«α∩ñ«¬ ¬«¡Γα«½∩ ßÑ¬Γ«α«ó................................ 17
  26.   1.4.2 êº¼ÑαÑ¡¿Ñ ß¬«α«ßΓ¿ »ÑαÑß佬¿ ñá¡¡δσ...................... 17
  27.  1.5 çáΘ¿Γá, «ß¡«óá¡¡á∩ ¡á ß»Ñµ¿á½∞¡δσ á»»áαáΓ¡δσ ßαÑñßΓóáσ...... 18
  28.   1.5.1 î«ñ¿Σ¿µ¿α«óá¡¡δÑ MFM-Σ«α¼áΓδ............................. 18
  29.   1.5.2 ÅÑαÑαẼÑΘÑ¡¡δÑ ñ«α«ª¬¿ ñá¡¡δσ........................... 18
  30.   1.5.3 ìÑßΓá¡ñáαΓ¡δѠ߬«α«ßΓ¿ »ÑαÑß佬¿......................... 18
  31.  1.6 Åα¿¼Ñαδ ßσѼ ºáΘ¿Γδ......................................... 19
  32.   1.6.1 Å«¼«Θ¡¿¬, τπóßΓóπεΘ¿⌐ IBM................................ 19
  33.   1.6.2 SuperLok................................................. 19
  34.   1.6.3 Cops CopyLock II......................................... 20
  35.   1.6.4 Ö¿Γ PC................................................... 20
  36. 2. çáΘ¿Γá, «ß¡«óá¡¡á∩ ¡á ªÑßΓ¬«¼ ñ¿ß¬Ñ........................... 21
  37.  2.1 çáΘ¿Γá ¡á πα«ó¡Ñ τ¿»á....................................... 21
  38.  2.2 çáΘ¿Γá ¡á πα«ó¡Ñ BIOS....................................... 23
  39.   2.2.1 êº¼Ñ¡Ñ¡¿∩ ¿¡ΓÑ૨óá...................................... 23
  40.   2.2.2 êº¼Ñ¡Ñ¡¡δÑ ¡«¼Ñαá ßÑ¬Γ«αá................................ 24
  41.   2.2.3 ìѿ߻«½∞ºπѼδÑ ñ¿ß¬«óδÑ «í½áßΓ¿.......................... 24
  42.  2.3 çáΘ¿Γá ¡á πα«ó¡Ñ DOS........................................ 24
  43.   2.3.1 çáó¿ß¿¼«ßΓ∞ «Γ ¡«¼Ñαá ¬½áßΓÑαá........................... 24
  44.   2.3.2 ìѿ߻«½∞ºπѼδÑ (ºáαѺÑαó¿α«óá¡¡δÑ) ñ¿ß¬«óδÑ «í½áßΓ¿...... 25
  45.   2.3.3 ìѿ߻«½∞ºπѼδÑ («¬απú½Ñ¡¡δÑ ñ« αẼÑαá ¬½áßΓÑαá)......... 25
  46. 3. æ¿ßΓѼᠺáΘ¿Γδ ¡á «ß¡«ó¡«⌐  »½áΓÑ ¿ ß¿ßΓѼѠBIOS.............. 25
  47.  3.1 æ»«ß«í, «ß¡«óá¡¡δ⌐ ¡á ñá¡¡δσ................................ 25
  48.  3.2 æ»«ß«í, «ß¡«óá¡¡δ⌐ ¡á óαѼѡ¿............................... 25
  49. 4. Åα¿½«ªÑ¡¿Ñ A. Åα«ßΓá∩ »α«úαá¼¼á 8272A......................... 26
  50. 5. Åα¿½«ªÑ¡¿Ñ B. Åα«ßΓá∩ »α«úαá¼¼á ΓÑßΓ¿α«óá¡¿∩ HDC.............. 46
  51. 6. Åα¿½«ªÑ¡¿Ñ C. èᬠóδ∩ß¡¿Γ∞ ¡«¼Ñα ¬½áßΓÑαá..................... 55
  52. 7. Åα¿½«ªÑ¡¿Ñ D. ä«ßΓπ» ¬ σó«ßΓπ Σá⌐½á........................... 60
  53. 8. Åα¿½«ªÑ¡¿Ñ E. èᬠ«Γ½¿τáΓ∞ «ß¡«ó¡δÑ »½áΓδ..................... 60
  54.     
  55.                            0. ÅαÑñ¿ß½«ó¿Ñ
  56.  
  57.    æ½ÑñπεΘÑÑ «íßπªñÑ¡¿Ñ »α«í½Ñ¼ ºáΘ¿Γδ ¬«»¿¿ »«τΓ¿ »«½¡«ßΓ∞ε íếαπ-
  58. ÑΓß∩ ¡á ¡áΦ¿σ ß«íßΓóÑ¡¡δσ «»δΓáσ ß ºáΘ¿ΘÑ¡¡δ¼ «Γ  ¬«»¿α«óá¡¿∩  »α«ú-
  59. αá¼¼¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼ PC ¿ ½¿τ¡δ¼¿ ¬«¡Γá¬ΓἿ ¡áΦ¿¼¿ ¬«½½ÑúἿ.  æ½Ñ-
  60. ñ«óáΓѽ∞¡«,  »α¿óÑñÑ¡¡δÑ ºñÑß∞ Σá¬Γδ ¡Ñ  ¼«úπΓ  αáßß¼áΓα¿óáΓ∞ß∩  ¬á¬
  61. áíß«½εΓ¡á∩ ¿ßΓ¿¡á (¿½¿ ¿ßΓ¿¡á ó««íΘÑ).  ¥Γ«Γ ñ«¬π¼Ñ¡Γ ¡Ñ απ¬«ó«ñßΓó«
  62. ¡á αáºαáí«Γ¬Ñ ßσѼ ºáΘ¿Γδ ¬«»¿¿,  ¡« ¬αáΓ¬«Ñ  óóÑñÑ¡¿Ñ  ó  »α«í½Ñ¼π.
  63. èΓ«-½¿í«,  ¿ß»«½∞ºπεΘ¿⌐ φëàñ«¬π¼Ñ¡Γ ¿½¿ »«ßΓáó½∩ѼδÑ ß ¡¿¼ »α¿¼Ñαδ
  64. ñ½∩ αáºαáí«Γ¬¿ »α«úαá¼¼¡δσ ¿½¿ á»»áαáΓ¡δσ ßαÑñßΓó ºáΘ¿Γδ «Γ  ¬«»¿α«-
  65. óá¡¿∩ íπñÑΓ ¡áαπΦáΓ∞ ½¿µÑ¡º¿«¡¡«Ñ ß«ú½áΦÑ¡¿Ñ.
  66.    ì¿¬á¬¿Ñ á߻ѬΓδ ºáΘ¿Γδ «Γ ¬«»¿α«óá¡¿∩ ºñÑß∞ ¡Ñ ß¬αδóáεΓß∩.  Äñ¡á-
  67. ¬«,  óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ φΓ¿ ñá¡¡δÑ Γ«½∞¬« ß«ú½áß¡« ºá¬«¡π.  àß½¿
  68. ¡ÑΓ ºá¬«¡á « »α«úαá¼¼¡«¼ «íÑß»ÑτÑ¡¿¿ ¥éî (¬á¬ ó æ«óÑΓ߬«¼ æ«εºÑ), óδ
  69. ñ«½ª¡δ  óßÑúñá  απ¬«ó«ñßΓó«óáΓ∞ß∩  ¼«αá½∞¡δ¼¿  ß««íαáªÑ¡¿∩¼¿.  îδ ¡Ñ
  70. ¡ÑßѼ «ΓóÑΓßΓóÑ¡¡«ßΓ∞ ºá ½εí«Ñ ¡Ñ»«ñσ«ñ∩ΘÑÑ »α¿¼Ñ¡Ñ¡¿Ñ  φΓ«ú«  ñ«¬π-
  71. ¼Ñ¡Γá ¿ »«ßΓáó½∩Ѽδσ ß ¡¿¼ »α«úαá¼¼.
  72.    éδ πó¿ñ¿ΓÑ, τΓ« »α¿¼Ñαδ ºáΘ¿Γδ ¡Ñ߬«½∞¬« ¼á½«τ¿ß½Ñ¡¡δ ¿ ¡Ñ óßÑúñá
  73. ß«óαѼѡ¡δ.  (ìá»α¿¼Ñα, ºá¼«¬ »áαώѽ∞¡«ú« »«αΓá - ó ¡áßΓ«∩ΘÑ óαѼ∩
  74. ¡á¿í«½ÑÑ »«»π½∩α¡«Ñ πßΓα«⌐ßΓó« ºáΘ¿Γδ - ¡Ñ αáßß¼áΓα¿óáÑΓß∩  ó««íΘÑ).
  75. Åα¿¡¿¼á∩  ó« ó¡¿¼á¡¿Ñ úÑ«úαáΣ¿τÑ߬«Ñ »«½«ªÑ¡¿Ñ ì«ó«ß¿í¿α߬á,  ó φΓ«¼
  76. óα∩ñ ½¿ ÑßΓ∞ ¡áΦá ó¿¡á.
  77.    ïεíá∩ αáí«Γá φΓ«ú« ó¿ñá óßÑúñá íếαπÑΓß∩ ¡á »«ññÑαª¬Ñ ñαπú¿σ φ¡-
  78. Γπº¿áßΓ«ó,  »«Γ«¼π τΓ« ¡¿¬Γ« ¡Ñ ¼«ªÑΓ »α¿«íαÑßΓ¿ óßÑ (¿½¿ ¡Ñ¬«Γ«αδÑ,
  79. »«Γ«¼π  τΓ« «¡¿ »α«ñáεΓß∩ ºá ΓóÑαñπε óá½εΓπ) ¡«óδÑ ºáΘ¿ΘÑ¡¡δÑ «Γ ¬«-
  80. »¿α«óá¡¿∩ »α«úαá¼¼δ. Å«φΓ«¼π îδ óδαáªáѼ ¡áΦπ ú½πí«¬πε í½áú«ñáα¡«ßΓ∞
  81. óßѼ, ¬Γ« «íÑß»Ñτ¿½ ¡áß ºáΘ¿ΘÑ¡¡δ¼ »α«úαá¼¼¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼ PC.
  82.  
  83.    æÑαúÑ⌐ ÅáΦ¬«ó¿τ, ì«ó«ß¿í¿α߬                        06 êε¡∞ 1991
  84.  
  85.  
  86.        1. çáΘ¿Γá «Γ ¬«»¿α«óá¡¿∩, «ß¡«óá¡¡á∩ ¡á ¬½ετÑó«¼ ñ¿ß¬Ñ
  87.  
  88.    ¥Γ«Γ Γ¿» (¿½¿,  ß¬«αÑÑ,  Γ¿»δ) ºáΘ¿Γδ ¿¼ÑÑàëàªÑ ßá¼δ⌐  ó«ºαáßΓ
  89. ¬á¬  ¿  ßá¼ PC.  â«ñδ αáºó¿Γ¿∩ ¿ ß½«ª¡δÑ á»»áαáΓ¡δÑ ßαÑñßΓóá ú¿í¬«ú«
  90. ñ¿ß¬á óδºδóáεΓ »«∩ó½Ñ¡¿Ñ ¼¡«ú«τ¿ß½Ñ¡¡δσ ¼ÑΓ«ñ«ó ºáΘ¿Γδ. ò«Γ∩ ¡Ññáó¡«
  91. »«∩ó¿½ß∩  ¼ÑΓ«ñ ºá¼¬á »áαώѽ∞¡«ú« »«αΓá,  ¼ÑΓ«ñ¿¬á ¬½ετÑó«ú« ñ¿ß¬á
  92. ¬áªÑΓß∩ Γαáñ¿µ¿«¡¡«⌐,  τΓ« «íπß½«ó½Ñ¡«, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ, ñóπ¼∩ »αÑ¿-
  93. ¼πΘÑßΓóἿ. é«-»Ñαóδσ,  ¬½ετÑó«⌐  ñ¿ß¬  ¼«ªÑΓ «ñ¡«óαѼѡ¡« ¿ß»«½∞º«-
  94. óáΓ∞ß∩ ¬á¬ ñ¿ßΓα¿íπΓ¿ó¡δ⌐ ñ¿ß¬ ¿ ó«-óΓ«αδσ,  φΓ«Γ Γ¿»  ºáΘ¿Γδ  «τÑ¡∞
  95. ñÑΦÑóδ⌐ (¡«, ΓѼ ¡Ñ ¼Ñ¡ÑÑ, ¼á½« τπóß¿Γó¿Γѽ∞¡δ⌐ ¬ óº½«¼π). Æá¬, ¬½ε-
  96. τÑóδÑ ñ¿ß¬¿ ÑΘÑ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ß∩  ñ½∩  Φ¿α«¬«  αáß»α«ßΓαá¡∩Ѽ«ú«
  97. »α«úαá¼¼¡«ú«  «íÑß»ÑτÑ¡¿∩ »Ñαß«¡á½∞¡«ú« ¿ß»«½∞º«óá¡¿∩.  Å«-¼«Ñ¼π,  ó
  98. æææÉ »αÑ«í½áñáÑΓ ¬½ετÑóá∩ ºáΘ¿Γá.
  99.    ùΓ«íδ »«¡∩Γ∞ ß»«ß«í ºáΘ¿Γδ ¬«¡Γα«½½Ñαá ú¿í¬«ú« ñ¿ß¬á (FDC), ¡πª¡«
  100. º¡áΓ∞ «ß¡«ó¡δÑ ñá¡¡δÑ ¿ «»Ñαᵿ¿ FDC.  äáóá⌐ΓÑ ΓÑ»Ñα∞ αáßß¼«Γα¿¼ ¿σ.
  101. (Åα¿¼Ñτá¡¿Ñ:  Éáºñѽδ 1.1 ¿ 1.2 ú½áó¡δ¼ «íαẫ¼ íếαπεΓß∩ ¡á  ñ«¬π-
  102. ¼Ñ¡Γáσ Σ¿α¼δ INTEL "ê¡Γѽ½Ñ¬Γπá½∞¡á∩ ß¿ßΓѼá íáºδ ñá¡¡δσ, ¿ß»«½∞ºπε-
  103. Θá∩ 8272 ","8272 ¬«¡Γα«½½Ñα ú¿í¬«ú«  ñ¿ß¬á  «ñ¿¡áα¡«⌐/ñó«⌐¡«⌐  »½«Γ-
  104. ¡«ßΓ¿ ",  "8272A ¬«¡Γα«½½Ñα ú¿í¬«ú«  ñ¿ß¬á  «ñ¿¡áα¡«⌐/ñó«⌐¡«⌐  »½«Γ-
  105. ¡«ßΓ¿").
  106.  
  107.                 1.1 MFM ºá»¿ß∞ ñá¡¡δσ ú¿í¬«ú« ñ¿ß¬á
  108.  
  109.    ö«α¼áΓ ¿º¼Ñ¡∩Ѽ«⌐   τáßΓ«Γ¡«⌐   ¼«ñπ½∩µ¿¿   (MFM)  ú¿í¬«ú«  ñ¿ß¬á
  110. »αÑñßΓáó½Ñ¡ ó ß¿ßΓѼѠIBM 34 ¿ τáßΓ« ¡áºδóáÑΓß∩ "ñó«⌐¡«⌐  »½«Γ¡«ßΓ∞ε
  111. ºá»¿ß¿".  ÆÑନ¡ " «ñ¿¡áα¡á∩ »½«Γ¡«ßΓ∞ ºá»¿ß¿" ß««ΓóÑΓßΓóπÑΓ «íδτ¡«⌐
  112. τáßΓ«Γ¡«⌐ ¼«ñπ½∩µ¿¿ Σ«α¼áΓá IBM 3740  (FM),  ¬«Γ«αδ⌐  ¿ß»«½∞º«óá½  4
  113. ¼¬ß,  τΓ«íδ  ºá»¿ßáΓ∞ «ñ¿¡ í¿Γ ñá¡¡δσ.  Äα¿ú¿¡á½ MFM ºá»¿ßδóáÑΓ «ñ¿¡
  114. í¿Γ ó 2-¼¬ß ∩τÑ⌐¬π, ¡« ñ½∩ »∩Γ¿ñε⌐¼«óδσ ñ¿ß¬ÑΓ IBM PC ¿ß»«½∞º«óá½áß∞
  115. 4-¼¬ß ∩τÑ⌐¬á. æ½Ññ«óáΓѽ∞¡«, íÑßΣ«α¼áΓ¡δ⌐ αẼÑα «ñ¡«⌐ ñ«α«ª¬¿ íπñÑΓ
  116. 6.1 èü. Æá¬ ¡áºδóáѼδÑ ñ¿ß¬¿ PC "óδß«¬«⌐ »½«Γ¡«ßΓ¿" »α«ßΓ« óδ»«½¡∩εΓ
  117. 2-¼¬ß í¿Γ«óπε ∩τÑ⌐¬π «α¿ú¿¡á½∞¡«⌐ MFM-߻ѵ¿Σ¿¬áµ¿¿.
  118.  
  119.                                 - 2 -
  120.  
  121.                  1.1.1 Éáºñѽѡ¿Ñ ñó«¿τ¡δσ αáºα∩ñ«ó
  122.  
  123.    çỿß∞ ñá¡¡δσ ó Σ«α¼áΓÑ FM »α«ßΓá∩: ¡áτὫ ¬áªñ«ú« «ñ¡«αáºα∩ñ¡«ú«
  124. αÑú¿ßΓαá «»αÑñѽ∩ÑΓß∩ Γᬠ¡áºδóáÑ¼δ¼ í¿Γ«¼ ß¿¡σα«¡¿ºáµ¿¿,  ¿  Σá¬Γ¿-
  125. τÑ߬¿Ñ ñá¡¡δÑ ºá»¿ßá¡δ ó µÑ¡ΓαÑ ¬áªñ«⌐ ∩τÑ⌐¬¿ (í¿Γ ñá¡¡δσ) (æ¼. α¿ß.
  126. 1.1.1a ). Æá¬á∩ ¼ÑΓ«ñ¿¬á »«ºó«½∩ÑΓ »α«ßΓ« αẽ¿τáΓ∞ í¿Γδ, ¡« τáßΓ«Γ-
  127. ¡δÑ  ºáΓαáΓδ ó«ºαáßΓáεΓ óñó«Ñ,  Γᬠ¬á¬ ¡Ñ«íσ«ñ¿¼« ß«σαá¡∩Γ∞ ñá¡¡δÑ.
  128. Äñ¡á¬«,  »«½¡«Ñ πñá½Ñ¡¿Ñ  í¿Γ«ó  ß¿¡σα«¡¿ºáµ¿¿  óδºδó«óÑΓ  »«∩ó½Ñ¡¿Ñ
  129. í«½∞Φ«ú«  τ¿ß½á ¡ÑαáßΦ¿α«óá¡¡δσ ¡π½Ñóδσ í¿Γ«ó ¿º-ºá »α«¿ºó«½∞¡δσ ¿º-
  130. ¼Ñ¡Ñ¡¿⌐ ß¬«α«ßΓ¿ óαáΘÑ¡¿∩ ñ¿ß¬á ¿ úÑ¡ÑαáΓ«αá ¬«Γα«½½Ñαá.
  131.  
  132.            │  ┌┐      ┌┐           │  ┌┐                   │
  133.            │  ││      ││           │  ││                   │
  134.            │  ││      ││           │  ││                   │
  135.      ──────┼───────────────────────┼───────────────────────┼─────
  136.                      '1'                      '0'
  137.                    É¿ß. 1.1.1a FM-ºá»¿ß∞ ñá¡¡δσ.
  138.  
  139.     êº-ºá Γᬫú«  ¡Ññ«ßΓáΓ¬á,  ¡á¿í«½∞ΦÑÑ ¬«½¿τÑßΓó« í¿Γ«ó ó MFM ºá-
  140. »¿ßδóáÑΓß∩ ß½ÑñπεΘ¿¼ «íαẫ¼: í¿Γ ß¿¡σα«¡¿ºáµ¿¿ ºá»¿ßδóáÑΓß∩ ó ¡áτá-
  141. ½Ñ  í¿Γ«ó«⌐  ∩τÑ⌐¬¿,  Ñß½¿ ó »αÑñδñπΘÑ⌐ ¿ ΓѬπΘÑ⌐ ∩τÑ⌐¬Ñ ¡Ñ ºá»¿ßá¡δ
  142. í¿Γδ (æ¼.  α¿ß.  1.1.1b).  Æá¬«Ñ ¬«ñ¿α«óá¡¿Ñ ñѽáÑΓ αáºñѽѡ¿Ñ í¿Γ«ó
  143. α∩ñ«ó í«½ÑÑ Γαπñ¡«⌐ ºáñáτÑ⌐, ¡« »ÑαѼÑΘáÑΓ í¿Γδ ß¿¡σα«¡¿ºáµ¿¿ í½¿º¬«
  144. ¬ ¡áτá½π í¿Γ«ó«⌐ ∩τÑ⌐¬¿.
  145.  
  146.            │   |┌┐     │   |┌┐     │   |       │ ┌┐ |      │
  147.            │   |││     │   |││     │   |       │ ││ |      │
  148.            │   |││     │   |││     │   |       │ ││ |      │
  149.      ──────┼───────────┼───────────┼───────────┼───────────┼─────
  150.                '1'          '1'        '0'          '0'
  151.                    É¿ß. 1.1.1b MFM-ºá»¿ß∞ ñá¡¡δσ.
  152.  
  153.     ïÑú¬« πó¿ñÑΓ∞,  τΓ«  º¡áτÑ¡¿Ñ ¿ FM- ¿ MFM-¬«ñ¿α«óá¡¿∩ ºáó¿ß¿Γ «Γ
  154. ¡áτá½∞¡«⌐ »«º¿µ¿¿ í¿Γ«ó«⌐ ∩τÑ⌐¬¿.  ìá»α¿¼Ñα, Ñß½¿ ¼δ αẼÑßΓ¿¼ í¿Γδ,
  155. ¬á¬ »«¬áºá¡« »«ñτÑભπΓ묨 ΦΓα¿σ«ó묨 ½¿¡¿∩¼¿ ¡á α¿ß. 1.1.1b, »«ß½Ñ-
  156. ñ«óáΓѽ∞¡«ßΓ∞ "1100" ßΓá¡ÑΓ "0010". Å«φΓ«¼π, ñ½∩ «íÑ߻ѡ¿∩ «ñ¡«º¡áτ-
  157. ¡«ú« ñѬ«ñ¿α«óá¡¿∩, ¬áªñ«Ñ »«½Ñ ñá¡¡δσ ¡á ñ«α«ª¬Ñ ß«»α«ó«ªñáÑΓß∩ »«-
  158. ½Ñ¼ ß¿¡σα«¡¿ºáµ¿¿.
  159.  
  160.            1.1.2 Å«½Ñ ß¿¡σα«¡¿ºáµ¿¿ ¿ íá⌐Γ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá
  161.  
  162.     MFM-»«½∩ ß¿¡σα«¡¿ºáµ¿¿ ß«ßΓ«∩Γ ¿º 96 í¿Γ«ó ¡π½∩ (Γ« ÑßΓ∞ , ∩τÑ⌐-
  163. ¬¿ ß í¿Γ«¼ ß¿¡σα«¡¿ºáµ¿¿) ¿ íѺ í¿Γ«ó ñá¡¡δσ),  ß »«ß½ÑñπεΘ¿¼¿ ΓαѼ∩
  164. íá⌐ΓἿ A1h (10100001b).  ìπ½ÑóδÑ  í¿Γδ  »«ºó«½∩εΓ  »αáó¿½∞¡«  ¡á⌐Γ¿
  165. ∩τÑ⌐¬π  ñá¡¡δσ,  ¿  A1  - ¿ñÑ¡Γ¿Σ¿µ¿α«óáΓ∞ ¡áτὫ Σá¬Γ¿τÑ߬¿σ íá⌐Γ«ó
  166. ñá¡¡δσ .  ò«Γ∩ ó« óαѼ∩ Σ«α¼áΓ¿¼α«óá¡¿∩ ºá»¿ßδóáÑΓß∩ 12 ¡π½Ñóδσ íá⌐-
  167. Γ«ó,  (φΓ«  º¡áτÑ¡¿Ñ  ¡Ñ ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ß∩ »α«úαá¼¼¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼),
  168. Σá¬Γ¿τÑ߬¿ ¡πªÑ¡ Γ«½∞¬« 1 íá⌐Γ (8 í¿Γ«ó), τΓ«íδ ß¿¡σα«¡¿º¿α«óáΓ∞ í¿-
  169. Γ«óπε ∩τÑ⌐¬π. äαπú¿Ñ 11 ¡π½Ñóδσ íá⌐Γ«ó ¡πª¡δ "¡á óß∩¬¿⌐ ß½πτá⌐".
  170.     FM-»«½∩ ß¿¡σα«¡¿ºáµ¿¿ »α«ßΓδ - «¡¿ ß«ßΓ«∩Γ ¿º 48  ¡π½Ñóδσ  í¿Γ«ó
  171. ¡π½∩. (ìá»α«Γ¿ó, FDC ¡πªñ¡« 8 í¿Γ«ó ñ½∩ íѺ«»áß¡«ßΓ¿) .
  172.     Éẽ¿τ¡δÑ »«½∩ ñá¡¡δσ (»«½∞º«óáΓѽ∞߬¿Ñ ¿ ñ«»«½¡¿Γѽ∞¡δÑ)  ¼«úπΓ
  173. αẽ¿τáΓ∞ß∩  »«  Ññ¿¡ßΓóÑ¡¡«¼π íá⌐Γπ ßαáºπ »«ß½Ñ »«½∩ ß¿¡σα«¡¿ºáµ¿¿.
  174. ¥Γ¿ íá⌐Γδ ¡Ñ ¼«úπΓ ß¼ÑΦ¿óáΓ∞ß∩ ß  ñá¡¡δ¼¿  »«½∞º«óáΓѽ∩,  ñáªÑ  Ñß½¿
  175. »«ß½Ññ¡¿Ñ  ß«ñÑαªáΓ  Γ«τ¡πε  »«ß½Ññ«óáΓѽ∞¡«ßΓ∞  íá⌐Γ«ó  ß¿¡σα«¡¿ºá-
  176. µ¿¿/¿ñÑ¡Γ¿Σ¿¬áΓ«αá,  »«Γ«¼π τΓ« φΓ¿ íá⌐Γδ (¿ Γ«½∞¬« φΓ¿ íá⌐Γδ  )  ¡Ñ
  177. ¿ß»«½∞ºπεΓ ßΓá¡ñáαΓ ß¿¡σα«¡¿º¿απεΘ¿σ í¿Γ«ó.  è ß«ªá½Ñ¡¿ε ,  ¼δ ¿¼ÑѼ
  178. ¿¡Σ«α¼áµ¿ε «Γ¡«ß¿Γѽ∞¡« ß««ΓóÑΓßΓóπεΘ¿σ í¿Γ«ó  ß¿¡σα«¡¿ºáµ¿¿  Γ«½∞¬«
  179. ñ½∩ FM-¬«ñ¿α«óá¡¿∩.  üá⌐Γδ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá, »« óßÑ⌐ ó¿ñ¿¼«ßΓ¿, »α¿¼Ñ-
  180. ¡∩εΓß∩ ΓᬪѠ¿ ó MFM.  (ÄΓ¼ÑΓ¿¼,  τΓ« ó »«½Ñ ñá¡¡δσ  »Ñαóδ¼  ºá»¿ßá¡
  181. ßΓáαΦ¿⌐ íá⌐Γ).
  182.  
  183.  
  184.                                 - 3 -
  185.     Ä»¿ßá¡¿Ñ íá⌐Γá ¿ñÑ¡Γ¿Σ¿¬áΓ«αá »«½∩ ß¿¡σα«¡¿ºáµ¿¿:
  186.  
  187.    FC D7    áñαÑß¡á∩ ¼ÑΓ¬á ¿¡ñѬßá
  188.    FE C7    ¼ÑΓ¬á áñαÑßá ¿ñÑ¡Γ¿Σ¿¬áΓ«αá æÑ¬Γ«αá
  189.    FB C7    ñá¡¡δÑ ßÑ¬Γ«αá
  190.    F8 C7    πñá½Ñ¡¡δÑ ñá¡¡δÑ
  191.    FE C7    ¿ñÑ¡Γ¿Σ¿¬áΓ«α ñÑΣÑ¬Γ¡«⌐ ñ«α«ª¬¿ IBM
  192.  
  193.     ò«Γ∩ ó  ñ«¬π¼Ñ¡Γᵿ¿  Σ¿α¼δ  INTEL »«½Ñ ß¿¡σα«¡¿ºáµ¿¿ óßÑúñá «Γ-
  194. ¡«ß∩Γ ¬ τáßΓ¿ »αÑñΦÑßΓóπεΘÑú« »α«¼ÑªπΓ¬á, ¼δ íπñѼ αáßß¼áΓα¿óáΓ∞ Ñú«
  195. ¬á¬ τáßΓ∞ »«ß½ÑñπεΘÑú« »«½∩ ñá¡¡δσ.
  196.  
  197.                     1.1.3 Å«½¡δ⌐ Σ«α¼áΓ ñ«α«ª¬¿
  198.  
  199.     Æ«τ¬á ßß佬¿  ñ½∩ óßÑσ ñ¿ß¬«óδσ «»Ñαᵿ⌐ - Σ¿º¿τÑ߬á∩ ¿¡ñѬߡá∩
  200. ¼ÑΓ¬á,  ¬«Γ«αá∩ úÑ¡Ñα¿απÑΓß∩ ¿¡ñÑ¬ß¡δ¼ «ΓóÑαßΓ¿Ñ¼ ñ¿ß¬ÑΓδ. éÑß∞ Σ«α-
  201. ¼áΓ  ñ«α«ª¬¿  ¡áτ¿¡áεΘ¿⌐ß∩ ß Σ¿º¿τÑ߬«⌐ ¿¡ñѬߡ«⌐ ¼ÑΓ¬¿ ¿ ¼«ªÑΓ íδΓ∞
  202. «»¿ßδóá¡ ß½ÑñπεΘ¿¼ «íαẫ¼:
  203.    - ö¿º¿τÑ߬á∩ ¿¡ñѬߡá∩ ¼ÑΓ¬á
  204.    - ÅαÑñ¿¡ñѬߡδ⌐ »α«¼ÑªπΓ«¬ (GAP 5)
  205.    - ê¡ñѬߡá∩ ¼ÑΓ¬á áñαÑßá (IAM)
  206.    - Å«ß½Ñ¿¡ñѬߡδ⌐ »α«¼ÑªπΓ«¬ (GAP 1)
  207.    ä½∩ n «Γ 1 ñ« N-1, úñÑ N - τ¿ß½« ßÑ¬Γ«α«ó ¡á ñ«α«ª¬Ñ :
  208.    - êñÑ¡Γ¿Σ¿¬áΓ«α ßÑ¬Γ«αá n
  209.    - Åα«¼ÑªπΓ«¬ »«ß½Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá (GAP 2)
  210.    - äá¡¡δÑ ßÑ¬Γ«αá n
  211.    - Åα«¼ÑªπΓ«¬ »«ß½Ñ ñá¡¡δσ (GAP 3)
  212.    ä½∩ »«ß½Ññ¡Ñú« ßÑ¬Γ«αá ñá¡¡δσ ¡á ñ«α«ª¬Ñ :
  213.    - êñÑ¡Γ¿Σ¿¬áΓ«α ßÑ¬Γ«αá n
  214.    - Åα«¼ÑªπΓ«¬ »«ß½Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá (GAP 2)
  215.    - äá¡¡δÑ ßÑ¬Γ«αá n
  216.    - Å«ß½Ññ¡¿⌐ »α«¼ÑªπΓ«¬ (GAP 4)
  217.    ê¡ñѬߡá∩ ¼ÑΓ¬á  áñαÑßá  (¬«Γ«αá∩ ¡Ñ ¿ß»«½∞ºπÑΓß∩ ñ½∩ ñαπú«⌐ µÑ½¿
  218. 8272A) ¿¼ÑÑΓ ¡Ñ߬«½∞¬« αẽ¿τ¡δσ  »«½Ñ⌐  ß¿¡σα«¡¿ºáµ¿¿:  ó¼ÑßΓ«  A1h
  219. ¿ß»«½∞ºπÑΓß∩ C2h (11000010b), ºá ¬«Γ«αδ¼ ß½ÑñπÑΓ íá⌐Γ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá
  220. FCh (11111100b).
  221.    Å«½Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá ß«ñÑαª¿Γ FEh ºá ¬«Γ«αδ¼ ß½ÑñπεΓ «ñ¡«-
  222. íá⌐Γ«óδÑ º¡áτÑ¡¿∩ C,  H, R, N, úñÑ C - ¡«¼Ñα µ¿½¿¡ñαá, H - ¡«¼Ñα ú«-
  223. ½«ó¬¿,  R  -  ¡«¼Ñαá  ßÑ¬Γ«αá  ¿ N - ¬«ñ αẼÑαá ßÑ¬Γ«αá.  ¥Γ¿ íá⌐Γδ
  224. (ó¬½ετá∩ FEh )  ß«»α«ó«ªñáεΓß∩  16-í¿Γ«ó«⌐  µ¿¬½¿τÑ߬«⌐  ¬«¡Γα«½∞¡«⌐
  225. ßπ¼¼«⌐ (CRC), ÉẼÑα ñá¡¡δσ »«½∞º«óáΓѽ∩ ó ß½ÑñπεΘѼ »«½Ñ ñá¡¡δσ ¼«-
  226. ªÑΓ óδτ¿ß½∩ÑΓß∩ ¬á¬ 128 * 2^N, Γ« ÑßΓ∞, N=0 «»αÑñѽ∩ÑΓ αẼÑα ñá¡¡δσ
  227. ó  128  íá⌐Γ«ó,  N=1  - 256 íá⌐Γ«ó,  N=2 - 512 íá⌐Γ«ó,  ¿ Γᬠñá½ÑÑ.
  228. C=H=R=N=FFh «»αÑñѽ∩ÑΓ ñÑΣÑ¬Γ¡πε ñ«α«ª¬π IBM.
  229.    Å«½Ñ äá¡¡δσ ß«ñÑαª¿Γ FBh,  ºá ¬«Γ«αδ¼ ß½ÑñπεΓ 128 * 2^N íá⌐Γ ñá¡-
  230. ¡δσ »«½∞º«óáΓѽ∩ ¿ ñóá íá⌐Γá CRC.  èᬠó ¿ñÑ¡Γ¿Σ¿¬áΓ«αÑ ßÑ¬Γ«αá, Γá¬
  231. ¿ ó »«½Ñ ñá¡¡δσ CRC óδτ¿ß½∩ÑΓß∩ »« Σ«α¼π½Ñ:  x^16 +x^12+ x^5+1 ß ¡á-
  232. τá½∞¡δ¼ º¡áτÑ¡¿Ñ¼ FFh (¬á¬ óßÑúñá, ßΓáαΦ¿⌐ í¿Γ »Ñαóδ⌐) .
  233.  
  234.               1.2 è«¡Γα«½½Ñα ú¿í¬«ú« ñ¿ß¬á INTEL 8272A
  235.  
  236.     Rumors ß««íΘáÑΓ,  τΓ« »Ñαó«¡áτá½∞¡« PC FDC  óδ»«½¡∩½ß∩  ¡á  τ¿»Ñ
  237. INTEL 8272. è«¡Ñτ¡«, φΓ« ¼«ªÑΓ íδΓ∞ ½εí«⌐ ß«ó¼ÑßΓ¿¼δ⌐ »« óδó«ñá¼ τ¿»
  238. - 8272A,  NEC µPD765,  ¿ Γᬠñá½ÑÑ.  îδ ¡¿¬«úñá ¡Ñ ó¿ñѽ¿ Γᬫú« PC,
  239. ΓᬠτΓ« îδ Γ«½∞¬« ¼«ªÑ¼ ß««íΘ¿Γ∞ «í φΓ«¼.  Äñ¡á¬«,  τΓ«íδ «íÑß»Ñτ¿Γ∞
  240. ß«ó¼ÑßΓ¿¼«ßΓ∞ »« αÑú¿ßΓαá¼ (σ«α«Φá∩ «ß«íÑ¡¡«ßΓ∞ !) ß »Ñαó묨 PC, óßÑ
  241. í«½∞Φ¿¡ßΓó«  ß«óαѼѡ¡δσ  ¬«¡Γα«½½Ñα«ó  »«τΓ¿ «ñ¿¡á¬«ó« ñ½∩ »α«úαá¼-
  242. ¼¿ßΓá.
  243.     è«¼á¡ñδ óδ»«½¡∩εΓß∩ 8272A ó Γα¿ »«ß½Ññ«óáΓѽ∞¡δσ Σáºδ:  Σáºπ ¬«-
  244. ¼á¡ñδ,  Σáºπ óδ»«½¡Ñ¡¿∩ ¿ Σáºá αѺπ½∞ΓáΓá. é ΓÑτÑ¡¿Ñ Σáºδ ¬«¼á¡ñδ ûÅ
  245. ¿¡ßΓαπ¬Γ¿απÑΓ 8272A, τΓ« ¡πª¡« ñѽáΓ∞. é ΓÑτÑ¡¿Ñ Σáºδ óδ»«½¡Ñ¡¿∩ FDC
  246. óδ»«½¡∩ÑΓ ºá»αáΦ¿óáѼ«Ñ ñÑ⌐ßΓó¿Ñ.  éßÑ »ÑαÑß佬¿ ñá¡¡δσ »«½∞º«óáΓѽ∩
  247. (Ñß½¿ «¡¿ ÑßΓ∞) »α«¿ºó«ñ∩Γß∩ ó ΓÑτÑ¡¿Ñ Σáºδ óδ»«½¡Ñ¡¿∩.
  248.  
  249.                                 - 4 -
  250.     çá Σẫ⌐ óδ»«½¡Ñ¡¿∩ ß½ÑñπÑΓ Σẫá αѺπ½∞ΓáΓá,  ¬«úñá FDC ó«ºóαá-
  251. ΘáÑΓ ñá¡¡δÑ ß«ßΓ«∩¡¿∩.
  252.     é Γ« óαѼ∩ ¬á¬ FDC ºá»α«ßδ ñá¡¡δσ ó ΓÑτÑ¡¿Ñ ΣẠ ¬«¼á¡ñδ  ¿  αÑ-
  253. ºπ½∞ΓáΓá ¼«ú½¿  ºáñÑনóáΓ∞ß∩  ñ« íÑ߬«¡Ñτ¡«ßΓ¿ (ñá¡¡δÑ íπñπΓ ß«σαá-
  254. ¡∩Γ∞ß∩ ó ó¡πΓαÑ¡¡¿σ αÑú¿ßΓαá󠬫¡Γα«½½Ñαá 8272A) , óßÑ ºá»α«ßδ FDC ó
  255. ΓÑτÑ¡¿Ñ  Σáºδ óδ»«½¡Ñ¡¿∩ ñ«½ª¡δ πñ«ó½ÑΓó«α∩Γ∞ß∩ ¡Ñ¼Ññ½Ñ¡¡«,  ¿½¿ FDC
  256. íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ «Φ¿í¬π «ª¿ñá¡¿∩ ¿ ºáóÑαΦ¿Γ «»Ñαᵿε. æΓα«ú« ú«ó«-
  257. α∩ , ºá»α«ß ñá¡¡δσ ¡Ñ ¼«ªÑΓ ºáñÑনóáΓ∞ß∩ ñ«½∞ΦÑ óαѼѡ¿ »ÑαÑß佬¿ 8
  258. í¿Γ«ó. æ½Ññ«óáΓѽ∞¡«, ¡á 360-Kü ñ¿ß¬«ó«ñÑ , ¬«Γ«αδ⌐ αáí«ΓáÑΓ ¡á 250K
  259. (1K  ºñÑß∞  = 1000) í¿Γ ó ßѬπ¡ñπ (Kí«ñ),  FDC íπñÑΓ »ÑαÑñáóáΓ∞ íá⌐Γ
  260. ñá¡¡δσ ¬áªñδÑ 32 µs ¿½¿ 31250 íá⌐Γ«ó ¡á ßѬπ¡ñπ.
  261.    ò«Γ∩ ßá¼  8272A  ¼«ªÑΓ ñÑ⌐ßΓ«ó«áΓ∞ ¬á¬ ó αѪ¿¼Ñ »α∩¼«ú« ñ«ßΓπ»á ¬
  262. »á¼∩Γ¿ (DMA),  Γᬠ¿ íѺ ¡Ñú«, Γ«½∞¬« «Γ¡«ß¿Γѽ∞¡« íδßΓαδ⌐ ûÅ ß»«ß«-
  263. íÑ¡  ¡á  »ÑαÑñáτπ ñá¡¡δσ ß Γᬫ⌐ ß¬«α«ßΓ∞ε.  éδ»«½¡Ñ¡¿Ñ FDC ó αѪ¿¼Ñ
  264. ¡Ñ-DMA ¡á ñ¿ß¬áσ ñó«⌐¡«⌐ »½«Γ¡«ßΓ¿ ΓαÑíπÑΓ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ûÅ  80286
  265. ß Γá¬Γ«ó«⌐ τáßëë⌐ 6 Mâµ,  ó Γ« óαѼ∩,  ¬á¬ ñ¿ß¬ÑΓá ß óδß«¬«⌐ »½«Γ-
  266. ¡«ßΓ∞ε AT íπñÑΓ ΓαÑí«óáΓ∞ óßÑ 10 îâµ.
  267.  
  268.                         1.2.1 ÉÑú¿ßΓαδ 8272A
  269.  
  270.    ù¿» 8272A ßó∩ºá¡ ß ûÅ τÑαѺ ñóá αÑú¿ßΓαá:  ú½áó¡δ⌐ αÑú¿ßΓα ß«ßΓ«-
  271. ∩¡¿∩ (MSR) ¿ αÑú¿ßΓα ñá¡¡δσ (DR). MSR ñ«ßΓπ»Ñ¡ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩. DR
  272. ¼«ªÑΓ τ¿ΓáΓ∞ß∩ ¿½¿ ºá»¿ßδóáΓ∞ß∩,  τΓ« «»αÑñѽ∩ÑΓß∩  í¿Γ«¼  RQM  MSR.
  273. ç¡áτÑ¡¿Ñ í¿Γ«ó ó MSR »α¿óÑñÑ¡« ¡á α¿ß. 1.2.1a.
  274.  
  275.  ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  276.  │ RQM │ DIO │ NDM │ CB  │ D3B │ D2B │ D1B │ D0B │
  277.  └──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┘
  278.     │     │     │     │     │     │     │     └── Åα¿ó«ñ 0 ºá¡∩Γ
  279.     │     │     │     │     │     │     └──────── Åα¿ó«ñ 1 ºá¡∩Γ
  280.     │     │     │     │     │     └────────────── Åα¿ó«ñ 2 ºá¡∩Γ
  281.     │     │     │     │     └──────────────────── Åα¿ó«ñ 3 ºá¡∩Γ
  282.     │     │     │     └────────────────────────── FDC ºá¡∩Γ
  283.     │     │     └──────────────────────────────── ¡Ñ-DMA αѪ¿¼
  284.     │     └────────────────────────────────────── éó«ñ/óδó«ñ ñá¡¡δσ
  285.     └──────────────────────────────────────────── çá»α«ß ¡á îáßΓÑαá
  286.            É¿ß. 1.2.1a â½áó¡δ⌐ αÑú¿ßΓα ß«ßΓ«∩¡¿∩ 8272A.
  287.  
  288.    Éáºα∩ñδ DxB  íπñπΓ  πßΓá¡áó½¿óáΓ∞ß∩  ó  1,  Γ«úñá ß««ΓóÑΓßΓóπεΘ¿⌐
  289. ñ¿ß¬«ó«ñ óδ»«½¡∩ÑΓ ¬«¼á¡ñπ  πßΓᡫ󬿠 ¿½¿  »ÑαѬ὿íα«ó¬¿.  ü¿Γ  CB
  290. πßΓá¡áó½¿óáÑΓß∩, Γ«úñá FDC óδ»«½¡∩ÑΓ «»Ñαᵿε τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿. NDM
  291. πßΓá¡áó½¿óáÑΓß∩,  ¬«úñá FDC ¡áσ«ñ¿Γß∩ ó ΣáºÑ óδ»«½¡Ñ¡¿∩ ¿  ºá»αÑΘÑ¡δ
  292. «»Ñαᵿ¿  DMA  (φΓ«  π¬áºδóáÑΓΓᬪÑ,  τΓ«  í«½∞ΦÑÑ ¬«½¿τÑßΓó« ñá¡¡δσ
  293. ñ«½ª¡δ »«ñáóáΓ∞ß∩ ¿½¿ τ¿ΓáΓ∞ ¿º DR).  DIO íπñÑΓ  Ññ¿¡¿µÑ⌐,  Ñß½¿  ûÅ
  294. ñ«½ªÑ¡ τ¿ΓáΓ∞ ñá¡¡δÑ ¿º DRÇ ¿ ¡π½Ñ¼,  Ñß½¿ ûÅ ñ«½ªÑ¡ »«ñáóáΓ∞ ñá¡¡δÑ
  295. ó DR. RQM = 1 π¬áºδóáÑΓ, τΓ« DR ú«Γ«ó »ÑαÑß½áΓ∞ ß½ÑñπεΘ¿⌐ íá⌐Γ. ìá»-
  296. αáó½Ñ¡¿Ñ »ÑαÑß佬¿ ºáó¿ß¿Γ «Γ º¡áτÑ¡¿∩ DIO.
  297.    8272A ß«σαá¡∩ÑΓ ΓѬπΘ¿⌐ ¡«¼Ñα µ¿½¿¡ñαá  ó«  ó¡πΓαÑ¡¡¿σ  αÑú¿ßΓαáσ
  298. ñ½∩ ¬áªñ«ú« ñ¿ß¬«ó«ñá, ß«Ññ¿¡Ñ¡¡«ú« ß ¡¿¼. Æá¬ ¬á¬ ñ¿ß¬«ó«ñ ñ½∩ ú¿í-
  299. ¬¿σ ñ¿ß¬ÑΓ ¡Ñ ¼«ªÑΓ «Γ½¿τáΓ∞ «ñ¿¡ µ¿½¿¡ñα «Γ ñαπú«ú« (¬α«¼Ñ µ¿½¿¡ñαá
  300. 0),  φΓ«  ¡Ñ«íσ«ñ¿¼«,  τΓ«íδ  óδ»«½¡∩Γ∞ «»Ñαᵿ¿ πßΓá¡«ó¬¿,  ¬«Γ«αδÑ
  301. Γαá¡ß½¿απεΓß∩ FDC ó ¿¼»π½∞ß Φáúá ñ¿ß¬«ó«ñá.  ¥Γ¿ αÑú¿ßΓαδ  «τ¿ΘáεΓß∩
  302. ßíα«ß«¼  FDC (¡« ñ¿ß¬«ó«ñ ú¿í¬«ú« ñ¿ß¬á ¡Ñ íπñÑΓ ó«ºóαáΘáΓ∞ß∩ ¡á ñ«-
  303. ᫪¬π 0 »α¿ ßíα«ßÑ).
  304.    äαπú¿Ñ ó᪡δÑ  ó¡πΓαÑ¡¡¿Ñ  αÑú¿ßΓαδ ß«ñÑαªáΓ óαѼ∩ ß¬«α«ßΓ¿ Φáúá,
  305. óδúαπº¬¿ ¿ ºáúαπº¬¿ ú«½«ó¬¿ (ß¼. ¬«¼á¡ñπ Ä»αÑñѽ¿Γ∞).
  306.  
  307.                       1.2.2 Äíº«α ¬«¼á¡ñ 8272A
  308.  
  309.    è«¼á¡ñδ 8272A ¼«úπΓ íδΓ∞ αáºñÑ½Ñ¡δ ¡á Γα¿ úαπ»»δ:  »ÑαÑß佬á ñá¡-
  310. ¡δσ »«½∞º«óáΓѽ∩,  π»αáó½Ñ¡¿Ñ ñ¿¼¬«¼ ¿ ñ¿áú¡«ßΓ¿τÑ߬¿Ñ ßαÑñßΓóá. ÅÑ-
  311. αÑß佬á ñá¡¡δσ »«½∞º«óáΓѽ∩ ó¬½ετáÑΓ τΓÑ¡¿Ñ ñá¡¡δσ, τΓÑ¡¿Ñ πñá½Ñ¡¡δσ
  312. ñá¡¡δσ,  ºá»¿ß∞  ñá¡¡δσ,  ºá»¿ß∞  πñá½Ñ¡¡δσ  ñá¡¡δσ  ¿  Γα¿  ¬«¼á¡ñδ
  313.  
  314.                                 - 5 -
  315. »α«ß¼«Γαá: »α«ß¼«Γα ¡á αáó¡«, »α«ß¼«Γα ¡á ¼Ñ¡∞ΦÑ ¿½¿ αáó¡« ¿
  316. »α«ß¼«Γα ¡á í«½∞ΦÑú ¿½¿ αáó¡«. è«¼á¡ñδ π»αáó½Ñ¡¿∩ ñ¿ß¬«¼ ó¬½ετá-
  317. ÑεΓ »ÑαѬ὿íα«ó¬π,  πßΓá¡«ó¬π,  τΓÑ¡¿Ñ ß«ßΓ«∩¡¿∩ ñ¿ß¬«ó«ñá,  τΓÑ¡¿Ñ
  318. ß«ßΓ«∩¡¿∩ »αÑαδóá¡¿∩ ¿ Σ«α¼áΓ¿α«óá¡¿Ñ ñ«α«ª¬¿.  è«¼á¡ñδ τΓÑ¡¿∩ ¿ñÑ¡-
  319. Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá ¿ τΓÑ¡¿∩ ñ«α«ª¬¿ ¼«úπΓ αáßß¼áΓα¿óáΓ∞ß∩, ¬á¬ ñ¿áú-
  320. ¡«ßΓ¿¬á.  éßÑ ¬«¼á¡ñδ ß ¡Ñαáß»«º¡áóáÑ¼δ¼ »Ñαóδ¼ íá⌐Γ«¼ íπñπΓ «íαáíá-
  321. ΓδóáΓ∞ß∩ ¬á¬ ¡Ññ«»πßΓ¿¼á∩ ¬«¼á¡ñá.
  322.    è«¼á¡ñδ 8272A  ¼«ª¡«  ½Ñú¬«  ¿ñÑ¡Γ¿Σ¿µ¿α«óáΓ∞  ¼½áñΦ¿¼ »«½πíá⌐Γ«¼
  323. »Ñαó«ú« íá⌐Γá ¬«¼á¡ñδ - ß¼.  Γáí½¿µπ 1.2.2 (σ«Γ∩ ¡Ñ¬«Γ«αδÑ ¿º  Γᬿσ
  324. ¬«¼á¡ñ íπñπΓ ¡Ññ«»πßΓ¿¼δ¼¿).
  325.  
  326.               Æáí½¿µá 1.2.2 . 8272A è«ñδ «»Ñαᵿ¿ 8272Ç.
  327.    X1  Åα«ß¼«Γα ¡á αáó¡«
  328.    X2  ùΓÑ¡¿Ñ ñ«α«ª¬¿
  329.    X3  Ä»αÑñѽ¿Γ∞
  330.    X4  Ä»αÑñѽ¿Γ∞ ß«ßΓ«∩¡¿Ñ ñ¿ß¬«ó«ñá
  331.    X5  çỿßáΓ∞ ñá¡¡δÑ
  332.    X6  ù¿ΓáΓ∞ ñá¡¡δÑ
  333.    X7  ÅαѬ὿íα«ó¬á
  334.    ò8  Ä»α«ß¿Γ∞ ß«ßΓ«∩¡¿Ñ »αÑαδóá¡¿∩
  335.    X9  çỿßδóáΓ∞ πñá½Ñ¡¡δÑ ñá¡¡δÑ ¿½¿ »α«ß¼«Γα ¡á ¼Ñ¡∞ΦÑ ¿½¿ αáó¡«
  336.    XA  ù¿ΓáΓ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α
  337.    XC  ù¿ΓáΓ∞ πñá½Ñ¡¡δÑ ñá¡¡δÑ
  338.    òC  ö«α¼áΓ¿α«óáΓ∞ ñ«α«ª¬π ¿½¿ »α«ß¼«Γα ¡á í«½∞ΦÑ ¿½¿ αáó¡«
  339.    XF  ôßΓá¡«ó¬á
  340.  
  341.    â½áó¡á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞  óδ»«½¡Ñ¡¿∩  ¬«¼á¡ñδ  8272Ç ß«ßΓ«¿Γ ¿º
  342. ß½ÑñπεΘ¿σ Φáú«ó:
  343.    0. àß½¿ DMA íπñÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ó «»Ñαᵿ¿,  »α«úαá¼¼¿απÑΓß∩ ¬á-
  344. ¡á½ 2 ¼¿¬α«ßσѼδ 8237A ñ½∩ αѪ¿¼á »ÑαÑß佬¿ «ñ¿¡«τ¡«ú« íá⌐Γá.  (Åα¿-
  345. ¼Ñτá¡¿Ñ:  ß¿ú¡á½  ßτÑΓτ¿¬á  ΓÑନ¡á½á (TC) ¿º DMA íπñÑΓ óδºδóáΓ∞ ¡Ñ-
  346. »«ßαÑñßΓóÑ¡¡«Ñ ºáóÑαΦÑ¡¿Ñ FDC-«»Ñαᵿ⌐).
  347.    1. ä½∩  ¬áªñ«ú« íá⌐Γá ó ¬«¼á¡ñÑ ,ªñ¿ΓÑ,  »«¬á í¿Γ RQM ¡Ñ ßΓá¡ÑΓ =
  348. 1,  ºáΓѼ »α«óÑα∞ΓÑ DIO: º¡áτÑ¡¿Ñ 0 π¬áºδóáÑΓ, τΓ« FDC ú«Γ«ó »α¿¡∩Γ∞
  349. ¬«¼á¡ñπ, 1 «º¡áτáÑΓ, τΓ« óáΦá ¬«¼á¡ñá ¡Ñ αáß»«º¡á½áß∞ FDC (»«ß½Ññπε-
  350. ΘÑÑ τΓÑ¡¿Ñ ¿º DR íπñÑΓ ó«ºóαáΘáΓ∞ 80h) ¿½¿ τΓ«  óδ  πªÑ  »«ñ὿  óßÑ
  351. ñá¡¡δÑ ó FDC (á ΓᬪÑ, τΓ« óáΦá ¬«¼á¡ñá ¡Ññ«»πßΓ¿¼á).
  352.    àß½¿ óáΦá ¬«¼á¡ñá ¡Ñ ¿¼ÑÑΓ ΣẠóδ»«½¡Ñ¡¿∩ ¿  ¬«¡τá¡¿∩  (¡á»α¿¼Ñα,
  353. Ä»αÑñÑ½Γ¿Γ∞), óδ «ßΓá¡áó½¿óáÑΓÑß∞ ºñÑß∞.
  354.    2. àß½¿ óδ ºá»¿πßΓ¿½¿ FDC ó αѪ¿¼Ñ ¡Ñ-DMA  ¿  ¬«¼á¡ñá  »ÑαÑßδ½áÑΓ
  355. ñá¡¡δÑ ó ΓÑτÑ¡¿Ñ Σáºδ óδ»«½¡Ñ¡¿∩ (τΓÑ¡¿Ñ,  ºá»¿ß∞,  Σ«α¼áΓ¿α«óá¡¿Ñ),
  356. óδ ªñÑΓÑ, »«¬á í¿Γ NDM αáóÑ¡ ¡π½ε. è«úñá NDM ßΓá¡ÑΓ = 1, ñ½∩ ¬áªñ«ú«
  357. τΓ¿ΓáѼ«ú«  ¿½¿  ºá»¿ßδóáѼ«ú« íá⌐Γá óδ ªñÑΓÑ πßΓᡫ󬿠í¿Γá RQM,  ¿
  358. Γ«úñᠺỿßδóáÑÑ ß½ÑñπεΘ¿⌐ íá⌐Γ ó (¿½¿ τ¿ΓáÑΓÑ Ñú« ¿º) DR.
  359.    àß½¿ óδ  ¡Ñ  ¿ß»«½∞ºπÑΓÑ »ÑαÑß佬π DMA-αѪ¿¼á (¿½¿ ¡Ñ »ÑαÑßδ½áÑΓÑ
  360. ñá¡¡δÑ ó««íΘÑ), óδ »α«ßΓ« »ÑαÑσ«ñ¿ΓÑ ¬ Φáúπ 3.
  361.    3. è«¡Ñµ  Σáºδ óδ»«½¡Ñ¡¿∩ π¬áºδóáÑΓß∩ IRQ 6 (int 0eh).  éδ ¼«ªÑΓÑ
  362. ¿½¿ αáºαÑΦ¿Γ∞ 8272A »αÑαδóá¡¿Ñ ¿ «í¡áαπª¿óáΓ∞ Ñú« ó  óáΦÑ⌐  »«ñ»α«ú-
  363. αἼѠ «íαáí«Γ¬¿,  ¿½¿  ¼«ªÑΓÑ  »«ßΓ«∩¡¡« «»αáΦ¿óáΓ∞ αÑú¿ßΓα ºá»α«ßá
  364. »αÑαδóá¡¿∩ 8259A (IRR).
  365.    àß½¿ ¬«¼á¡ñá  ¡Ñ ¿¼ÑÑΓ Σáºδ óδ»«½¡Ñ¡¿∩ (Ä»α«ß¿Γ∞ ß«ßΓ«∩¡¿Ñ ñ¿ß¬«-
  366. ó«ñá), óδ »ÑαÑσ«ñ¿ΓÑ ¬ Φáúπ 4.
  367.    4. é ΣáºÑ αѺπ½∞ΓáΓá óδ τ¿ΓáÑΓÑ ß«ßΓ«∩¡¿Ñ ¬«¼á¡ñδ ¿º FDC,  ΓÑßΓ¿-
  368. απ∩ í¿Γ RQM (πíÑñ¿ΓÑß∞, τΓ« DIO = 1). 8272A ¼«ªÑΓ ó«ºóαáΘáΓ∞ ñ« ΓαÑσ
  369. íá⌐Γ«ó  ß«ßΓ«∩¡¿∩ (¬«Γ«αδÑ «»¿ßδóáεΓß∩ ¡¿ªÑ) ¡áα∩ñπ ß ñαπú¿¼¿ ñá¡¡δ-
  370. ¼¿, ¬«Γ«αδÑ íπñπΓ ¿º¼Ñ¡∩Γ∞ß∩ «Γ ¬«¼á¡ñδ ¬ ¬«¼á¡ñÑ.
  371.  
  372.     ┌───────────┬─────┬─────┬─────┬─────┬─────┬─────┐
  373.     │    IC     │ SE  │ EC  │ NR  │  H  │ DS1 │ DS0 │       ST0
  374.     └───────────┴─────┴─────┴─────┴─────┴─────┴─────┘
  375.     ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  376.     │ EN  │  0  │ DE  │ OR  │  0  │ ND  │ MW  │ MA  │       ST1
  377.     └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  378.  
  379.                                 - 6 -
  380.     ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  381.     │  0  │ CM  │ DD  │ WC  │ SH  │ SN  │ BC  │ MD  │       ST2
  382.     └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  383.     ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  384.     │ FT  │ WP  │ RDY │ T0  │ TS  │  H  │ DS1 │ DS0 │       ST3
  385.     └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  386.           É¿ß. 1.2.2 0-3 íá⌐Γδ ß«ßΓ«∩¡¿∩ ¬«¡Γα«½½Ñαá 8272A
  387.  
  388.                                 ST0
  389.    IC - ¬«ñ »αÑαδóá¡¿∩:
  390.         00 - ì«α¼á½∞¡«Ñ ºáóÑαΦÑ¡¿Ñ ¬«¼á¡ñδ.
  391.         01 - Çóáα¿⌐¡«Ñ ºáóÑαΦÑ¡¿Ñ ¬«¼á¡ñδ («»Ñαᵿ∩ ÑΘÑ  ¼«ªÑΓ  íδΓ∞
  392.              óδ»«½¡Ñ¡á, ¡« ñ«½ª¡δ »α«óÑα∩Γ∞ß∩ ñαπú¿Ñ ¬«ñδ πß½«ó¿⌐).
  393.         10 - ìÑñ«»πßΓ¿¼á∩ ¬«¼á¡ñá.
  394.         11 - Çóáα¿⌐¡«Ñ ºáóÑαΦÑ¡¿Ñ (ß¿ú¡á½ ú«Γ«ó¡«ßΓ¿ ñ¿ß¬á ¿º¼Ñ¡¿½ß∩
  395.              ó ΓÑτÑ¡¿Ñ óδ»«½¡Ñ¡¿∩).
  396.    SE - Ä»Ñαᵿ∩ πßΓᡫ󬿠ºá¬«¡τÑ¡á.
  397.    EC - Äí«απñ«óá¡¿Ñ »α«óÑα∩ÑΓ «Φ¿í¬π (»«½πτÑ¡ ß¿ú¡á½  ¡Ñ¿ß»αáó¡«ßΓ¿
  398.         «Γ ñ¿ß¬«ó«ñá ¿½¿ µ¿½¿¡ñα 0 ¡Ñ ¡á⌐ñÑ¡ »«ß½Ñ  77  ¿¼»π½∞ß«ó  ó
  399.         ΓÑτÑ¡¿Ñ »ÑαѬ὿íα«ó¬¿).
  400.    NR -  ìÑ ú«Γ«ó (ä¿ß¬«ó«ñ ßΓá½ ¡Ñ ú«Γ«óδ¼ ó ΓÑτÑ¡¿Ñ τΓÑ¡¿∩ ¿½¿ ºá-
  401.          »¿ß¿ ¿½¿ ºá»α«ΦÑ¡á ßΓ«α«¡á 1 ñ½∩ «ñ¡«ßΓ«α«¡¡Ñú« ñ¿ß¬á).
  402.    H  - ÇñαÑß ú«½«ó¬¿.
  403.    DS0, DS1 - áñαÑß ñ¿ß¬«ó«ñá.
  404.  
  405.                                 ST1
  406.    EN -  ÄΦ¿í¬á  ¬«¡µá ñ«α«ª¬¿ (FDC »δΓáÑΓß∩ «íαáΓ¿Γ∞ß∩ ¬ ßÑ¬Γ«απ ºá
  407.         »«ß½Ññ¡¿¼ ßÑ¬Γ«α«¼ ñ«α«ª¬¿). ¥Γ«Γ Σ½áú íπñÑΓ πßΓá¡áó½¿óáΓ∞ß∩
  408.         ó 1 (¿,  ß½Ññ«óáΓѽ∞¡«,  IC íπñÑΓ αáóÑ¡ 01 ), Ñß½¿ FDC τ¿Γá½
  409.         ßÑ¬Γ«α, «»αÑñѽ∩Ѽδ⌐ ¬á¬ »áαá¼ÑΓα ¬«¼á¡ñδ EOT  ¿  ß¿ú¡á½  TC
  410.         ¡¿º¬¿⌐,ΓᬠτΓ«  ¬áªñá∩ «»Ñαᵿ∩ τΓÑ¡¿∩ ó αѪ¿¼Ñ ¡Ñ-DMA íπñÑΓ
  411.         c «Φ¿í¬«⌐ EN.
  412.    DE -  ÄΦ¿í¬á  ñá¡¡δσ.  ÇñαÑß¡á∩ ¼ÑΓ¬á ßÑ¬Γ«αá ¿½¿ ñá¡¡δσ ß«ñÑনΓ
  413.         ¡Ññ«»πßΓ¿¼πε CRC.
  414.    OR - ÄΦ¿í¬á «ª¿ñá¡¿∩. 8272A ¡Ñ »«½πτ¿½ ñ«ßΓπ»á ¬ ûÅ ¿½¿ DMA ó ΓÑ-
  415.         τÑ¡¿Ñ «»αÑñѽѡ¡«ú«  ¿¡ΓÑαóá½á  óαѼѡ¿  (32  ¼¬ß  ¡á  360Kü
  416.         ñ¿ß¬«ó«ñÑ) ¿ ñá¡¡δÑ í뫨 »«ΓÑα∩¡δ.
  417.    ND - æÑ¬Γ«α ¡Ñ «í¡áαπªÑ¡¡δ⌐ .  Ä»αÑñѽ∩Ѽδ⌐ ßÑ¬Γ«α ¡Ñ íδ½ «í¡áαπ-
  418.         ªÑ¡ ó ΓÑτÑ¡¿Ñ 2-σ «í«α«Γ«ó ñ¿ß¬á (Γ« ÑßΓ∞, ß ¡áτá½á «»Ñαᵿ¿
  419.         »α¿Φ½¿ ñóá ¿¡ñѬߡδσ ¿¼»π½∞ßá). ä½∩ ¼¡«ú«ßÑ¬Γ«α¡δσ »ÑαÑß佫¬
  420.         ΓαÑíπÑΓß∩ 2-«í«α«Γ¡«Ñ «ª¿ñá¡¿Ñ ñ½∩ ¬áªñ«ú« ßÑ¬Γ«αá «Γñѽ∞¡«.
  421.    NW - ÄΦ¿í¬á ºáΘ¿Γδ ºá»¿ß¿ .  æ¿ú¡á½ ºáΘ¿Γδ ºá»¿ß¿ íδ½ «í¡áαπªÑ¡ ó
  422.         ΓÑτÑ¡¿Ñ «»Ñαᵿ⌐ ºá»¿¿ß¿ ¿½¿ Σ«α¼áΓ¿α«óá¡¿∩.
  423.    MA - ÄΓßπΓßΓóπÑΓ ¼ÑΓ¬á áñαÑßá.  ÇñαÑß¡á∩ ¼ÑΓ¬á cÑ¬Γ«αá ¿½¿ ñá¡¡δσ
  424.         ¡Ñ «í¡áαπªÑ¡á.
  425.  
  426.                                 ST2
  427.    CM - è«¡Γα«½∞¡á∩ îÑΓ¬á. Äí¡áαπªÑ¡á πñá½Ñ¡¡á∩ áñαÑß¡á∩ ¼ÑΓ¬á ó ΓÑ-
  428.         τÑ¡¿Ñ  ¬«¼á¡ñδ τΓÑ¡¿∩ ñá¡¡δσ ¿½¿ «í¡áαπªÑ¡á áñαÑß¡á∩ ¼ÑΓ¬á ó
  429.         ΓÑτÑ¡¿Ñ ¬«¼á¡ñδ τΓÑ¡¿∩ πñá½Ñ¡¡δσ ñá¡¡δσ,  ¿ í¿Γ SK ¡Ñ  πßΓá-
  430.         ¡«ó½Ñ¡.
  431.    DD - ÄΦ¿í¬á ñá¡¡δσ.  ìÑóÑα¡á∩ CRC  ßÑ¬Γ«αá  ñá¡¡δσ.  Æá¬ªÑ  íπñÑΓ
  432.         πßΓá¡«ó½Ñ¡ DE.
  433.    WC - ÄΦ¿í¬á áñαÑßᵿ¿ µ¿½¿¡ñαá.  ÇñαÑß  µ¿½¿¡ñαá  ¡á  ñ«α«ª¬Ñ  ¡Ñ
  434.         ß««ΓóÑΓßΓóπÑΓ «»αÑñѽ∩Ѽ«¼π.
  435.    SH - ôß»ÑΦ¡δ⌐ »α«ß¼«Γα. ôß½«ó¿∩ ¬«¼á¡ñδ »α«ß¼«Γαá í뫨 πñ«ó½ÑΓó«-
  436.         αÑ¡δ.
  437.    SN  - Åα«ß¼«Γα ¡Ñ πñ«ó½ÑΓó«αÑ¡.
  438.    BC - ÄΦ¿í¬á ñÑΣÑ¬Γ¡«⌐ ñ«α«ª¬¿.  Ç¡á½«ú¿τ¡« WC,  ¡« áñαÑß µ¿½¿¡ñαá
  439.         ñ«α«ª¬¿ - FFh.
  440.    MD -  ÄΦ¿í¬á  «ΓßπΓßΓó¿∩  áñαÑß¡«⌐ ¼ÑΓ¬¿.  Æá¬ªÑ íπñÑΓ πßΓá¡áó½¿-
  441.          óáΓ∞ß∩ MA.
  442.  
  443.                                 - 7 -
  444.  
  445.                                 ST3
  446.    FT - ìѿ߻αáó¡«ßΓ∞. ä¿ß¬«ó«ñ «í¡áαπª¿½ ¡Ñ¿ß»αáó¡«ßΓ∞.
  447.    WP - çáΘ¿Γᠺỿ߿.
  448.    RDY - æ¿ú¡á½ ú«Γ«ó¡«ßΓ¿ ñ¿ß¬«ó«ñá.  ìá PC ¿ »«ñß¿ßΓѼáσ ñ¿ß¬ÑΓ AT
  449.         «¡ íπñÑΓ  óßÑúñá πßΓá¡«ó½Ñ¡,  ¡Ñºáó¿ß¿¼«,  ú«Γ«ó ½¿ ñ¿ß¬«ó«ñ
  450.         (¿½¿ πßΓá¡«ó½Ñ¡ ó««íΘÑ).
  451.    T0 - æ¿ú¡á½ ¡πñÑó«⌐ ñ«α«ª¬¿.
  452.    TS - äóπßΓ«α«¡¡¿⌐.  ìá PC ¿ »«ñß¿ßΓѼáσ ñ¿ß¬ÑΓ AT «¡ íπñÑΓ óßÑúñá
  453.         0.
  454.  
  455.               1.2.3 Ä»¿ßá¡¿Ñ ¬«¼á¡ñ ¬«¡Γα«½½Ñαá 8272A
  456.  
  457.    îδ »α¿ó«ñ¿¼ óßÑ ¬«¼á¡ñδ 8272A ó Γ«¼ »«α∩ñ¬Ñ, ó ¬«Γ«α«¼ «¡¿ ñá¡δ ó
  458. Γáí½¿µÑ "滿߫¬ ¬«¼á¡ñ 8272A" απ¬«ó«ñßΓóá »« INTEL  8272A.  è«¡Ñτ¡«,
  459. φΓ« «»¿ßá¡¿Ñ ¡Ñ ñ«ßΓáΓ«τ¡« ñ½∩ ¡á»¿ßá¡¿∩ ñαá⌐óÑαá ú¿í¬«ú« ñ¿ß¬á. æ¼.
  460. απ¬«ó«ñßΓó« INTEL ñ½∩ í«½ÑÑ »«½¡«⌐ ¿¡Σ«α¼áµ¿¿ ¿½¿ Åα¿½«ªÑ¡¿∩ A,  úñÑ
  461. ñá¡ »α«ßΓ«⌐ »α¿¼Ñα.
  462.  
  463. ùΓÑ¡¿Ñ ñá¡¡δσ
  464. ─────────────
  465.     è«¼á¡ñá:     MT    MFM   SK     0     0     1     1     0
  466.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  467.                   0     0     0     0     0    HDS   DS1   DS0
  468.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  469.                C/H/R/N/EOT/GPL/DTL
  470.     êß»«½¡Ñ¡¿Ñ: Å«½∩ ñá¡¡δσ ¡á ñ«α«ª¬Ñ ßτ¿ΓδóáεΓß∩.
  471.     ÉѺπ½∞ΓáΓ : ST0/ST1/ST2/C/H/R/N
  472. (çñÑß∞ ¿ ñá½ÑÑ:
  473.    MT -  (MultiTrack)  ¿¡ßΓαπ¬Γ¿απÑΓ  »α«ñ«½ªÑ¡¿Ñ «»Ñαᵿ¿ τΓÑ¡¿∩ ¡á
  474.       ñ«α«ª¬Ñ 1 Γ«ú« ªÑ µ¿½¿¡ñαá.
  475.    SK  - ºáßΓáó½∩ÑΓ FDC »α«»π߬áΓ∞ »«½∩ πñá½Ñ¡¡δσ ñá¡¡δσ.
  476.    HDS - π¬áºδóáÑΓ ¡«¼Ñα ú«½«ó¬¿, ¿ß»«½∞ºπѼ«⌐ ó «»Ñαᵿ¿.
  477.    DS1, DS0  - »αÑñßΓáóñ∩εΓ ¡«¼Ñα ñ¿ß¬«ó«ñá.
  478.    C/N/R/N - ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¡áτá½∞¡«ú« ßÑ¬Γ«αá.
  479.    EOT - ¬«½¿τÑßΓó« ßÑ¬Γ«α«ó ¡á ñ«α«ª¬Ñ.
  480.    GPL - ñ½¿¡á ¼ÑªßÑ¬Γ«α¡«ú« »α«¼ÑªπΓ¬á.
  481.    DTL - ñ«½ªÑ¡ íδΓ∞ FFh »α¿ πßΓá¡«ó½Ñ¡¡«¼ MFM.)
  482.  
  483. ùΓÑ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá
  484. ─────────────────────────────
  485.     è«¼á¡ñá:     MT    MFM   SK     0     0     1     1     0
  486.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  487.                   0     0     0     0     0    HDS   DS1   DS0
  488.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  489.                C/H/R/N/EOT/GPL/DTL
  490.    êß»«½¡Ñ¡¿Ñ: æτ¿ΓδóáÑΓß∩ »Ñαóδ⌐ ¬«ααÑ¬Γ¡δ⌐  ¿ñÑ¡Γ¿Σ¿¬áΓ«α  ßÑ¬Γ«αá
  491. (»Ñαóδ⌐ - º¡áτ¿Γ "»Ñαóδ⌐ ñ«ßΓ¿ú¡πΓδ⌐ «Γ ΓѬπΘÑú« »«½«ªÑ¡¿∩ ú«½«ó¬¿",
  492. á ¡Ñ "»Ñαóδ⌐ »«ß½Ñ Σ¿º¿τÑ߬«⌐ áñαÑß¡«⌐ ¼ÑΓ¬¿")
  493.    ÉѺπ½∞ΓáΓ: ST0/ST1/ST2/C/H/R/N
  494.  
  495. ùΓÑ¡¿Ñ πñá½Ñ¡¡δσ ñá¡¡δσ
  496. ───────────────────────
  497.     è«¼á¡ñá:     MT    MFM   SK     0     1     1     0     0
  498.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  499.                   0     0     0     0     0    HDS   DS1   DS0
  500.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  501.                C/H/R/N/EOT/GPL/DTL
  502.    êß»«½¡Ñ¡¿Ñ:  æτ¿ΓδóáεΓß∩ πñá½Ñ¡¡δÑ ñá¡¡δÑ ¡á ñ«α«ª¬Ñ.
  503.    ÉѺπ½∞ΓáΓ: ST0/ST1/ST2/C/H/R/N
  504.  
  505. ùΓÑ¡¿Ñ ñ«α«ª¬¿
  506. ──────────────
  507.  
  508.                                 - 8 -
  509.     è«¼á¡ñá:      0    MFM   SK     0     0     0     1     0
  510.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  511.                   0     0     0     0     0    HDS   DS1   DS0
  512.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  513.                C/H/R/N/EOT/GPL/DTL
  514.    êß»«½¡Ñ¡¿Ñ:  ù¿ΓδóáεΓß∩ »«½∩ ñá¡¡δσ ¡á ñ«α«ª¬Ñ.
  515.    ÉѺπ½∞ΓáΓ: ST0/ST1/ST2/C/H/R/N
  516.  
  517.    ¥Γá ¬«¼á¡ñá  íπñÑΓ  τ¿ΓáΓ∞  »«½∩  ñá¡¡δσ  ¡Ñºáó¿ß¿¼«  «Γ º¡áτÑ¡¿⌐
  518. C/H/R/N, σαá¡∩Θ¿σß∩ ó ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ßÑ¬Γ«α«ó. Å«½Ñ ñá¡¡δσ, ¬«Γ«α«Ñ
  519. ¿¼ÑÑΓ ñ«»πßΓ¿¼δ⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α,  ¼«ªÑΓ ßτ¿ΓáΓ∞ß∩ φΓ«⌐ ¬«¼á¡ñ«⌐. ò«Γ∩
  520. ñ«¬π¼Ñ¡Γᵿ∩ INTEL π¬áºδóáÑΓ,  τΓ« ¬«¼á¡ñá τΓÑ¡¿∩ ñ«α«ª¬¿ «ßΓá¡áó½¿-
  521. óáÑΓß∩,  ¬«úñá ¡á óßÑ⌐ ñ«α«ª¬Ñ ¡Ñ «í¡áαπªÑ¡δ »«½∩ ñá¡¡δσ ¿½¿ ßτÑΓτ¿¬
  522. ßÑ¬Γ«α«ó ñ«ßΓ¿ú º¡áτÑ¡¿∩ EOT,  φΓá ¬«¼á¡ñá íπñÑΓ ºáóÑαΦáΓ∞ß∩,  ¬«úñá
  523. ¡Ñ  «í¡áαπªÑ¡á  ¼ÑΓ¬á áñαÑßá ñá¡¡δσ íδ½ «í¡áαπªÑ¡ »«ß½Ñ ¼ÑΓ¬¿ áñαÑßá
  524. ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá ß »½«σ«⌐ CRC.
  525.    è«¼á¡ñá τΓÑ¡¿∩ ñ«α«ª¬¿ »α¿¡¿¼áÑΓ ï₧üÄà º¡áτÑ¡¿Ñ N,  ΓᬠτΓ« ¼«ªÑΓ
  526. τ¿ΓáΓ∞ ¼ÑªßÑ¬Γ«α¡δ⌐ »α«¼ÑªπΓ«¬ (¿½¿ óßε ñ«α«ª¬π,  Ñß½¿ N  ñ«ßΓáΓ«τ¡«
  527. í«½∞Φ«Ñ)  ¡áα∩ñπ ß ßÑ¬Γ«α«¼ ñá¡¡δσ.  æÑ¬Γ«αá íπñπΓ ßτ¿ΓδóáΓ∞ß∩ ó »«-
  528. α∩ñ¬Ñ ¿σ »«∩ó½Ñ¡¿∩ »«ñ ú«½«ó¬«⌐,  Γ« ÑßΓ∞, Ñß½¿ ñ«α«ª¬á Σ«α¼áΓ¿α«óá-
  529. ½áß∞ ß 8 ßÑ¬Γ«αἿ ß 512 íá⌐ΓἿ (¿¡ΓÑ૨ó 1:1),  ¿ óδ ¡áτ¿¡áÑΓÑ ¬«-
  530. ¼á¡ñπ ñ«α«ª¬¿ τΓÑ¡¿∩ ß R = 1,  N = 3,  EOT = 4,  ßÑ¬Γ«αá 1, 3, 5 ¿ 7
  531. íπñπΓ ßτ¿Γá¡δ.
  532.  
  533. çỿß∞ ñá¡¡δσ
  534. ─────────────
  535.     è«¼á¡ñá:     MT    MFM    0     0     0     1     0     1
  536.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  537.                   0     0     0     0     0    HDS   DS1   DS0
  538.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  539.                C/H/R/N/EOT/GPL/DTL
  540.    êß»«½¡Ñ¡¿Ñ:  ìá ñ«α«ª¬π ºá»¿ßδóáεΓß∩ »«½∩ ñá¡¡δσ
  541.    ÉѺπ½∞ΓáΓ: ST0/ST1/ST2/C/H/R/N
  542.  
  543. çỿß∞ πñá½Ñ¡¡δσ ñá¡¡δσ
  544. ───────────────────────
  545.     è«¼á¡ñá:     MT    MFM    0     0     1     0     0     1
  546.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  547.                   0     0     0     0     0    HDS   DS1   DS0
  548.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  549.                C/H/R/N/EOT/GPL/DTL
  550.    êß»«½¡Ñ¡¿Ñ:  ìá ñ«α«ª¬π ºá»¿ßδóáεΓß∩ »«½∩ πñá½Ñ¡¡δσ ñá¡¡δσ
  551.    ÉѺπ½∞ΓáΓ: ST0/ST1/ST2/C/H/R/N
  552.  
  553. ö«α¼áΓ¿α«óá¡¿Ñ ñ«α«ª¬¿
  554. ──────────────────────
  555.     è«¼á¡ñá:     MT    MFM    0     0     1     1     0     1
  556.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  557.                   0     0     0     0     0    HDS   DS1   DS0
  558.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  559.                N/SC/GPL/D
  560.    êß»«½¡Ñ¡¿Ñ: è«¼á¡ñá Σ«α¼áΓ¿απÑΓ ñ«α«ª¬π ß SC  ßÑ¬Γ«αἿ  αẼÑα«¼
  561. N. æÑ¬Γ«αᠺừ½¡∩εΓß∩ íá⌐Γ«¼ D. ç¡áτÑ¡¿∩ C/H/R/N ñ½∩ ¬áªñ«ú« ßÑ¬Γ«-
  562. αá ºáñáεΓß∩ »«½∞º«óáΓѽѼ (¬á¬ ó ¬«¼á¡ñÑ ºá»¿ß¿ ñá¡¡δσ).
  563.    ÉѺπ½∞ΓáΓ: ST0/ST1/ST2/C/H/R/N
  564.    ÅÉêîàùÇìêà: GPL=0 »«¡¿¼áÑΓß∩ ¬á¬ 100h.
  565.  
  566. Åα«ß¼«Γα ¡á αáó¡«
  567. ─────────────────
  568.     è«¼á¡ñá:     MT    MFM   SK     1     0     0     0     1
  569.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  570.                   0     0     0     0     0    HDS   DS1   DS0
  571.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  572.  
  573.                                 - 9 -
  574.                C/H/R/N/EOT/GPL/STP
  575.    êß»«½¡Ñ¡¿Ñ:  Å«½∩  ñá¡¡δσ ¡á ñ«α«ª¬Ñ τ¿ΓáεΓß∩ ¿ ßαáó¡¿óáεΓß∩ »«-
  576. íá⌐Γ¡« ß ñá¡¡δ¼¿,  »«ßΓáó½∩Ñ¼δ¼¿ ûÅ ¿½¿ DMA.  àß½¿ πß½«ó¿Ñ »α«ß¼«Γαá
  577. ¡Ñ πñ«ó½ÑΓó«αÑ¡«, »α«ß¼«Γα »α«ñ«½ªáÑΓß∩ ó ßÑ¬Γ«αÑ R+STP.
  578.    ÉѺπ½∞ΓáΓ : ST0/ST1/ST2/C/H/R/N
  579.  
  580. Åα«ß¼«Γα ¡á ¼Ñ¡∞ΦÑ ¿½¿ αáó¡«
  581. ────────────────────────────
  582.     è«¼á¡ñá:     MT    MFM   SK     1     1     0     0     1
  583.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  584.                   0     0     0     0     0    HDS   DS1   DS0
  585.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  586.                C/H/R/N/EOT/GPL/STP
  587.    êß»«½¡Ñ¡¿Ñ:  á¡á½«ú¿τ¡« ¬«¼á¡ñÑ "Åα«ß¼«Γα ¡á αáó¡«"
  588.    ÉѺπ½∞ΓáΓ : ST0/ST1/ST2/C/H/R/N
  589.  
  590. Åα«ß¼«Γα ¡á í«½∞ΦÑ ¿½¿ αáó¡«
  591. ────────────────────────────
  592.     è«¼á¡ñá:     MT    MFM   SK     1     1     1     0     1
  593.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  594.                   0     0     0     0     0    HDS   DS1   DS0
  595.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  596.                C/H/R/N/EOT/GPL/STP
  597.    êß»«½¡Ñ¡¿Ñ:  á¡á½«ú¿τ¡« ¬«¼á¡ñÑ "Åα«ß¼«Γα ¡á αáó¡«"
  598.    ÉѺπ½∞ΓáΓ : ST0/ST1/ST2/C/H/R/N
  599.  
  600. ÅÑαѬ὿íα«ó¬á
  601. ──────────────
  602.     è«¼á¡ñá:      0     0     0     0     0     1     1     1
  603.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  604.                   0     0     0     0     0     0    DS1   DS0
  605.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  606.     êß»«½¡Ñ¡¿Ñ: »Ñ»Ñ¬á½¿íαπÑΓß∩ óδíαá¡¡δ⌐ ñ¿ß¬«ó«ñ.
  607.  
  608.     éßÑ 4 ñ¿ß¬«ó«ñá ¼«úπΓ  »ÑαѬ὿íα«óδóáΓ∞ß∩  «ñ¡«óαѼѡ¡«.  8272A
  609. ¼«ªÑΓ  óδ»«½¡∩Γ∞ «»Ñαᵿ¿ τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿ ¡á ½εí«¼ ñαπú«¼ ñ¿ß¬«ó«-
  610. ñÑ.  Æá¬¿¼  «íαẫ¼,  ¬«¼á¡ñá  «»α«ßá  ß«ßΓ«∩¡¿∩  »αÑαδóá¡¿∩  ñ«½ª¡á
  611. ¿ß»«½∞º«óáΓ∞ß∩,  τΓ«íδ  αẽ¿τáΓ∞ »αÑαδóá¡¿Ñ,  óδºóá¡¡«Ñ ºáóÑαΦÑ¡¿Ñ¼
  612. »ÑαѬ὿íα«ó¬¿ «Γ »αÑαδóá¡¿∩ »α¿ ºáóÑαΦÑ¡¿¿ «»Ñαᵿ¿.
  613.    FDC ¡Ñ íπñÑΓ αáºαÑΦáΓ∞ ½εíπε ¬«¼á¡ñπ ¡á »ÑαѬ὿íαπѼ«¼ ñ¿ß¬«ó«ñÑ
  614. ñ« Γ«ú«,  ¬á¬ »α«óÑñÑ¡ «»α«ß ß«ßΓ«∩¡¿∩ »αÑαδóá¡¿∩ ñ½∩ πßΓᡫ󬿠 ºá-
  615. óÑαΦÑ¡¿∩ »αÑαδóá¡¿∩.
  616.  
  617. Ä»α«ß ß«ßΓ«∩¡¿∩ »αÑαδóá¡¿∩
  618. ──────────────────────────
  619.     è«¼á¡ñá:      0     0     0     0     1     0     0     0
  620.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  621.     ÉѺπ½∞ΓáΓ: STO0/C (Åα¿¼Ñτá¡¿Ñ:  ¬«úñá IC = 10 (¡Ññ«»πßΓ¿¼«), C ¡Ñ íπ-
  622. ñÑΓ ó«ºóαáΘáΓ∞ß∩).
  623.    8272A íπñÑΓ úÑ¡Ñα¿α«óáΓ∞ ºá»α«ß »αÑαδóá¡¿∩ ó ½εí«¼ ¿º ß½ÑñπεΘ¿σ
  624. ß½πτáÑó:
  625.    A) öáºá αѺπ½∞ΓáΓá ¡áτ¿¡áÑΓß∩ ñ½∩ ¬«¼á¡ñ τΓÑ¡¿∩/ºá»¿ß¿/Σ«α¼áΓ¿α«-
  626. óá¡¿∩/»α«ß¼«Γαá.
  627.    B) êº¼Ñ¡¿½ß∩ ß¿ú¡á½ ú«Γ«ó¡«ßΓ¿ ¡á «ñ¡«¼ ¿º ñ¿ß¬«ó«ñ«ó.
  628.    C) éδ»«½¡∩ÑΓß∩ πßΓá¡«ó¬á/»ÑαѬ὿íα«ó¬á.
  629.    D) ÆαÑíπÑΓß∩ ¡Ñ-DMA »ÑαÑß佬á ñá¡¡δσ.
  630.    Åα«úαἼᠫíαáí«Γ¬¿ »αÑαδóá¡¿∩ ¼«ªÑΓ ½Ñú¬« «Γ½¿τáΓ∞ φΓ¿ ß½πτá¿:
  631. àß½¿ NDM = 1,
  632.  Æ«úñá φΓ« - ºá»α«ß »ÑαÑß佬¿ ñá¡¡δσ,
  633.  ê¡áτÑ
  634.   àß½¿ CB = 1
  635.    Æ«úñá ¡áτ¿¡áÑΓß∩ Σáºá αѺπ½∞ΓáΓá,
  636.    ê¡áτÑ
  637.  
  638.                                 - 10 -
  639.     àß½¿ SE = 0
  640.      Æ«úñá φΓ« - ¿º¼Ñ¡Ñ¡¿Ñ ß¿ú¡á½á ú«Γ«ó¡«ßΓ¿,
  641.      ê¡áτÑ φΓ« - ¬«¡Ñµ πßΓᡫ󬿠¿½¿ »ÑαѬ὿íα«ó¬¿.
  642.  
  643. Ä»αÑñѽ¿Γ∞
  644. ──────────
  645.     è«¼á¡ñá:      0     0     0     0     0     0     1     1
  646.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  647.                           SRT                    HUT
  648.                └───────────────────────┴───────────────────────┘
  649.                                     HLT                    ND
  650.                └─────────────────────────────────────────┴─────┘
  651.    SRT - ¿¡ΓÑαóὠ߬«α«ßΓ¿ Φáúá.  ôßΓá¡áó½¿óáÑΓ ¼¿¡¿¼á½∞¡πε ºáñÑ᪬π
  652.          ¼Ñªñπ ñóπ¼∩ ¿¼»π½∞ßἿ Φáúá ñ¿ß¬«ó«ñá.  (1-16 ¼ß, SRT = 0Fh
  653.          ß««ΓóÑΓßΓóπÑΓ 1 ¼ß). ü«½ÑÑ ßΓáαδÑ ñ¿ß¬«ó«ñδ PC ¡Ñ óδ»«½¡∩½¿
  654.          3- ¿½¿ 4-¼ß ß¬«α«ßΓ∞ Φáúá, á ¡Ñ¬«Γ«αδÑ ¡Ñ ¼«úπΓ óδ»«½¡¿Γ∞ ß
  655.          2- ¿½¿ ñáªÑ 1-¼ß ß¬«α«ßΓ∞ Φáúá.
  656.    HUT - óαѼ∩ αáºúαπº¬¿ ú«½«ó¬¿.  çáñÑαª¬á ¼Ñªñπ ºáóÑαΦÑ¡¿Ñ¼ «»Ñαá-
  657.          µ¿¿ τΓÑ¡¿∩ - ºá»¿ß¿ ¿ »«ñΩѼ«¼ ú«½«ó¬¿. (16-240 ¼ß, HUT = 0
  658.          ß««ΓóÑΓßΓóπÑΓ 16 ¼ß). Ä¡« «íδτ¡« πßΓá¡áó½¿óáÑΓß∩ ó 240 ¼ß.
  659.    HLT -  óαѼ∩  ºáúαπº¬¿ ú«½«ó¬¿.  çáñÑαª¬á ¼Ñªñ𠬫¼á¡ñ«⌐ ºáúαπº¬¿
  660.          ú«½«ó¬¿ ¿ ¡áτὫ¼ «»Ñαᵿ¿  τΓÑ¡¿∩  -  ºá»¿ß¿.  (2-254  ¼ß,
  661.          HLT=1 - 2 ms). Äíδτ¡« πßΓá¡áó½¿óáÑΓß∩ ó 2 ¼ß.
  662.    ND  - 0: αѪ¿¼ DMA. 1: ¡Ñ-DMA αѪ¿¼.
  663.    éßÑ Γá⌐¼Ñαδ  ó¡πΓα¿  8272A Σá¬Γ¿τÑ߬¿ ß¿¡σα«¡¿º¿απεΓß∩ »« ß¿ú¡á½π
  664. WR CLK, ΓᬠτΓ« óßÑ º¡áτÑ¡¿∩, »«¬áºá¡¡δÑ ºñÑß∞, »αáó¿½∞¡δ ñ½∩ WR CLK
  665. 500 èâµ,  ¿½¿ ß¬«α«ßΓ∞ »ÑαÑß佬¿ ñá¡¡δσ ß«ßΓáó¿Γ 500 èü«ñ. Å«¡¿ªÑ¡¿Ñ
  666. τáßΓ«Γδ WR CLK íπñÑΓ πñ½¿¡∩Γ∞ óßÑ ó¡πΓαÑ¡¡¿Ñ ßτÑΓτ¿¬¿ ºáñÑαªÑ¬.
  667.  
  668. Ä»α«ß ß«ßΓ«∩¡¿∩ ñ¿ß¬«ó«ñá
  669. ─────────────────────────
  670.     è«¼á¡ñá:      0     0     0     0     0     1     0     0
  671.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  672.                   0     0     0     0     0    HDS   DS1   DS0
  673.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  674.     ÉѺπ½∞ΓáΓ: ST3.
  675.  
  676. ôßΓá¡«ó¬á
  677. ─────────
  678.     è«¼á¡ñá:      0     0     0     0     1     1     1     1
  679.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  680.                   0     0     0     0     0    HDS   DS1   DS0
  681.                └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  682.                C
  683.     æ¼. »ÑαѬ὿íα«ó¬π.
  684.  
  685.                  1.2.4 è«¡Γα«½½Ñα ú¿í¬«ú« ñ¿ß¬á AT
  686.  
  687.    ÅÑαó«¡áτá½∞¡δÑ PC  ¿  XT ¬«¡Γα«½½Ñαδ ú¿í¬«ú« ñ¿ß¬á í뫨 ß»«ß«í¡δ⌐
  688. »«ññÑনóáΓ∞ 4 ñ¿ß¬ÑΓδ.  AT FDC, σ«Γ∩ ¿ ß«ó¼ÑßΓ¿¼δ »« αÑúßΓαá¼, ¼«ª-
  689. ªÑΓ »«ññÑনóáΓ∞ Γ«½∞¬« 2, ΓᬠτΓ« ¼«ª¡« πßΓá¡áó½¿óáΓ∞ ñóá FDC ó AT.
  690. ü«½∞Φ¿¡ßΓó« óÑαß¿⌐ BIOS ¡Ñ »«ññÑ«ª¿óáÑΓ óΓ«α«⌐ FDC,  ¿ π ¡áß ¡¿¬«úñá
  691. ¡Ñ  í佫  IBM  AT,  τΓ«íδ »α«óÑα¿Γ∞,  τΓ« ªÑ ¬«¡¬αÑΓ¡« ñѽáÑΓ IBM AT
  692. BIOS.  ÅÑαóδ⌐ FDC ºá¡¿¼áÑΓ ñ¿á»áº«¡ áñαÑß«ó 3F0-3F7h, óΓ«α«⌐ FDC ¡á-
  693. σ«ñ¿Γß∩ ó 370-377h.  éß∩ »α¿óÑñÑ¡¡á∩ ºñÑß∞ ¿¡Σ«α¼áµ¿∩ »« »Ñαó«¼π FDC
  694. ΓᬪѠ»α¿¼Ñ¡¿¼á ¿ ¬« óΓ«α«¼π »α¿ πßΓá¡«ó¬Ñ φΓ«ú« ñ¿á»áº«¡á  áñαÑß«ó.
  695. 8272A (¿½¿ Ñú« ¿¡ΓÑúαá½∞¡δ⌐ á¡á½«ú) «Γ«íαáªáÑΓß∩ ¬ »«αΓá¼ 3F4h (MSR)
  696. ¿ 3F5h (DR).
  697.    èᬠóδ πªÑ ó¿ñѽ¿, 8272A ¡Ñ ¼«ªÑΓ ßá¼ π»αáó½∩Γ∞
  698. ß«ßΓ«∩¡¿Ñ¼ ñó¿úáΓѽ∩ ñ¿ß¬«ó«ñá, ΓᬠτΓ« »«αΓ 3F2 (µ¿Σα«ó«⌐ αÑú¿ßΓα
  699. óδó«ñá) «íÑß»Ñτ¿óáÑΓ ΓᬿѠ«»Ñαᵿ¿. (æ¼. α¿ß. 1.2.4a).
  700.  
  701.  
  702.                                 - 11 -
  703.  ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  704.  │  D  │  C  │  B  │  A  │ IE  │ EC  │ DS1 │ DS0 │
  705.  └──┬──┴─────┴─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┘
  706.     └────────┬────────┘     │     │     └──┬──┘
  707.              │              │     │        └─éδí«α ñ¿ß¬«ó«ñá
  708.              │              │     └──────────è«¡Γα«½½Ñα ñ«ßΓπ»Ñ¡
  709.              │              └────────────────ÅαÑαδóá¡¿∩ αáºαÑΦÑ¡δ
  710.              └───────────────────────────────äó¿úáΓѽ∞ ñ«ßΓπ»Ñ¡
  711.             É¿ß. 1.2.4a û¿Σα«ó«⌐ αÑú¿ßΓα óδó«ñá (3F2h).
  712.  
  713.    ü¿Γδ DS1 ¿ DS0 µ¿Σα«ó«ú« αÑú¿ßΓαá óδó«ñá «Γ¼Ñ¡∩εΓ í¿Γ DS, «»αÑñѽ∩-
  714. Ѽδ⌐ ó ¬«¼á¡ñÑ 8272A, ΓᬠτΓ« ¼«ª¡« ¿º¼Ñ¡∩Γ∞ (ºá¼Ñ¡∩Γ∞) ñ¿ß¬«ó«ñ ó ΓÑ-
  715. τÑ¡¿Ñ óδ»«½¡Ñ¡¿∩ ¬«¼á¡ñδ. ò«Γ∩ φΓ« «»áß¡δ⌐ ¼ÑΓ«ñ, ¼¡«ú¿Ñ ß»«ß«íδ ºáΘ¿-
  716. Γδ «Γ ¬«»¿α«óá¡¿∩ íếαπεΓß∩ ¡á φΓ«⌐ «ß«íÑ¡¡«ßΓ¿.
  717.    ôßΓá¡«ó¬á í¿Γá EC ó ¡π½∞ ßíαáßδóáÑΓ ¬«¡Γα«½½Ñα,  Γᬠ½εíá∩ «»Ñαá-
  718. µ¿∩ (¡á»α¿¼Ñα , Σ«α¼áΓ¿α«óá¡¿Ñ ñ«α«ª¬¿ ¿½¿ ºá»¿ß∞ ñá¡¡δσ) ¼«úπΓ íδΓ∞
  719. «ßΓá¡«ó½Ñ¡δ ó ½εí«⌐ ¼«¼Ñ¡Γ. (ò«Γ∩ ñ«½ª¡á ß«í½εñáΓ∞ß∩ «ß«íá∩ «ßë᫪-
  720. ¡«ßΓ∞, τΓ«íδ óδ»«½¡¿Γ∞ αѺ¬«Ñ ºáóÑαΦÑ¡¿Ñ íѺ í¿Ñ¡¿⌐).
  721.    ü¿Γ IE »Ññ¡áº¡áτÑ¡ ñ½∩ »α¿¼Ñ¡Ñ¡¿∩ ó ¼¡«ú«¬«¡Γα«½½Ñα¡δσ  ß¿ßΓѼáσ.
  722. Æ.¬.  óßÑ  FDC  ¿ß»«½∞ºπεΓ  Γ«Γ  ªÑ ßá¼δ⌐ IRQ 6 ¿ ¬á¡á½ 2 DMA,  íѺ-
  723. ñÑ⌐ßΓóπεΘ¿⌐ ¬«¡Γα«½½Ñα ¼«ªÑΓ ( ¿½¿ ¡Ñ ¼«ªÑΓ - ¡Ñ½∞º∩ ß¬áºáΓ∞ «»αÑñÑ-
  724. ½Ñ¡¡«) πßΓá¡«ó¿Γ∞ φΓπ ½¿¡¿ε ó ¡¿º¬¿⌐ πα«óÑ¡∞, Γᬿ¼ «íαẫ¼ ºá»αÑΘá∩
  725. ñαπú¿¼ ¬«¡Γα«½½Ñαá¼ ñ«ßΓπ» ¬ ß¿ßΓѼ¡«¼π «íß½πª¿óá¡¿ε.
  726.    ü¿Γ ñ«ßΓπ»á ¬ ñó¿úáΓѽε ñ¿ß¬«ó«ñá - ñαπú«⌐ ¿ßΓ«τ¡¿¬ ß»«ß«íá ºáΘ¿-
  727. Γδ (æ¼. 1.4.2).
  728.    éΓ«α«⌐ ñ«»«½¡¿Γѽ∞¡δ⌐ αÑú¿ßΓα ¡áσ«ñ¿Γß∩ ó 3F7 (αÑú¿ßΓα π»αáó½Ñ¡¿∩
  729. ñ¿ß¬ÑΓδ).  (¥Γ«Γ αÑú¿ßΓα ¡Ñ ßπΘÑßΓóπÑΓ ¡á ßΓáαδσ XT,  ¡« ¼«ªÑΓ τáßΓ«
  730. íδΓ∞ «í¡áαπªÑ¡ ¡á »«ºñ¡¿σ á¡á½«úáσ). èᬠ¼¡Ñ σ«α«Φ« ¿ºóÑßΓ¡«, Γ«½∞¬«
  731. ñóá ¼½áñΦ¿σ í¿Γá º¡áτ¿¼δ ñ½∩ ºá»¿ß¿,  ¿ «ñ¿¡«τ¡ ßΓáαΦ¿⌐  í¿Γ  -  ñ½∩
  732. τΓÑ¡¿∩.
  733.    3F7 (ºá»¿ß∞) óδí¿αáÑΓ ß¬«α«ßΓ¿ »ÑαÑß佬¿:
  734.    00 - 500 èü«ñ (MFM)
  735.    01 - 300 èü«ñ (MFM)
  736.    10 - 250 èü«ñ (MFM)
  737.    11 - 125 èü«ñ (FM)
  738. ÅÑαóδÑ Γα¿ º¡áτÑ¡¿∩ (00-10) »α¿óÑñÑ¡δ ó απ¬«ó«ñßΓóáσ. ò«Γ∩ »«ß½Ññ¡ÑÑ
  739. º¡áτÑ¡¿Ñ ¡Ñ«»¿ßá¡«,  «¡« αáí«ΓὫ ¡á ½εí«¼ AT FDC, ß ¬«Γ«α묨 ∩ ¬«ú-
  740. ñá-½¿í«  ßΓὬ¿óáΓ∞ß∩.  (¥Γ«  ßπΘÑßΓóÑ¡¡á∩  ß¬«α«ßΓ∞ »ÑαÑß佬¿ - «¡á
  741. αáºαÑΦáÑΓ τΓÑ¡¿Ñ-ºá»¿ß∞ SD-ñ¿ß¬«ó ó ñ¿ß¬«ó«ñÑ ¡á 360  èü).  ç¡áτÑ¡¿∩
  742. 00-10  »αÑñ¡áº¡áτáεΓß∩  ñ½∩ »α¿¼Ñ¡Ñ¡¿∩ ß MFM-ñ¿ß¬ÑΓἿ,  ΓᬠτΓ« «¡¿
  743. ¿¼ÑεΓ ¿¼»π½∞ßδ ó 1/4 ñ½¿¡δ µ¿¬½á.  æ¿¡σα«¡¿ºáµ¿∩ ¡á 125  èü«ñ  ¿¼ÑÑΓ
  744. ¿¼»π½∞ßδ ó 1/8 ñ½¿¡δ µ¿¬½á.
  745.    Æ.¬. FDC ¡Ñ ¿¼ÑεΓ FM-ß¿¡σα«¡¿ºáµ¿¿ ¡á 175 èü«ñ,  ñ¿ß¬¿  «ñ¿¡áα¡«⌐
  746. »½«Γ¡«ßΓ¿  ¡Ñ  ¼«úπΓ  ºá»¿ßδóáΓ∞ß∩ ¡á ñ¿ß¬«ó«ñÑ ß óδß«¬«⌐ »½«Γ¡«ßΓ∞ε
  747. (360 «í«α«Γ«ó/¼¿¡.). ü½áú«ñáα∩ óδß«¬«⌐ ºáΘ¿ΘÑ¡«ßΓ¿ «Γ «Φ¿í«¬ FM-Σ«α-
  748. ¼áΓá ñá¡¡δσ, ñ¿ß¬¿ «ñ¿¡áα¡«⌐ »½«Γ¡«ßΓ¿ ÑΘÑ ¼«úπΓ τ¿ΓáΓ∞ß∩ ó ñ¿ß¬«ó«-
  749. ñÑ ¡á 360 «í./¼¿¡.  FM-ñ¿ß¬ÑΓδ ¼«úπΓ íδΓ∞ ¬á¬ τ¿ΓáΓ∞ß∩,  Γᬠ ¿
  750. »¿ßáΓ∞ß∩ ¡á 360Kí (300 «í./¼¿¡.) ñ¿ß¬«ó«ñÑ.
  751.    3F7 (τΓÑ¡¿Ñ) - ¿º¼Ñ¡Ñ¡¿Ñ ß«ßΓ«∩¡¿∩ ñ¿ß¬«ó«ñá:  πßΓá¡«ó¬á  í¿Γá  7
  752. (»α«óÑα∩εΓ al,  80h) º¡áτ¿Γ, τΓ« ñ¿ß¬ÑΓá ºá¼Ñ¡∩½áß∞. ê¡ñ¿¬áΓ«α ß¼Ñ¡δ
  753. MEDIA íπñÑΓ ßíαáßδóáΓ∞ß∩ »«ß½Ñ »Ñαó«⌐ πßΓᡫ󬿠µ¿½¿¡ñαá,  «Γ½¿τ¡«ú«
  754. «Γ ¡π½Ñó«ú«.
  755.    ÄτÑó¿ñ¡«Ñ »α¿¼Ñ¡Ñ¡¿Ñ αÑú¿ßΓαá 3F7 ó  ºáΘ¿ΓÑ  «Γ  ¬«»¿α«óá¡¿∩  «Γ-
  756. ¡«ß¿Γß∩ ¬ «»αÑñѽѡ¿ε »«º¿µ¿¿ í¿Γ«ó«⌐ ∩τÑ⌐¬¿. Æ.¬. FDC »ÑαѬ½ετáÑΓß∩
  757. ¡á ¡«ó«¼ε ß¬«α«ßΓ∞ »ÑαÑß佬¿ »«τΓ¿ ¼ú¡«óÑ¡¡«,  »ÑαѬ½ετá∩ ß¬«α«ßΓ∞ ó
  758. αáßτÑΓ¡δ⌐  ¼«¼Ñ¡Γ,  ¼«ª¡«  ßñó¿úáΓ∞ í¿Γ«óπε ∩τÑ⌐¬π ¡á ¼á½πε τáßΓ∞ ÑÑ
  759. ñ½¿¡δ.  ¥Γá ¼ÑΓ«ñ¿¬á αáºαÑΦáÑΓ τ¿ΓáΓ∞ ½εíπε τáßΓ∞ ñ«α«ª¬¿,  Ñß½¿ ßπ-
  760. ΘÑßΓóπÑΓ  »«  ¬αá⌐¡Ñ⌐  ¼ÑαÑ  «ñ¡« »«½Ñ ñ«ßΓ«óÑα¡δσ ñá¡¡δσ ¿ ¿ºóÑßΓ¡«
  761. »α¿í½¿º¿Γѽ∞¡« ¼ÑßΓ«»«½«ªÑ¡¿Ñ »αÑñßΓáó½∩εΘÑ⌐ ¿¡ΓÑαÑß «í½áßΓ¿.
  762.  
  763.                1.2.5 "ì«α¼á½∞¡δÑ" Σ«α¼áΓδ ñ¿ß¬ÑΓδ PC
  764.  
  765.    ÅÑαóδÑ ßΓá¡ñáαΓδ PC »αÑñ¡áº¡áτ὿ß∞ ñ½∩  «ñ¡«ñóπσßΓ«α«¡¡¿σ  »∩Γ¿-
  766.  
  767.                                 - 12 -
  768. ñε⌐¼«óδσ ñ¿ß¬ÑΓ ¡á 40 ñ«α«ªÑ¬.  æ½Ññπ∩ ß»Ñµ¿Σ¿¬áµ¿¿ INTEL, «¡¿ ¿¼Ñ½¿
  769. 8 512-íá⌐Γ«óδσ ßÑ¬Γ«α«ó ¡á ñ«α«ª¬Ñ,  Γᬿ¼ «íαẫ¼,  ¿ß»«½∞ºπ∩  4096
  770. íá⌐Γ«ó (65%) ¿º 6250-íá⌐Γ«ó«⌐ ¡ÑßΣ«α¼áΓ¡«⌐ Ñ¼¬«ßΓ¿ ñ«α«ª¬¿.  æÑ¬Γ«αá
  771. ¡á ñ«α«ª¬Ñ αáß»«½áú὿ß∞ »«ß½Ññ«óáΓѽ∞¡« (¿¡ΓÑ૨ó 1:1), ¬á¬ ó« óßÑσ
  772. ñαπú¿σ  ßΓá¡ñáαΓ¡δσ  Σ«α¼áΓáσ.  Å«ºñ¡ÑÑ ñ¿ß¬¿ ß 9 ¿ 10 ßÑ¬Γ«αáἿ ¡á
  773. ñ«α«ª¬Ñ ¿ß»«½∞ºπεΓ ß««ΓóÑΓßΓóÑ¡¡« 74% ¿ 82% «íΘÑú« »α«ßΓαá¡ßΓóá. ÆÑ-
  774. «αÑΓ¿τÑ߬«Ñ  «úαá¡¿τÑ¡¿Ñ  ñ½∩  Σ«α¼áΓ¿απѼ«⌐ Ñ¼¬«ßΓ¿ ñ«α«ª¬¿ ñó«⌐¡«⌐
  775. »½«Γ¡«ßΓ¿ - »α¿¼Ñα¡« 89.2%  (5575 íá⌐Γ«ó ¿½¿ 10.89 ßÑ¬Γ«αá ¡á ñ«α«ª-
  776. „).
  777.    Æá¬«Ñ πóѽ¿τÑ¡¿Ñ Ñ¼¬«ßΓ¿  ñ¿ß¬«ó  ßñѽὫß∞  ó«º¼«ª¡δ¼  í½áú«ñáα∩
  778. óδß«¬«⌐ ßΓáí¿½∞¡«ßΓ¿ óαáΘÑ¡¿∩ ó ß«óαѼѡ¡δσ »α¿ó«ñáσ.  ò«Γ∩ ñ«»π߬á-
  779. ÑΓß∩ «Γ¬½«¡Ñ¡¿Ñ ó 2.5%  «Γ ¡«¼¿¡á½∞¡«ú« óαѼѡ¿ óαáΘÑ¡¿∩, ¼δ ¡¿¬«úñá
  780. ¡Ñ  óßΓαÑτ὿ ñ¿ß¬«ó«ñ ñ½∩ ú¿í¬¿σ ñ¿ß¬ÑΓ ß «Γ¬½«¡Ñ¡¿Ñ¼ óαѼѡѼ óαá-
  781. ΘÑ¡¿∩  óδΦÑ  0.2%.  Æá¬á∩  ßΓáí¿½∞¡«ßΓ∞  »«ºó«½∩ÑΓ  π¼Ñ¡∞Φ¿Γ∞  ñ½¿¡π
  782. ¼ÑªßÑ¬Γ«α¡«ú« »α«¼ÑªπΓ¬á.
  783.    ìá»α¿¼Ñα ,  Ñß½¿ ó«º¼«ª¡«Ñ «Γ¬½«¡Ñ¡¿Ñ ß¬«α«ßΓ¿ óαáΘÑ¡¿∩ -  ±2.5%,
  784. ¡Ñ«íσ«ñ¿¼« αѺÑαó¿α«óáΓ∞ ¼ÑσßÑ¬Γ«α¡δ⌐ »α«¼ÑªπΓ«¬, ñ«ßΓáΓ«τ¡δ⌐, τΓ«íδ
  785. »«ññÑনóáΓ∞ ½εíπε ñ½¿¡π ßÑ¬Γ«αá. ÅαÑñ»«½«ª¼, τΓ« ñ¿ß¬ÑΓá Σ«α¼áΓ¿α«-
  786. óá¡á ¡á ñ¿ß¬«ó«ñÑ ß ¡á¿¼Ñ¡∞Φ¿Ñ⌐ ß¬«α«ßΓ∞ε óαáΘÑ¡¿∩,  ¿ íπñÑΓ ¼«ñ¿Σ¿-
  787. µ¿α«óá¡á ¡á ñ¿ß¬«ó«ñÑ ß ßἫ⌐ íδßΓα«⌐ ß¬«α«ßΓ∞ε  óαáΘÑ¡¿∩.  é  Γᬫ¼
  788. ß½πτáÑ ¡Ñ«íσ«ñ¿¼« αѺÑαó¿α«óáΓ∞ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ( 512 + 62 ) * ( 2 *
  789. 2.5%  ) íá⌐Γ ñ½∩ ¼ÑªßÑ¬Γ«α¡«ú« »α«¼ÑªπΓ¬á (62 -  ¼¿¡¿¼á½∞¡δ⌐  αẼÑα
  790. ºáú«½«ó¬á ßÑ¬Γ«αá ñ½∩ Σ«α¼áΓá MFM). ¥Γ« »α¿óÑñÑΓ ¬ ¼¿¡¿¼á½∞¡«¼π »α«-
  791. ¼ÑªπΓ¬π ó 29 íá⌐Γ«ó,  ΓᬠτΓ« ñáªÑ Σ«α¼áΓ 10 ßÑ¬Γ«α«ó ¡á ñ«α«ª¬π íπ-
  792. ñÑΓ ¡«α¼á½∞¡δ¼ »α¿ Γᬿσ «Γ¬½«¡Ñ¡¿∩σ.
  793.    ùΓ«íδ »«ññÑনóáΓ∞ ß«ó¼ÑßΓ¿¼«ßΓ∞  (»«  ¬αá⌐¡Ñ⌐  ¼ÑαÑ,  τáßΓ¿τ¡πε)
  794. Σ«α¼áΓá  ¡á  40 ñ«α«ªÑ¬ ß 80-ñ«α«ªÑτ¡δ¼ ñ¿ß¬«ó«ñ«¼ óδß«¬«⌐ »½«Γ¡«ßΓ¿
  795. (HD), »Ñαóδ⌐ ¼«ñѽ¿απεΓß∩ »πΓѼ »α«»π߬á óßÑσ ¡ÑτÑΓ¡δσ ñ«α«ªÑ¬. æ½Ñ-
  796. ñ«óáΓѽ∞¡«,  360K ñ¿ß¬¿,  ºá»¿ßδóáѼδÑ ó 360K ñ¿ß¬«ó«ñÑ óßÑúñá ¼«ª¡«
  797. »α«τ¿ΓáΓ∞ ¡á HD-ñ¿ß¬«ó«ñÑ,  ¡« 360K ñ¿ß¬ÑΓᠺỿßδóáѼá∩ ó HD-ñ¿ß¬«-
  798. ó«ñÑ ¼«ªÑΓ íδΓ∞ ¡Ñß«ó¼ÑßΓ¿¼δ⌐ ß 360K ñ¿ß¬«ó«ñἿ.
  799.    Æ.¬. ¬½ετÑóδÑ ñ¿ß¬ÑΓδ »«τΓ¿ óßÑúñá óδ»«½¡∩εΓß∩ ¡á  360K  ñ¿ß¬«ó«-
  800. ñáσ,  ¼δ  íπñѼ ¡Ñ íπñѼ αáßß¼áΓα¿óáΓ∞ óßÑ Σ«α¼áΓδ óδß«¬«⌐ »½«Γ¡«ßΓ¿
  801. ó««íΘÑ.
  802.  
  803.                  1.3 æ»«ß«í óαѼ∩¡Ñºáó¿ß¿¼«⌐ ºáΘ¿Γδ
  804.  
  805.    îδ íπñÑΓ αáßß¼áΓα¿óáΓ∞ ñ¿ß¬«óδÑ ¼ÑΓ¬¿ ºáΘ¿Γδ,  ¬«Γ«αδÑ  ¡Ñ  ¼«úπΓ
  806. íδΓ∞  »α«óÑαÑ¡δ íѺ »α¿¼Ñ¡Ñ¡¿∩ ñαπú¿σ πßΓα«⌐ßΓó,  ¬á¬ ßá¼ FDC.  ¥Γ«Γ
  807. ß»«ß«í ñ«½ªÑ¡ αáí«ΓáΓ∞ ¡á ½εí«¼ ß¿ßΓѼ¡«¼ «í«απñ«óá¡¿¿ ß ß«ó¼ÑßΓ¿¼δ¼
  808. FDC.
  809.     Åα¿¼Ñτá¡¿Ñ: óßÑúñá, ¬«úñá ¼δ íπñѼ π»«¼¿¡áΓ∞ í¿Γ-¬«»¿α«óΘ¿¬, φΓ«
  810. íπñÑΓ  «Γ¡«ß¿Γ∞ß∩  »«ß½Ññ¡Ñ⌐ º¡á¬«¼«⌐ ¡á¼ óÑαß¿¿.  é« óß∩¬«¼ ß½πτáÑ,
  811. φΓ« ¡Ñ »«ß½Ññ¡¿Ñ ßπΘÑßΓóπεΘ¿Ñ óÑαß¿¿. îδ ¿¼ÑѼ ¬«»¿¿ (ºá»αÑΘÑ¡¡δÑ »«
  812. »α¿τ¿¡á¼,  π»«¼∩¡πΓδ¼  ó  »αÑñ¿ß½«ó¿¿)  Copy  II αÑ὿ºáµ¿¿ PC 7.10,
  813. CopyWrite αÑñᬵ¿¿ ßÑ¡Γ∩íα∩ 1988 ¿ TeleDisk óÑαß¿¿ 2.11.
  814.     Åα¿¼Ñτá¡¿Ñ: πΓóÑαªñÑ¡¿Ñ "¡Ñ ¼«ªÑΓ ó«ß»α«¿ºó«ñ¿Γ∞ß∩", »α¿¼Ñ¡∩Ѽ«Ñ
  815. áóΓ«α«¼ ¬ Γ«⌐ ¿½¿ ñαπú«⌐ ¼ÑΓ¬Ñ ºáΘ¿Γδ,  π¬áºδóáÑΓ ¡Ñ  ¡á  Σ¿º¿τÑ߬¿Ñ
  816. «úαá¡¿τÑ¡¿∩ á»»áαáΓ¡δσ ßαÑñßΓó PC,  ¡« ¡á «úαá¡¿τÑ¡¡«ßΓ∞ ¼«¿σ º¡á¡¿-
  817. ¿⌐. Å«φΓ«¼π ∩ íπñπ í½áú«ñáαÑ¡ óßѼ, ¬Γ« αáßΦ¿α¿Γ ¿σ.
  818.  
  819.           1.3.1 ä«»«½¡¿Γѽ∞¡δÑ ¿½¿  «ΓßπΓßΓóπεΘ¿Ñ ßÑ¬Γ«αá
  820.  
  821.    Æá¬ ¬á¬ »ÑαóδÑ ñ¿ß¬ÑΓδ îæ-äÄæ ¿¼Ñ½¿ ¼¡«ú« ¡Ñ¿ß»«½∞ºπѼ«ú«  »α«ßΓ-
  822. αá¡ßΓóá ¡á ñ«α«ª¬Ñ, «τÑó¿ñ¡á∩ ¿ñÑ∩ - ß«σαá¡∩Γ∞ ñ«»«½¡¿Γѽ∞¡δ⌐ ßÑ¬Γ«α
  823. ¡á ñ«α«ª¬Ñ ¡áα∩ñπ ß ßΓá¡ñáαΓ¡δ¼¿ ßÑ¬Γ«αἿ îæ-äÄæ. äáªÑ ú«αáºñ« ½πτ-
  824. ΦÑ π»á¬«óá¡¡δÑ Σ«α¼áΓδ 10 ßÑ¬Γ«α«ó ¡á ñ«α«ª¬Ñ ß»«ß«í¡δ αẼÑΘáΓ∞ ñ«-
  825. »«½¡¿Γѽ∞¡δ⌐ 256-íá⌐Γ¡δ⌐ ßÑ¬Γ«α.  äαπú«Ñ ¼ÑßΓ« ñ½∩ αẼÑΘÑ¡¿∩  Γᬿσ
  826. ñ«»«½¡¿Γѽ∞¡δσ ßÑ¬Γ«α«ó - 41-∩ ñ«α«ª¬á, ¬«Γ«αá∩ ¡Ñ ¿ß»«½∞ºπÑΓß∩ äÄæ,
  827. ¡« ¬ ¬«Γ«α«⌐ ¼«ªÑΓ «íαáΘáΓ∞ß∩ í«½∞Φ¿¡ßΓó« ñ¿ß¬«ó«ñ«ó. ìá 80-ñ«α«ªÑτ-
  828. ¡δσ  ñ¿ß¬«ó«ñáσ  ñ«»«½¡¿Γѽ∞¡δÑ ßÑ¬Γ«αá ¼«úπΓ ß¬αδóáΓ∞ß∩ ¡á ¡ÑτÑΓ¡δσ
  829. ñ«α«ª¬áσ.
  830.    ÆÑ»Ñα∞, Γá¬á∩ ¼ÑΓ¬á ßá¼á »« ßÑíÑ ¡Ñ ¼«ªÑΓ αáßß¼áΓα¿óáΓ∞ß∩ ¬á¬ σ«-
  831.  
  832.                                 - 13 -
  833. α«Φá∩ ºáΘ¿Γá «Γ ¬«»¿α«óá¡¿∩, »«Γ«¼π τΓ« ñ«»«½¡¿Γѽ∞¡δÑ ßÑ¬Γ«αá ¼«úπΓ
  834. íδΓ∞ ½Ñú¬« «í¡áαπªÑ¡δ ¬«¼á¡ñ«⌐ τΓÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá.  ïεí«⌐
  835. »«ßΓáó½∩Ѽδ⌐ ¡á αδ¡«¬ í¿Γ-¬«»¿α«óΘ¿¬ (CopyWrite, CopyIIPC, TeleDisk,
  836. ¿ Γ.ñ.) ß»«ß«íÑ¡ ßñѽáΓ∞ φΓ«. (ò«Γ∩, ßÑ¬Γ«αá ¡á ¡ÑτÑΓ¡δσ ñ«α«ª¬áσ ¡Ñ
  837. íπñπΓ «í¡áαπªÑ¡δ ¡Ñ¬«Γ«α묨 »α«úαá¼¼).  ò«α«Φ¿Ñ  αạ«ó¿ñ¡«ßΓ¿  φΓ«⌐
  838. ßσÑ¼δ »α¿óÑñÑ¡δ ó αáºñѽáσ 1.3.4 - 1.3.8.
  839.  
  840.                    1.3.2 æ½áíδÑ ñó«¿τ¡δÑ αáºα∩ñδ
  841.  
  842.    äαπú«⌐ ßΓáαδ⌐ σ«α«Φ¿⌐ ß»«ß«í ºáΘ¿Γδ - ñá¡¡δÑ , ¬«Γ«αδÑ íπñπΓ αáº-
  843. ½¿τ¡δ¼¿ ó »«ß½ÑñπεΘ¿σ «»Ñαᵿ∩σ τΓÑ¡¿∩ (Γ.¡.  "ß½áíδÑ ñá¡¡δÑ"). æ½á-
  844. íδÑ ñá¡¡δÑ ¼«úπΓ íδΓ∞ ½εí묨 ñá¡¡δ¼¿, αáß»«½«ªÑ¡¡δ¼¿ ó µ¿Σα«ó«⌐ "¡Ñ-
  845. «»αÑñѽѡ¡«⌐ «í½áßΓ¿" ¿½¿ ñ½¿¡¡δ¼ α∩ñ«¼ ¡π½Ñ⌐ ß »α«»πΘÑ¡¡δ¼¿  í¿ΓἿ
  846. ß¿¡σα«¡¿ºáµ¿¿.  é »Ñαó«¼ ß½πτáÑ,  FDC íπñÑΓ π»αáó½∩Γ∞ß∩ »α«¿ºó«½∞¡δ¼
  847. Φπ¼«¼. é »«ß½Ññ¡Ñ¼ ß½πτáÑ, »α«¿ºó«½∞¡δÑ ¿º¼Ñ¡Ñ¡¿∩ ó« óαáΘÑ¡¿¿ ñ¿ß¬«-
  848. ó«ñá  íπñπΓ »ÑαѼÑΘáΓ∞ í¿Γ«óπε ∩τÑ⌐¬π ºá ß¿¡σα«¡¿ºáµ¿ε (ΓᬿѠñá¡¡δÑ
  849. ¡Ñ ¼«úπΓ ºá»¿ßδóáΓ∞ß∩ íѺ ¼«ñ¿Σ¿¬áµ¿¿ á»»áαáΓπαδ FDC,  ΓᬠτΓ« ¼δ ¡Ñ
  850. íπñѼ «íßπªñáΓ∞ ¿σ).
  851.    Äñ¿¡ σ«α«Φ¿⌐ ß»«ß«í úÑ¡Ñα¿α«óáΓ∞ ß½áíδÑ  ñá¡¡δÑ  ß«ßΓo¿Γ  ó  Γ«¼,
  852. τΓ«íδ »«¼ÑΘáΓ∞ ¿σ «¬«½« ñÑΣѬΓá »«óÑασ¡«ßΓ¿.  Æá¬¿Ñ ß½áíδÑ ñá¡¡δÑ ¡Ñ
  853. íπñπΓ ¿ßτѺáΓ∞ »«ß½Ñ ¬«¼á¡ñδ ºá»¿ß¿ ñá¡¡δσ ó φëàßÑ¬Γ«αá. è ß«ªá½Ñ-
  854. ¡¿ε (σá!), ºáó«ñ߬¿Ñ ñÑΣѬΓδ »«óÑασ¡«ßΓ¿ ΓÑ»Ñα∞ αÑñ¬¿, ΓᬠτΓ« ¡πª¡«
  855. ñѽáΓ∞ ¿σ óαπτ¡πε.  îδ ó¿ñѽ¿ ¼¡«ú« Γᬿσ ß»«ß«í«ó  -  «Γ  µáαá»á¡∞∩
  856. ñ¿ß¬á  αªáóδ¼  úó«ºñѼ ñ« »α«ª¿úá¡¿∩ óÑασ¡«ßΓ¿ ¿¡Σαá¬αáß¡δ¼ ½áºÑα«¼.
  857. Äñ¡á¬«, φΓ« Ññóá ½¿ »α«úαá¼¼¿ßΓ߬á∩ »α«í½Ñ¼á.
  858.    æ½áíδÑ ñó«¿τ¡δÑ αáºα∩ñδ ¼«ú½¿ ß«ºñáóáΓ∞ß∩ ΓᬪѠ»α«úαá¼¼¡«.  ÅÑα-
  859. óδ⌐ ß»«ß«í - π»αáó½∩Γ∞ í¿Γ«¼ óδí«αá/«Γ¼Ñ¡δ ñ¿ß¬«ó«ñá ó αÑú¿ßΓαÑ µ¿Σ-
  860. α«ó«ú« óδó«ñá (3F2h).  ìá»α¿¼Ñα, Ñß½¿ óδ σ«Γ¿ΓÑ ß«ºñáóΓ∞ ß½áíδ⌐ íá⌐Γ
  861. ¡á ñ¿ß¬«ó«ñÑ A:,  óδ ñ«½ª¡δ ¡áτáΓ∞ «»Ñαáµ¿ε ºá»¿ß¿,  »«ñ«ªñáΓ∞, »«¬á
  862. ªÑ½áѼδ⌐ íá⌐Γ ¡Ñ íπñÑΓ »ÑαѼÑΘÑ¡ ¡á ñ¿ß¬«ó«ñ (¡« ¡Ñ ¡á FDC !) ¿ »«ó-
  863. Γ«α¿Γ∞ »«ßδ½¬π µ¿Σα«ó«¼π αÑú¿ßΓαπ º¡áτÑ¡¿⌐ 1Dh (óδí«α ñ¿ß¬«ó«ñá 1) ¿
  864. 1Ch  (óδí«α ñ¿ß¬«ó«ñá 0) ó« óαѼ∩ »ÑαѼÑΘÑ¡¿∩ íá⌐Γá.  Æá¬á∩ «»Ñαᵿ∩
  865. íπñÑΓ ¼«ñπ½¿α«óáΓ∞ óßÑ ñá¡¡δÑ (ó¬½ετÑ¡¿Ñ í¿Γδ ß¿¡σα«¡¿ºáµ¿¿) ºá»¿ßδ-
  866. óáѼδÑ  ¡á ñ¿ß¬ »α∩¼«πú«½∞¡δ¼¿ ¿¼»π½∞ßἿ,  »ÑαѼÑΘá∩ ¿σ ó ¡Ñ«»αÑñÑ-
  867. ½Ñ¡¡πε «í½áßΓ∞.
  868.    éΓ«α«⌐ ¼ÑΓ«ñ ΓαÑíπÑΓ »«τΓ¿ Γᬫ⌐ ªÑ «»Ñαᵿ¿ ß αÑú¿ßΓα«¼ π»αáó½Ñ-
  869. ¡¿∩ ñ¿ß¬ÑΓδ (3F7h).  ÅÑαѬ½ετÑ¡¿Ñ ß¬«α«ßΓ¿ »ÑαÑñáτ¿ ñá¡¡δσ íπñÑΓ »Ñ-
  870. αÑαẼÑΘáΓ∞  ñá¡¡δÑ  ¿ í¿Γδ ß¿¡σα«¡¿ºáµ¿¿ ¿ ñÑΣ«α¼¿α«óáΓ∞ ¿σ,  ΓᬪÑ
  871. »ÑαѼÑΘá∩ ó ¡Ñ«»αÑñѽѡ¡πε «í½áßΓ∞.
  872.    ü¿Γ-¬«»¿α«óΘ¿¬, ßΓὬ¿óá∩ß∞ ß« ß½áí묨 ñá¡¡δ¼¿,  óßΓáÑΓ »ÑαÑñ ¿¡-
  873. ΓÑαÑß¡«⌐ ñ¿½Ñ¼¼«⌐:  ∩ó½∩εΓß∩ ½¿ ß½áíδÑ í¿Γδ ß½ÑñßΓó¿Ñ¼ ¡Ñ«»«º¡á¡¡«ú«
  874. ñÑΣѬΓá  »«óÑασ¡«ßΓ¿,  ¿ «»Ñαᵿ∩ ñ«½ª¡á »«óΓ«α∩Γ∞ß∩,  »«¬á »Ñαó«¡á-
  875. τá½∞¡δÑ ñá¡¡δÑ ¡Ñ íπñπΓ ó«ßßΓá¡«ó½Ñ¡δ, ¿½¿ φΓ« ¼ÑΓ¬á ºáΘ¿Γδ, ¬«Γ«αá∩
  876. ñ«½ª¡á íδΓ∞ ó«ß»α«¿ºóÑñÑ¡á ó« ¿¼∩ Ñú« »«½¡«⌐ ß½áóδ?
  877.    êº óßÑσ í¿Γ-¬«»¿α«óΘ¿¬«ó,  ß  ¬«Γ«α묨  ¼δ  ßΓὬ¿ó὿ß∞,  Γ«½∞¬«
  878. CopyWrite  íδ½  ß»«ß«í¡Ñ¡  ß»αáó½∩Γ∞ß∩ ß« ß½áí묨 ñá¡¡δ¼¿,  σ«Γ∩ φΓ«
  879. »αÑ«íαẫóδóáÑΓ «ñ¿¡ ß½áíδ⌐ íá⌐Γ ó 10- 12 íá⌐Γ«ó,  ΓᬠτΓ«  »Ñαó«¡á-
  880. τá½∞¡πε ¼ÑΓ¬π ¼«ª¡« ½Ñú¬« «Γ½¿τ¿Γ∞ «Γ ¬«»¿¿.  Æá¬¿¼ «íαẫ¼,  ß½áíδÑ
  881. ñá¡¡δÑ - ¡Ñ Γá¬á∩ »½«σá∩ óÑΘ∞ ñ½∩ ñÑΦÑó«⌐ ºáΘ¿Γδ ¿ íπñÑΓ,  «τÑó¿ñ¡«,
  882. »«»π½∩α¡á ó æææÉ ¡á «ΓÑτÑßΓóÑ¡¡«¼ »α«úαá¼¼¡«¼ «íÑß»ÑτÑ¡¿¿.
  883.  
  884.                      1.3.3 äá¡¡δÑ ó »α«¼ÑªπΓ¬Ñ
  885.  
  886.    î«ª¡« ½Ñú¬«  ß«σαá¡∩Γ∞  ¡Ñí«½∞Φ«Ñ  ¬«½¿τÑßΓó« ñá¡¡δσ ó »α«¼ÑªπΓ¬Ñ
  887. »«ß½Ñ »«½∩ ñá¡¡δσ ßÑ¬Γ«αá (GAP 3). äѽá∩ φëàφëàßÑ¬Γ«α ¡Ñ »ÑαѺá-
  888. »¿ßδóáѼδ¼,  ¼ÑΓ¬á  íπñÑΓ »«ßΓ«∩¡¡« ¡áσ«ñ¿Γ∞ß∩ ó »α«¼ÑªπΓ¬Ñ ó »«½¡«⌐
  889. ß«σαá¡¡«ßΓ¿. éÑασ¡¿⌐ ¬αá⌐ ñ½∩ τ¿ß½á íá⌐Γ«ó ñá¡¡δσ, ¬«Γ«α«Ñ ºá»¿ßδóá-
  890. ÑΓß∩ ó GAP 3, ºáñáÑΓß∩ º¡áτÑ¡¿Ñ¼ GPL ó ¬«¼á¡ñÑ Σ«α¼áΓá ñ«α«ª¬¿. Åα«-
  891. óÑα¬á Γᬫ⌐ ¼ÑΓ¬¿ »α«ßΓá (»« ¬αá⌐¡Ñ⌐ ¼ÑαÑ,  ñ½∩ »Ñαó«ú«  ßÑ¬Γ«αá  ¡á
  892. ñ«α«ª¬Ñ) - τ¿ΓáεΓ ¬«¼á¡ñπ ñ«α«ª¬¿ ß N ¡á Ññ¿¡¿µπ í«½∞ΦÑ Σá¬Γ¿τÑ߬«ú«
  893. º¡áτÑ¡¿∩ ó ¿ñÑ¡Γ¿Σ¿¬áΓ«αÑ ßÑ¬Γ«αá, τΓ« íπñÑΓ ºáúαπªáΓ∞ ñá¡¡δÑ »α«¼Ñ-
  894. ªπΓ¬á ó »á¼∩Γ∞.
  895.    æ«σαá¡Ñ¡¿Ñ ñá¡¡δσ ó »α«¼ÑªπΓ¬Ñ ΓαÑíπÑΓ í«½∞ÑÑ ß½«ª¡«⌐  »α«µÑñπαδ.
  896.  
  897.                                 - 14 -
  898. ÅαÑñ»«½«ª¿¼,  τΓ« óδ ªÑ½áÑΓÑ ß«σαá¡¿Γ∞ 10 íá⌐Γ«ó ñá¡¡δσ ó »α«¼ÑªπΓ¬Ñ
  899. »Ñαó«ú« 512-íá⌐Γ«ó«ú« ßÑ¬Γ«αá ¡á ñ«α«ª¬Ñ 0 ú«½«ó¬¿ 0.  ìπª¡« ß¡áτá½á
  900. Σ«α¼áΓ¿α«óáΓ∞  ñ«α«ª¬π  0,  «»αÑñѽ∩∩  ¬«ñ ñ½¿¡δ 3 (1024 íá⌐Γ«ó) ñ½∩
  901. »Ñαó«ú« ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá, ¡« ¬«ñ ñ½¿¡δ 2 ñ½∩ »áαá¼ÑΓα«ó Σ«α¼á-
  902. Γá. çáΓѼ ¡áτ¿¡áÑΓß∩ «»Ñαᵿ∩ ºá»¿ß¿ ¡á ¿¼¿Γᵿ¿ 1024-íá⌐Γ«ó«ú« ßѬ-
  903. Γ«αá,  ¡« «ßΓá¡áó½¿óáÑΓß∩ »«ß½Ñ »ÑαÑß佬¿ 526 íá⌐Γ«ó (ñá¡¡δÑ ßÑ¬Γ«αá
  904. ß 512 íá⌐ΓἿ + 2-íá⌐Γ«óá∩ CRC + 10-íá⌐Γ«óδ⌐ »α«¼ÑªπΓ«¬ + 4-íá⌐Γ«óδ⌐
  905. ¬«¡Ñµ ñ½∩ íѺ«»áß¡«ßΓ¿).  çáΓѼ ¡Ñ«íσ«ñ¿¼« ¡áτáΓ∞  «»Ñαáµ¿ε  Σ«α¼áΓá
  906. ñ«α«ª¬¿ ¬«ñ«¼ ñ½¿¡δ 2 (¬á¬ ñ½∩ »áαá¼ÑΓα«ó Σ«α¼áΓá, Γᬠ¿ ñ½∩ ¿ñÑ¡Γ¿-
  907. Σ¿¬áΓ«αá ßÑ¬Γ«αá) ¿ «ßΓá¡«ó¿Γ∞ ÑÑ úñÑ-¡¿íπñ∞ ó¡πΓα¿ GAP 2 (¿ñÑ¡Γ¿Σ¿-
  908. ¬áΓ«α  ßÑ¬Γ«αá πªÑ ºá»¿ßá¡,  ¡« »«½Ñ ñá¡¡δσ ÑΘÑ ¡Ñ ßπΘÑßΓóπÑΓ).  èá¬
  909. «»Ñαᵿ∩ Σ«α¼áΓá,  Γᬠ¿ ºá»¿ß¿ ¼«úπΓ «ßΓá¡áó½¿óáΓ∞ß∩  ½¿í«  ßíα«ß«¼
  910. ¬«¡Γα«½½Ñαá (»«ß佬á 0 ¡á αÑú¿ßΓα µ¿Σα«ó«ú« óδó«ñá 3F2h),  ¿½¿ ¿º¼Ñ-
  911. ¡Ñ¡¿Ñ¼ óδíαá¡¡«ú« ñ¿ß¬«ó«ñá (ß¼. 1.3.2).
  912.    è ß«ªá½Ñ¡¿ε,  ¿¡«úñá íδΓóáÑΓ Γαπñ¡« αẽ¿τ¿Γ∞ "»πßΓ«⌐" »α«¼ÑªπΓ«¬
  913. «Γ »α«¼ÑªπΓ¬á, ß«ñÑαªáΘÑú« ñá¡¡δÑ ºáΘ¿Γδ. æΓáαδÑ ñ¿ß¬«ó«ñδ ¿¼Ñ½¿ «Γ-
  914. ¡«ß¿Γѽ∞¡«  í«½∞Φ¿Ñ ¬«φΣΣ¿µ¿Ñ¡Γδ «ß½áí½Ñ¡¿∩ ß¿ú¡á½á ºá»¿ß¿,  ΓᬠτΓ«
  915. »α«¼ÑªπΓ¬¿, ºá»¿ßδóáѼδÑ ¡á Γᬿσ ñ¿ß¬«ó«ñáσ, ºá»«½¡∩½¿ß∞ »α«¿ºó«½∞-
  916. ¡δ¼  ¼πß«α«¼,  ¬«Γ«αδ⌐ ¼«ª¡« ¡ÑóÑα¡« ¿¡ΓÑα»αÑΓ¿α«óáΓ∞,  ¬á¬ ñó«¿τ¡δÑ
  917. ñá¡¡δÑ ºáΘ¿Γδ.  Åα«Ñ¬Γ¿α«óΘ¿¬ ßσѼ ºáΘ¿Γδ ¼«ªÑΓ  π½πτΦ¿Γ∞  φëà ¡Ñ-
  918. ñ«ßΓáΓ«¬, ¿ß»«½∞ºπ∩ ß½áíδÑ í¿Γδ (1.3.2) ó¡πΓα¿ »α«¼ÑªπΓ¬á ºáΘ¿ΘÑ¡¡δσ
  919. ñá¡¡δσ.
  920.    æαÑñ¿ π»«¼∩¡πΓδσ í¿Γ-¬«»¿α«óΘ¿¬«ó Γ«½∞¬« CopyWrite  íδ½  ß»«ß«íÑ¡
  921. «í¡áαπª¿óáΓ∞ ñá¡¡δÑ ó »α«¼ÑªπΓ¬Ñ.  Äñ¡« ½εí«»δΓ¡«Ñ ¿ß¬½ετÑ¡¿Ñ - »Ñα-
  922. óδ⌐ ßÑ¬Γ«α ñ«α«ª¬¿ 0,  ú«½«ó¬á 0, ¬«Γ«αδ⌐ »αÑñ¡á¼ÑαÑ¡¡« ¿ú¡«α¿απÑΓß∩
  923. CopyWrite ¬á¬ ¼ÑßΓ« ñ½∩ ñá¡¡δσ »α«¼ÑªπΓ¬á.
  924.  
  925.                1.3.4 æÑ¬Γ«αá íѺ ¼ÑΓ¬¿ áñαÑßá ñá¡¡δσ
  926.  
  927.    æÑ¬Γ«αá íѺ  ¼ÑΓ¬¿  áñαÑßá  ñá¡¡δσ  íπñπΓ   úÑ¡Ñα¿α«óáΓ∞   «Φ¿í¬π
  928. «ΓßπΓßΓó¿∩  ñá¡¡δσ (íπñÑΓ πßΓá¡«ó½Ñ¡ í¿Γ MA ó ST0 ¿ í¿Γ MD ó ST2) ó«
  929. óαѼ∩ «»Ñαµ¿⌐ τΓÑ¡¿∩ ¿ ºá»¿ß¿. è«¼á¡ñá τΓÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá
  930. íπñÑΓ ¡á Γᬫ¼ ßÑ¬Γ«αÑ íπñÑΓ ºáóÑαΦáΓ∞ß∩ «íδτ¡«.
  931.    æ«σαá¡Ñ¡¿Ñ ßÑ¬Γ«αá íѺ áñαÑß¡«⌐ ¼ÑΓ¬¿ ñá¡¡δσ ΓαÑíπÑΓ »α«ßΓ«⌐ «»Ñ-
  932. αᵿ¿ Σ«α¼áΓá,  ¬«Γ«αá∩ ñ«½ª¡á «ßΓá¡áó½¿óáΓ∞ß∩ »«ß½Ñ ºá»¿ß¿ áñαÑß¡«⌐
  933. ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá, ¡« »ÑαÑñ ºá»¿ß∞ε áñαÑß¡«⌐ ¼ÑΓ¬¿ ñá¡¡δσ
  934. (¬á¬ ó 1.3.3).  ä«½ª¡á ß«í½εñáΓ∞ß∩ «ß«íá∩á∩ «ßë᫪¡«ßΓ∞ τΓ«íδ  πñá-
  935. ½¿Γ∞  αá¡ÑÑ  ßπΘÑßΓó«óáóΦπε áñαÑß¡πε ¼ÑΓ¬π ñá¡¡δσ,  ¿ß»«½∞ºπ∩ ñ¿ß¬¿,
  936. ßΓÑαΓδÑ ¿½¿ φ½Ñ¬Γα«¼áú¡¿Γ¡«,  ¿½¿ »αÑñóáα¿Γѽ∞¡δ¼ Σ«α¼áΓ«¼ ß αẽ¿τ-
  937. ¡«⌐ ß¬«α«ßΓε »ÑαÑß佬¿ ñá¡¡δσ. Ç½∞ΓÑα¡áΓ¿ó¡δ⌐ ß»«ß«í (¬«Γ«αδ⌐ ¡Ñ íπ-
  938. ñÑΓ αáí«ΓáΓ∞ ñ½∩ »Ñαó«ú« ßÑ¬Γ«αá ¡á ñ«α«ª¬Ñ):  ß¡áτá½á  Σ«α¼áΓ¿απ⌐ΓÑ
  939. ñ«α«ª¬π ß« º¡áτÑ¡¿Ñ¼ GPL,  óδíαá¡¡δ¼ Γá¬, τΓ«íδ »«¼ßΓ¿Γ∞ »«½Ñ ñá¡¡δσ
  940. Γá¼, úñÑ ß¿¡σα«¡¿ºáΓ«α áñαÑß¡á«⌐ ¼ÑΓ¬¿ »«½∩ ñá¡¡δσ ñ«½ªÑ¡ ¡áτ¿¡áΓ∞ß∩
  941. ¡á µÑ½Ñó«¼ ñ¿ß¬Ñ.  é«-óΓ«αδσ, »ÑαÑΣ«α¼áΓ¿απ⌐ΓÑ ñ«α«ª¬π ß ªÑ½áΓѽ∞¡δ¼
  942. º¡áτÑ¡¿Ñ¼ GPL ¿ «ßΓá¡«ó«¼ »αѪñÑ,  τѼ ºá»¿ΦÑΓß∩ áñαÑß¡á∩ ¼ÑΓ¬á ßѬ-
  943. Γ«αá.
  944.  
  945.       1.3.5 æÑ¬Γ«αá íѺ áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá
  946.  
  947.    æÑ¬Γ«αá íѺ áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¼«ª¡« ºá»¿ßáΓ∞ ó ß½Ññπ-
  948. εΘ¿¼ «íαẫ¼:
  949.    ö«α¼áΓ¿απ⌐ΓÑ ñ«α«ª¬π,  ß«σαá¡∩∩  ¬«ñ  ñ½¿¡δ  N  +  1 ñ½∩ ßÑ¬Γ«αá,
  950. αáß»«½«ªÑ¡¡«ú« »ÑαÑñ ¿¡ΓÑαÑßπεΘ¿¼.  çáΓѼ ßτ¿Γá⌐ΓÑ ß«ñÑαªá¡¿Ñ  φΓ«ú«
  951. Σ¿¬Γ¿ó¡«ú«  ßÑ¬Γ«αá  ¿ ºá»¿Φ¿ΓÑ Ñú« «íαáΓ¡«,  «ßΓá¡áó½¿óá∩ «»Ñαᵿε,
  952. ¬«úñá áñαÑß¡á∩ ¼ÑΓ¬á ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá πªÑ  »ÑαÑ»¿ßá¡á,  á  áñ-
  953. αÑß¡á∩ ¼ÑΓ¬á ñá¡¡δσ - ÑΘÑ ¡ÑΓ.  ÆÑ»Ñα∞ óδ ¿¼ÑÑΓÑ ßÑ¬Γ«α íѺ áñαÑß¡«⌐
  954. ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.  Æá¬«⌐ ßÑ¬Γ«α ¡Ñ íπñÑΓ »α¿¡¿¼áΓ∞ πτáßΓ¿Ñ ó ½ε-
  955. íδσ FDC-«»Ñαᵿ∩σ. Ä¡ ¡Ñ ¼«ªÑΓ íδΓ∞, ó««íΘÑ ú«ó«α∩, ßτ¿Γá¡ ½εí«⌐ ¬«-
  956. ¼á¡ñ«⌐ íѺ ß»Ñµ¿á½∞¡δσ ¼Ñα, Γᬠ¬á¬ «¡ »«τΓ¿ ¡Ñ ßπΘÑßΓóπÑΓ.
  957.    ì¿ «ñ¿¡  ¿º »α«óÑαÑ¡¡δσ í¿Γ-¬«»¿α«óΘ¿¬«ó ¡Ñ íδ½ ß»«ß«í¡δ⌐ αáß»«º-
  958. ¡áóáΓ∞ ΓᬿѠßÑ¬Γ«αá (¡« ½εí«⌐  á»»áαáΓ¡δ⌐  í¿Γ-¬«»¿α«óΘ¿¬  ß»«ß«íÑ¡
  959. ßñѽáΓ∞ φΓ«), ΓᬠτΓ« «ΓßπΓßΓó¿Ñ áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¼«ªÑΓ
  960. αáßß¼áΓα¿óáΓ∞ß∩ ¬á¬ σ«α«Φá∩ ºáΘ¿Γá .  Äñ¡á¬«, Γαπñ¡«ßΓ¿ »α«óÑન ñÑ-
  961.  
  962.                                 - 15 -
  963. ½áεΓ  Γá¬πε  ¼ÑΓ¬π ó "ª¿óδσ" ßσѼσ ºáΘ¿Γδ ¬αá⌐¡Ñ ¼á½«óÑα«∩Γ¡«⌐.  (ì«
  964. ß¼. 1.3.10).
  965.  
  966.    1.3.6 æÑ¬Γ«αá ß »½«σ«⌐ áñαÑß¡«⌐ ¼ÑΓ¬«⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá
  967.  
  968.    ¥Γá ¼ÑΓ¬á «Γ½¿τáÑΓß∩ «Γ 1.3.5 Γ«½∞¬« ßΓѻѡ∞ε ¿ß¬áªÑ¡¿∩  áñαÑß¡«⌐
  969. ¼ÑΓ¬¿  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.  çñÑß∞ FDC ÑΘÑ ß»«ß«íÑ¡ αáß»«º¡áóáΓ∞ áñαÑß¡πε
  970. ¼ÑΓ¬π ¿ñÑ¡Γ¿Σ¿¬áΓ«α,  ¡« CRC »α«óÑα∩ÑΓ ¡Ñ»αáó¿½∞¡«. ¥Γá ¼ÑΓ¬á ¡Ñ ¼«-
  971. ªÑΓ íδΓ∞ «í¡áαπªÑ¡á ¬«¼á¡ñ«⌐ τΓÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá, ¡« íπñÑΓ
  972. πßΓá¡áó½¿óáΓ∞ í¿Γ DE ó ST1 ¿ ßíαáßδóáΓ∞ í¿Γ DD ó ST2 ó  ΓÑτÑ¡¿Ñ  óδ-
  973. »«½¡Ñ¡¿∩ ¬«¼á¡ñδ τΓÑ¡¿∩ ßÑ¬Γ«αá,  ΓᬠτΓ« º¡áτÑ¡¿∩ C/H/R/N íπñπΓ ¿º-
  974. óÑßΓ¡ ¿ »α«óÑα¬á ¡Ñ ß«ßΓáó¿Γ ¡¿¬á¬«⌐ »α«í½Ñ¼δ.  æÑ¬Γ«α ß »½«σ«⌐  áñ-
  975. αÑß¡«⌐  ¼ÑΓ¬«⌐  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá íπñÑΓ,  «ñ¡á¬«,  »«∩ó½∩Γ∞ß∩ ó ¬«¼á¡ñÑ
  976. τΓÑ¡¿∩ ñ«α«ª¬¿.  Æ«úñá Γ«τ¡δÑ º¡áτÑ¡¿∩ íπñπΓ C/H/R/N ¡Ñ ¿ºóÑßΓ¡δ, ¡«
  977. ¿σ ÑΘÑ ¼«ª¡« »«½πτ¿Γ∞ ß½ÑñπεΘÑ⌐ »α«µÑñπα«⌐: º¡á∩ Γ«τ¡«⌐ »«º¿µ¿¿ »«½∩
  978. ñá¡¡δσ ¿º αẼÑα«ó óαѼѡ¿,  ¼«ª¡« óδτ¿ß½¿Γ∞ »α¿í½¿º¿Γѽ∞¡πε »«º¿µ¿ε
  979. áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ τ¿ΓáΓ∞ ÑÑ, ¿ß»«½∞ºπ∩ ¼ÑΓ«ñ¿¬π ñ«ßΓπ-
  980. »á ¬ í¿Γ«ó«⌐ ∩τÑ⌐¬Ñ (ß¼. 1.2.4) .
  981.    ûÑ¡¡«⌐ ¼«ñ¿Σ¿¬áµ¿Ñ⌐ φΓ«⌐ ¼ÑΓ¬¿ ñ½∩ αáºαáí«Γτ¿¬á¿¬á ºáΘ¿Γδ «Γ ¬«»-
  982. α«óá¡¿∩ íπñÑΓ ¡Ññ«»πßΓ¿¼á∩ CRC ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá  ¿  «ΓßπΓßΓó¿Ñ
  983. áñαÑß¡«⌐ ¼ÑΓ¬¿ ñá¡¡δσ. Æá¬«⌐ ßÑ¬Γ«α íπñÑΓ óδºδóáΓ∞ ºáóÑαΦÑ¡¿Ñ ¬«¼á¡-
  984. ñδ τΓÑ¡¿∩ ñ«α«ª¬¿,  Γᬿ¼ «íαẫ¼ »αÑñ«ΓóαáΘá∩ «í¡áαπªÑ¡¿Ñ í¿Γ-¬«»¿-
  985. α«óΘ¿¬«¼ "¡«α¼á½∞¡δσ" ¼ÑΓ«¬ Γᬫú« Γ¿»á, αẼÑΘÑ¡¡δσ »«ß½Ñ ¡Ñú«.
  986.    ùΓ«íδ ºá»¿ßáΓ∞ »½«σ«⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, ¡πª¡« «ßΓá¡áó½¿óáΓ∞ «»Ñαᵿε
  987. Σ«α¼áΓá  ó«  óαѼ∩ ºá»¿ß¿ CRC áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá.
  988. (ÄΓ¼ÑΓ¿¼,  τΓ« FDC ¿¼ÑÑΓ ó¡πΓαÑ¡¡¿⌐ íπΣÑα »α¿í½¿º¿Γѽ∞¡« ¡á 3 íá⌐Γá,
  989. ΓᬠτΓ« ¬«¡Γα«½½Ñα ¡áτ¿¡áÑΓ ºá»¿ß∞ CRC ¡Ñ ¬«úñá »«ß½Ññ¡¿⌐ íá⌐Γ ¿ñÑ¡-
  990. Γ¿Σ¿¬áΓ«αá »«ñá¡ ó DR, ¡« ß»πßΓ∩ ¡Ñ¬«Γ«α«Ñ óαѼ∩). CopyWrite αáß»«º-
  991. ¡áÑΓ ßÑ¬Γ«α ß »½«σ«⌐ áñαÑß¡«⌐ ¼ÑΓ¬«⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ ¬«»¿απÑΓ Ñú«.
  992.  
  993.      1.3.7 Å«½Ñ ñá¡¡δσ, »ÑαÑñáóáѼ«Ñ »« áñαÑß¡«⌐ ¼ÑΓ¬Ñ ¿¡ñѬßá
  994.  
  995.    îÑΓ¬¿ ºáΘ¿Γδ φΓ«ú« Γ¿»á »«∩󿽿ß∞,  ¬«úñá ¬Γ«-Γ« ß»α«ß¿½: τΓ« íπ-
  996. ñÑΓ  ñѽáΓ∞ FDC^ Ñß½¿ ¬«¼á¡ñá Σ«α¼áΓá ñ«α«ª¬¿ íπñÑΓ «»αÑñѽ∩Γ∞ «íΘπε
  997. ñ½¿¡π ñá¡¡δσ ¡á ñ«α«ª¬Ñ ¡Ñ¼¡«ú« í«½ΦÑ,  τѼ ñ«α«ª¬á ¼«ªÑΓ  ó¼ÑßΓ¿Γ∞?
  998. Éáßß¼«Γα¿¼   ß½ÑñπεΘ¿Ñ   αѺπ½∞ΓáΓδ  »«½πτÑ¡¡δÑ  »α¿  Σ«α¼áΓ¿α«óá¡¿¿
  999. DD-ñ¿ß¬á ó HD-ñ¿ß¬«ó«ñÑ ß 13-ε 256-íá⌐Γ«ó묨 ßÑ¬Γ«αἿ ¿  αẽ¿τ¡δ¼¿
  1000. º¡áτÑ¡¿∩¼¿  Gap  3  (ß¼ÑΘÑ¡¿∩  cÑ¬Γ«αá  ¿º¼Ñα∩½¿ß∞ »« ¿¡ñѬߡ«¼π «Γ-
  1001. óÑαßΓ¿ε). ÄíαáΓ¿ΓѠ󡿼᡿Ñ, τΓ« óαѼ∩ óαáΘÑ¡¿∩ ¿ß»«½∞ºπѼ«ú« ñ¿ß¬«-
  1002. ó«ñá - 166.52 ¼ß.
  1003.  
  1004.                            Æáí½¿µá 1.3.7
  1005.     ┌───────────────┬────────────────────┬──────────────────────┐
  1006.     │   ç¡áτÑ¡¿Ñ    │  ìáτὫ ß¼ÑΘÑ¡¿∩   │ æ¼ÑΘÑ¡¿Ñ ßÑ¬Γ«αá 13h │
  1007.     │     GAP 3     │     1 ßÑ¬Γ«αá      │    ¡áτὫ    ¬«¡Ñµ   │
  1008.     ├───────────────┼────────────────────┼──────────────────────┤
  1009.     │     01h       │       3.849        │   156.981    165.46  │
  1010.     │     08h       │       3.844        │   160.334      2.29  │
  1011.     │     10h       │    «ΓßπΓßΓóπÑΓ     │   164.180      6.14  │
  1012.     │     14h       │    «ΓßπΓßΓóπÑΓ     │      «ΓßπΓßΓóπÑΓ     │
  1013.     │     18h       │    «ΓßπΓßΓóπÑΓ     │     1.519     10.00  │
  1014.     └───────────────┴────────────────────┴──────────────────────┘
  1015.  
  1016.    î«ª¡« πó¿ñÑΓ∞,  τΓ«  ¿¼ÑÑΓß∩  ¼á½Ñ¡∞¬á∩ «í½áßΓ∞ ó ¡áτá½Ñ ñ«α«ª¬¿,
  1017. ¬«Γ«αá∩ ¡Ñ ¿ß»«½∞ºπÑΓß∩ ñá¡¡δ¼¿ ßÑ¬Γ«αá (Σá¬Γ¿τÑ߬¿,  «¡á  ¿ß»«½∞ºπ-
  1018. ÑΓß∩  áñαÑß¡«⌐  ¼ÑΓ¬«⌐ ¿¡ñѬßá).  ¥Γá «í½áßΓ∞ ¼«ªÑΓ »ÑαѺỿßδóáΓ∞ß∩
  1019. »«ß½Ññ¡¿¼ ßÑ¬Γ«α«¼ ¡á ñ«α«ª¬Ñ (¬á¬ ¡á óΓ«α«⌐ ßΓα«¬Ñ Γáí½¿µδ  1.3.7),
  1020. ¡« Ñß½¿ »«ß½Ññ¡¿⌐ ßÑ¬Γ«α º¡áτ¡¿Γѽ∞¡« ¡á¬½áñδóáÑΓß∩ ¡á ¡áτὫ ñ«α«ª-
  1021. ¬¿, ßÑ¬Γ«α 1 íπñÑΓ ßΓÑαΓ (ßΓ᫬á 3). àß½¿ ¡áτὫ »«½∩ ñá¡¡δσ »«ß½Ññ-
  1022. ¡Ñú«  ßÑ¬Γ«αá íπñÑΓ »ÑαÑσ«ñ¿Γ∞ τÑαѺ ¿¡ñѬߡ«Ñ «ΓóÑαßΓ¿Ñ (ßΓ᫬á 4),
  1023. ¬«¡Γα«½½Ñα ºá»¿ΦÑΓ GAP 4 ñ«  ß½ÑñπεΘÑú«  ¼ÑßΓ«¡áσ«ªñÑ¡¿∩  ¿¡ñѬߡ«ú«
  1024. «ΓóÑαßΓ¿∩,  Γᬿ¼  «íαẫ¼ »ÑαѺỿßδóá∩ óßÑ ßπΘÑßΓóπεΘ¿Ñ ßÑ¬Γ«αá ¡á
  1025. ñ«α«ª¬Ñ.  àß½¿ ¡áτὫ áñαÑß¡«⌐ ¼ÑΓ¬¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá »αÑαÑσ«-
  1026.  
  1027.                                 - 16 -
  1028. ñ¿Γ τÑαѺ ¿¡ñѬߡ«Ñ «ΓóÑαßΓ¿Ñ,  (ßΓ᫬á 5),  φëàßÑ¬Γ«α ΓᬪѠíπñÑΓ
  1029. ß«σαá¡Ñ¡, »ÑαѺỿßδóá∩ óßÑ ºá»¿ßá¡¡δÑ »ÑαÑñ φΓ¿¼ ßÑ¬Γ«αá.
  1030.    æÑ¬Γ«α, »ÑαÑñáεΘ¿⌐ß∩ »« IAM, ¼«ªÑΓ óδºδóáΓ∞ º¡áτ¿Γѽ∞¡δÑ »α«í½Ñ¼δ
  1031. ñ½∩ í¿Γ-¬«»¿α«óΘ¿¬á,  ¡Ñ αáß»«º¡áεΘÑú«  Ñú«  ßπΘÑßΓó«óá¡¿Ñ,  »«φΓ«¼π
  1032. í«½∞Φ¿¡ßΓó« ¼ÑΓ«¬ ºáΘ¿Γδ ß«ºñáεΓß∩ »«óΓ«α¡«⌐ «»ÑαᵿÑ⌐ Σ«α¼áΓá,  ¬«-
  1033. Γ«αá∩ íπñÑΓ αáºαπΦáΓ∞ ñá¡¡δÑ ó ßÑ¬Γ«αÑ ºá IAM.  ì¿ «ñ¿Γ ¿º »α«óÑαÑ¡-
  1034. ¡δσ  í¿Γ-¬«»¿α«óΘ¿¬«ó  ¡Ñ íδ½ ß»«ß«í¡δ⌐ ó«ß»α«¿ºó«ñ¿Γ∞ ΓᬿѠßÑ¬Γ«αá
  1035. (Γ« ÑßΓ∞ , ß«σαá¡∩Γ∞ ¿ ñá¡¡δÑ ßÑ¬Γ«αá ¿ Ñú« »«º¿µ¿ε) , »«φΓ«¼π Γá¬á∩
  1036. ¼ÑΓ¬á φ¬ßΓѡ߿󡫠¿ß»«½∞ºπѼδ⌐ ó ßσѼáσ ºáΘ¿Γδ ¬«»¿¿ ó æææÉ.
  1037.  
  1038.                     1.3.8 î¡«ú«ß¬«α«ßΓ¡δÑ ñ«α«ª¬¿
  1039.  
  1040.    èᬠ¼δ  ó¿ñѽ¿ ó »αÑñδñπΘѼ αáºñѽÑ,  FDC ¿ú¡«α¿απÑΓ IAM ó ¡áτá½Ñ
  1041. ñ«α«ª¬¿,  ΓᬠτΓ« ßÑ¬Γ«αá ¼«úπΓ »«∩ó½∩Γ∞ß∩ ó ½εí«¼ ¼ÑßΓÑ ó¡πΓα¿  ñ«-
  1042. ᫪¬¿. æ½Ññ«óáΓѽ∞¡«, «τÑó¿ñ¡á∩ ¿ñÑ∩ - »«½πτ¿Γ∞ πτáßΓ¬¿ ñ«α«ª¬¿, ºá-
  1043. »¿ßδóáѼδÑ ß αẽ¿τ¡«⌐ ß¬«α«ßΓ∞ε »ÑαÑß佬¿ ñá¡¡δσ.  (½πτΦÑ óßÑú« óδ-
  1044. »«½¡¿Γ∞ φΓ« ¡Ñ »α¿ »ÑαѬ½ετÑ¡¿¿ ß¬«α«ßΓ¿ »ÑαÑß佬¿ ó ΓÑτÑ¡¿Ñ  «»Ñαá-
  1045. µ¿¿ Σ«α¼áΓá,  á ñóπ¼∩ »«ß½ÑñπεΘ¿¼¿ Σ«α¼áΓἿ ß αẽ¿τ¡«⌐ ß¬«α«ßΓ∞ε).
  1046. ìá»α¿¼Ñα,  ºá»¿ßáΓ∞ 9 ßÑ¬Γ«α«ó »« 512 íá⌐Γ«ó ¡á ñ«α«ª¬Ñ 0 ó  300èü«ñ
  1047. (HD-ñ¿ß¬«ó«ñ),  «ñ¿¡ 512-íá⌐Γ«óδ⌐ ßÑ¬Γ«αἿ ó 500èü«ñ. (Æ.¬. φΓá ñ«-
  1048. ᫪¬á ñ¿ß¬ÑΓδ ßá¼á∩ ñá½∞¡∩∩, ¿ß»«½∞º«óá¡¿Ñ óδß«¬«⌐ ß¬«α«ßΓ¿ »ÑαÑßδ½-
  1049. ¬¿ ¡á DD-ñ¿ß¬áσ ¡Ñ íπñÑΓ ß½¿Φ¬«¼ π¼Ñ¡∞ΦáΓ∞ ß«σαá¡¡«ßΓ∞ ñá¡¡δσ).
  1050.    ò«Γ∩ αẽ¿τ¡δѠ߬«α«ßΓ¿ »ÑαÑß佬¿ ñá¡¡δσ »«½¡«ßΓ∞ε »«ññÑনóáεΓß∩
  1051. AT,  »«ñ«í¡á∩ ¼ÑΓ¬á ¼«ªÑΓ úÑ¡Ñα¿α«óáΓ∞ß∩ »α¿ FM- ¿ MFM-Σ«α¼áΓáσ ñá¡-
  1052. ¡δσ (Γ« ÑßΓ∞, 9 MFM ßÑ¬Γ«αá ¿ 1 FM) ¡á PC ¿ XT. ì¿ «ñ¿¡ ¿º »α«óÑαÑ¡-
  1053. ¡δσ í¿Γ-¬«»¿α«óΘ¿¬«ó ¡Ñ íδ½ ß»«ß«í¡δ⌐ ó«ß»α«¿ºóÑßΓ¿  ¼¡«ú«ß¬«α«ßΓ¡πε
  1054. ñ«α«ª¬π, ΓᬠτΓ« φΓ« - σ«α«Φ¿⌐ ß»«ß«í ºáΘ¿Γδ.
  1055.    Äñ¡á¬«, ¡á¼ ¡Ñ »«¬á ¡Ñ óßΓαÑτá½áß∞ ºáΘ¿Γá,  «ß¡«óá¡¡á∩  ¡á  Γᬫ⌐
  1056. ¼ÑΓ¬Ñ.
  1057.  
  1058.                1.3.9 ä«ßΓπ» ¬ ñá¡¡δ¼ τÑαѺ »α«¼ÑªπΓ«¬
  1059.  
  1060.    ÆÑ»Ñα∞ ¼δ »«ñ«Φ½¿ ¬ ¡á¿í«½ÑÑ »«»π½∩α¡«¼π (¿,  ó«º¼«ª¡«, ¡á¿½πτΦÑ-
  1061. ¼π) ß»«ß«íπ ºáΘ¿Γδ - ñ«ßΓπ»π ¬ ñá¡¡δ¼  τÑαѺ  »α«¼ÑªπΓ«¬.  Æ.¬.  óßÑ
  1062. ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ßÑ¬Γ«α«ó ¿ »«½∩ ñá¡¡δσ ß¿¡σα«¡¿º¿απεΓß∩ «Γñѽ∞¡«, ñóÑ
  1063. í¿Γ«óδσ ∩τÑ⌐¬¿ ó ñóπσ »«ß½ÑñπεΘ¿σ »«½∩σ  ¼«úπΓ  »ÑαѼÑΘáΓ∞ß∩  »α«¿º-
  1064. ó«½∞¡«.  ¥Γ«Γ ßñó¿ú π»αáó½∩ÑΓß∩ »α«¿ºó«½∞¡δ¼¿ ¿º¼Ñ¡Ñ¡¿∩¼¿ ó WR CLK ¿
  1065. ߬«α«ßΓ¿ óαáΘÑ¡¿∩ ñ¿ß¬«ó«ñá,  ΓᬠτΓ« «¡¿ ¡Ñ ¼«úπΓ ¬«¡Γα«½¿α«óáΓ∞ß∩.
  1066. (è«¡Ñτ¡«,  ¬¡«-¡¿íπñ∞ ¼«ªÑΓ ¿º«íαÑßΓ¿ á¡á½«ú½óδ⌐ ¬«»¿α«óΘ¿¬, ¬«Γ«αδ⌐
  1067. íπñÑΓ ß»«ß«íÑ¡ ñѽáΓ∞ φΓ«.  ƒ ¡¬«úñá ¡Ñ ß½δΦáΓ½ « Γᬫ¼.) ïεíá∩ «»Ñ-
  1068. αᵿ∩  τΓÑ¡¿∩  ñ«α«ª¬¿ ß ñ«ßΓáΓ«τ¡« í«½∞Φ«⌐ ñ½¿¡«⌐ ¬«ñá (߬áªÑ¼,  6)
  1069. íπñÑΓ ñáóáΓ∞ "ß½Ññ ñ«α«ª¬¿".  ù¿ß½« αẽ¿τ¡δσ "ß½Ññ«ó"  ¼«ªÑΓ  úαπí«
  1070. «µÑ¡¿óáΓ∞ß∩  ß½ÑñπεΘ¿¼ «íαẫ¼:  »α¿¼¿ΓÑ,  τΓ« ¬áªñ«Ñ ß«Ññ¿¡Ñ¡¿Ñ «Γ-
  1071. ñѽ∞¡« ß¿¡σα«¡¿º¿α«óá¡¡δσ »«½Ñ⌐ ¼«ªÑΓ ¿¼ÑΓ∞  2  αẽ¿τ¡δσ  ß«ßΓ«∩¡¿∩
  1072. («τÑó¿ñ¡«, φΓ« ¡Ññ««µÑ¡¬á).
  1073.    ìá ñ«α«ª¬Ñ «íδτ¡«⌐ DD-ñ¿ß¬ÑΓδ  ¿¼ÑεΓß∩  19  Γᬿσ  ß«Ññ¿¡Ñ¡¿⌐  (9
  1074. ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó,  9 ñá¡¡δσ,  1 IAM),  ΓᬠτΓ« τ¿ß½« αẽ¿τ¡δσ ß½Ññ«ó
  1075. ñ½∩ ¬áªñ«⌐ ñ«α«ª¬¿ - »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ 2^19 ≈ 500,000.  ùΓ«íδ  cñѽáΓ∞
  1076. ª¿º¡∞  ÑΘÑ  í«½ÑÑ ¿¡ΓÑαÑß¡«⌐ ñ½∩ á¡á½«ú«ó«ú« ¬«»¿απεΘÑú« πßΓα«⌐ßΓóá,
  1077. ¼«ª¡« ÑΘÑ πóѽ¿τ¿Γ∞ ñ½¿¡π ¬«ñá (߬áªÑ¼, ñ« 7). ¥Γ« ¡Ñ πóѽ¿τ¿Γ τ¿ß½«
  1078. ß½Ññ«ó,  ¡« ó¬½ετ¿Γ ñ«α«ª¬π í«½ÑÑ «ñ¡«ú« αáºá. Æ.¬. ñáªÑ ½πτΦÑÑ πßΓ-
  1079. α«⌐ßΓó« ñ«½ª¡« úñÑ-¡¿íπñ∞ ¡áτ¿¡áΓ∞ ¿ «ßΓá¡áó½¿óáΓ∞ «»Ñαᵿε,  ñá¡¡δÑ
  1080. íπñÑΓ τáßΓ¿τ¡« αáºαπΦÑ¡δ. ¥Γ« πßΓá¡áó½¿óáÑΓ «ñ¡« «úαá¡¿τÑ¡¿Ñ ¡á »α¿-
  1081. ¼Ñ¡Ñ¡¿Ñ ºáΘ¿ΘÑ¡¡«ú« ñ¿ß¬á:  ¬½ετÑóá∩ ñ«α«ª¬á  ¡Ñ  ¼«ªÑΓ  »ÑαѺỿßδ-
  1082. óáΓ∞ß∩.
  1083.    äαπúá∩ ¼Ñ¡ÑÑ  ¿¡ΓÑαÑß¡á∩ αạ«ó¿ñ¡«ßΓ∞ φΓ«⌐ ¿ñÑ¿ - τ¿ΓáΓ∞ ß½Ññπε-
  1084. Θπε áñαÑß¡πε ¼ÑΓ¬π ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá τÑαѺ GAP 3  ¿  »α«óÑα∩Γ∞,
  1085. ¿º¼Ñ¡¿½áß∞  ½¿  «¡á.  Æá¬á∩  »α«óÑα¬á ºá»αÑΘáÑΓ ºá»¿ß∞ Γ«½∞¬« «ñ¡«ú«
  1086. ßÑ¬Γ«αá.  ÄτÑó¿ñ¡«,  »α«Ñ¬Γ¿α«óΘ¿¬ ºáΘ¿Γδ ¡Ñ  «úαá¡¿τΓß∩  »«½πτÑ¡¿Ñ¼
  1087. "ß½Ññ«ó"  ¬«¼á¡ñ«⌐  τΓÑ¡¿∩  ñ«α«ª¬¿  (¿ Γᬿ¼ «íαẫ¼,  «íαáΘÑ¡¿Ñ¼ ¬
  1088. πα«ó¡ε τ¿»á á»»áαáΓπαδ).  ¥Γ« ¼«ªÑΓ íδΓ∞ óδ»«½¡Ñ¡« ΓᬪѠ ¿  »α«ßΓδ¼
  1089. ñ«íáó½Ñ¡¿Ñ¼  Σ¿¬Γ¿ó¡«ú« ßÑ¬Γ«αá ß ¬«ñ«¼ ñ½¿¡δ 6 ¿½¿ 7 ó ¬«¡µÑ ñ«α«ª-
  1090. ¬¿, ¿ ºáñτá íπñÑΓ óδ»«½¡Ñ¡á BIUOS'«¼.
  1091.  
  1092.                                 - 17 -
  1093.    ì¿ «ñ¡á ¿º φΓ¿σ »α«óÑ᫬ ¡Ñ ¼«ªÑΓ ó«ß»α«¿ºó«ñ¿Γ∞ß∩ ¡á ßΓá¡ñáαΓ¡«¼
  1094. «í«απñ«óá¡¿¿ PC.  Äñ¡á¬«,  í«½∞Φ«Ñ ¬«½¿τÑßΓó« »α«úαá¼¼, ¿ß»«½∞ºπεΘ¿σ
  1095. óΓ«απε  αạ«ó¿ñ¡«ßΓ∞,  ¼«ª¡« »ÑαÑσ¿Γα¿Γ∞ »α¿ αáßΦ¿αÑ¡¿¿ GAP 3 »«ß½Ñ
  1096. »αÑñßΓáó½∩εΘÑú« ¿¡ΓÑαÑß ßÑ¬Γ«αá ¿ »α¿ ß«σαá¡Ñ¡¿¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßѬ-
  1097. Γ«αá φΓ«ú« »α«¼ÑªπΓ¬á,  ¬á¬ φΓ« ¡Ñ«íσ«ñ¿¼« »α¿ τΓÑ¡¿¿ τÑαѺ »α«¼Ñªπ-
  1098. Γ«¬. àß½¿ »α«úαἼᠡѠ»α«óÑα∩ÑΓ Γ«τ¡δÑ »«º¿µ¿¿ ßÑ¬Γ«α«ó ¡á ñ«α«ª¬Ñ,
  1099. «¡á íπñÑΓ »α¿¡¿¼áΓ∞ Γá¬πε "¬«»¿ε" ¬á¬ ¬½ετÑó«⌐ ñ¿ß¬.
  1100.  
  1101.                       1.3.10 æπ¼áßΦÑñΦ¿Ñ ¿ñÑ¿
  1102.  
  1103.    éßÑ «íßáªñáóΦ¿Ñß∩  »αÑñ φΓ¿¼ ß»«ß«íδ ºáΘ¿Γδ ñ«»π߬὿ ¡ÑαáºαπΦáε-
  1104. Θπε »α«óÑα¬π. ÆÑ»Ñα∞ ó««íαế¼ ¼ÑΓ¬π ºáΘ¿Γδ, ¬«Γ«αá∩ ¡Ñ ¼«ªÑΓ »α«óÑ-
  1105. α∩Γ∞ß∩  ¿½¿  «í¡áαπª¿óáΓ∞ß∩ í¿Γ-¬«»¿α«óΦ¿¬«¼ íѺ »αÑñóáα¿Γѽ∞¡«⌐ ºá-
  1106. »¿ß¿  ¡á  ¬½ετÑó«⌐  ñ¿ß.  éß»«¼¡¿ΓÑ  ßÑ¬Γ«αá  íѺ  ¿ñÑ¡Γ¿Σ¿¬áΓ«αá  -
  1107. (1.3.5).  ùΓ« íπñÑΓ ¼δ íπñѼ ñѽáΓ∞,  Ñß½¿ ¡á »αÑñßΓáó½∩εΘÑ⌐ ¿¡ΓÑαÑß
  1108. ñ«α«ª¬Ñ ¡ÑΓ ñαπú¿σ ßÑ¬Γ«α«ó? (Å« ¬αá⌐¡Ñ⌐ ¼ÑαÑ, ó Γ«⌐ ªÑ ß¬«α«ßΓ¿ »Ñ-
  1109. αÑß佬¿).  ¥Γ«Γ ßÑ¬Γ«α ¡Ñ íπñÑΓ τ¿ΓáΓ∞ß∩ ñ« Σ«α¼áΓá ñ«α«ª¬¿, ¬«Γ«αδ⌐
  1110. πßΓá¡«ó¿Γ áñαÑß¡δÑ  ¼ÑΓ¬¿  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó.  ïεíá∩  »«»δΓ¬á  ñ«ßΓπ»á
  1111. ó¡πΓα∞ Γá¬á«⌐ »α«úαá¼¼δ «Γ½áñτ¿¬«¼ íπñÑΓ αáºαπΦáΓ∞ ¼ÑΓ¬π ºáΘ¿Γδ, »«-
  1112. Γ«¼π τΓ« Γ«τ¡δ⌐ óδí«α «»αÑñѽѡ¡«ú« óαѼѡ¿ «ßΓᡫ󬿠«»Ñαᵿ¿  Σ«α-
  1113. ¼áΓá íπñπΓ ßí¿Γ ßἿ¼ óαѼѡѼ «Γ½áñ¬¿.  ¥Γ«Γ »α«ßΓ«⌐ »α¿¼Ñα »«¬áºδ-
  1114. óáÑΓ τΓ« ¿¼ÑεΓß∩ ¼ÑΓ¬¿ ºáΘ¿Γδ,  ¬«Γ«αδÑ ¡Ñ ¼«úπΓ íδΓ∞ »α«τ¿Γá¡δ  íѺ
  1115. αáºαπΦÑ¡¿∩  τáßΓ¿ ¿σ ß«ñÑন¼«ú« ¿½¿ íѺ º¡á¡¿∩ ß»«ß«íá »α«óÑન ºá-
  1116. Θ¿Γδ.
  1117.  
  1118.               1.4 Äß¡«óá¡¡δÑ ¡á Γá⌐¼ÑαÑ ß»«ß«íδ ºáΘ¿Γδ
  1119.  
  1120.    éßÑ PC «í«απñ«óá¡δ óÑß∞¼á σ«α«Φ¿¼ τ¿»«¼ Γá⌐¼Ñαá  INTEL  8253  ¿½¿
  1121. Ñú«  Σπ¡¬µ¿«¡á½∞¡δ¼  á¡á½«ú«¼.  Éáí«Γá∩ ß τáßëë⌐ 1,193,180 âµ,  «¡
  1122. »«ºó«½∩ÑΓ ¿º¼Ñα∩Γ∞ ¿¡ΓÑαóá½δ óαѼѡ¿ ß αáºαÑΦÑ¡¿Ñ¼ ¡ß (Γ« ÑßΓ∞,  ¼«-
  1123. ªÑΓ  ¿º¼Ñα∩Γ∞ óαѼ∩ óδ»«½¡Ñ¡¿∩ ÄäêìÄùìÄë ¬«¼á¡ñδ «Γñѽѡ¿∩ »« 16 386
  1124. îâµ , ¬«Γ«αδ⌐ ¼«ªÑΓ αáßß¼áΓα¿óáΓ∞(»α¿¡¿¼áΓ∞) ¬ 2.4 úµ). Æá¬«⌐ Γá⌐¼Ñα
  1125. í«½ÑÑ  τѼ  áñѬóáΓÑ¡  ñ½∩  óδí«αá  «»αÑñѽѡ¡«ú«  óαѼѡ¿ ¡á ú¿í¬¿σ
  1126. ñ¿ß¬áσ (ÅÑαÑñáτá «ñ¿¡«τ¡«ú« íá⌐Γá ñá¡¡δσ ß  ßἫ⌐  í«½∞Φ«⌐  ß¬«α«ßΓ¿
  1127. (500 èü) ΓαÑíπÑΓ 16 úµ), ΓᬠτΓ« Γ«τ¡«ßΓ∞ Γá¬¿σ ¿¡ΓÑαóὫó íπñÑΓ «ú-
  1128. αá¡¿τ¿óáΓ∞ß∩ ¡Ñ αáºαÑΦáεΘÑ⌐ ß»«ß«í¡«ßΓ∞ε  Γá⌐¼Ñαá,  á  »α«¿ºó«½∞¡δ¼¿
  1129. ¿º¼Ñ¡Ñ¡¿∩¼¿ ß¬«α«ßΓ¿ óαáΘÑ¡¿∩.
  1130.  
  1131.                   1.4.1 Å«α∩ñ«¬ ¬«¡Γα«½∩ ßÑ¬Γ«α«ó
  1132.  
  1133.    êº¼Ñα∩∩ óαѼ∩  ºáóÑαΦÑ¡¿∩  ¬«¼á¡ñ τΓÑ¡¿∩ ñ«α«ª¬¿,  ¼«ª¡« »«½πτ¿Γ∞
  1134. Γ«τ¡πε »«º¿µ¿ε ¬áªñ«ú« ßÑ¬Γ«αá ¡á ñ«α«ª¬Ñ.  é ΓÑନ¡áσ í¿Γ«ó, óδ ¼«-
  1135. ªÑΓÑ »«½πτ¿Γ∞ Γ«τ¡«ßΓ∞ »«½«ªÑ¡¿∩ ßÑ¬Γ«αá,  »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ,  ó «ñ¡¿¡
  1136. í¿Γ.  Æ.¬.  ¬«¼á¡ñá Σ«α¼áΓá ñ«α«ª¬¿ FDC π»αáó½∩ÑΓ »«º¿µ¿Ñ⌐ ßÑ¬Γ«αá ß
  1137. αáºαÑΦÑ¡¿Ñ¼ ó íá⌐Γ, ¡Ñ½∞º∩ ó«ß»α«¿ºóÑßΓ¿ Γᬫ⌐ Γ«τ¡δ⌐ »«α∩ñ«¬ ßÑ¬Γ«-
  1138. α«ó.  Æá¬¿¼ «íαẫ¼,  αáß»«½«ªÑ¡¿Ñ ßÑ¬Γ«α«ó ¼«ªÑΓ ß½πª¿Γ∞ ¬á¬  ¼ÑΓ¬á
  1139. ºáΘ¿Γδ.  Äñ¡á¬«,  φΓá »α«óÑα¬á íπñÑΓ ß½¿Φ¬«¼ τπóßΓó¿Γѽ∞¡á ¬ íδßΓα«-
  1140. ñÑ⌐ßΓó¿ε ûÅ ¿ ßΓáí¿½∞¡«ßΓ¿ óαáΘÑ¡¿∩ ñ¿ß¬«ó«ñá ¿ íπñÑΓ τáßΓ« ¿ß¬áªáΓ∞
  1141. ¬½ετÑó«⌐  ñ¿ß¬.  æ½Ññ«óáΓѽ∞¡«,  »«º¿µ¿∩ ßÑ¬Γ«αá «íδτ¡« ¿ß»«½∞ºπÑΓß∩
  1142. ¬á¬ ñ«íáó½Ñ¡¿Ñ ¬ ñαπú«⌐ ¼ÑΓ¬Ñ ºáΘ¿Γδ (ß¼. 1.3.9).
  1143.  
  1144.               1.4.2 êº¼ÑαÑ¡¿Ñ ß¬«α«ßΓ¿ »ÑαÑß佬¿ ñá¡¡δσ
  1145.  
  1146.    æ¬«α«ßΓ∞ »ÑαÑß佬¿ ñá¡¡δσ óδí¿αáѼá∩ αÑú¿ßΓα«¼ π»αáó½Ñ¡¿∩ ñ¿ß¬ÑΓδ
  1147. (3F7h) - Γ«½∞¬« ¡áτá½∞¡á∩ τáßΓ«Γá,  ¿ß»«½∞ºπѼá∩ FDC ñ½∩ ñѬ«ñ¿α«óá-
  1148. ¡¿∩ í¿Γ«ó. æ»Ñµ¿á½∞¡á∩ á¡á½«ú«óá∩ ßσѼá, ¡áºδóáѼá∩ ºá¼¬¡πΓδ⌐ »« Σá-
  1149. ºÑ  µ¿¬½  (PLL),  αÑúπ½¿απÑΓ ß¬«α«ßΓ∞ ñ«α«ª¬¿,  ó ¬«Γ«α«⌐ Σá¬Γ¿τÑ߬¿
  1150. »α¿íδóáεΓ í¿Γδ.  PLL ñ«»π߬áÑΓ «Γ¬½«¡Ñ¡¿∩,  »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ, ó 4% «Γ
  1151. µÑ¡Γαá½∞¡«⌐  τáßΓ«Γδ  (αáºαÑΦÑ¡¡«Ñ  «Γ¬½«¡Ñ¡¿Ñ  ó  ß¬«α«ßΓ¿ óαáΘÑ¡¿∩
  1152. ñ¿ß¬«ó«ñ«ó - ±2%). Åαá¬Γ¿τÑ߬¿, PLL íπñÑΓ ß»αáó½∩Γ∞ß∩ ß 10%-¼ «Γ¬½«-
  1153. ¡Ñ¡¿Ñ¼ ¡á MFM-ñ¿ß¬ÑΓáσ ¿ »«τΓ¿ 100% ¡á FM.
  1154.    æ¬«α«ßΓ∞ »«ßΓπ»½Ñ¡¿∩ ñó«¿τ¡δσ αáºα∩ñ«ó «»αÑñѽ∩ÑΓß∩  ¬á¬  πú½«ó«⌐
  1155. »½«Γ¡«ßΓ∞ε ñá¡¡δσ ¡á ñ¿ß¬Ñ,  Γᬠ¿ ß¬«α«ßΓ∞ε óαáΘÑ¡¿∩ ñ¿ß¬«ó«ñá, Γá¬
  1156.  
  1157.                                 - 18 -
  1158. τΓ« ñ½∩ «»αÑñѽѡ¿∩ σáαá¬ΓÑα¿ßΓ¿¬ ñ¿ß¬á (πú½«ó«⌐  »½«Γ¡«ßΓ¿  ñá¡¡δσ)
  1159. ¡Ñ«íσ«ñ¿¼« ¿º¼Ñα∩Γ∞ óαѼ∩ »ÑαÑß佬¿ «ñ¡«ú« ßÑ¬Γ«αá ¿ óαѼ∩ óαáΘÑ¡¿∩.
  1160. îá¬ß¿¼á½∞¡á∩ Γ«τ¡«ßΓ∞ Γᬫú« ¿º¼ÑαÑ¡¿∩  ¼«ªÑΓ  íδΓ∞  ½Ñú¬«  «µÑ¡Ñ¡á:
  1161. «ñ¿¡  512-íá⌐Γ«óδ⌐ ßÑ¬Γ«α íπñÑΓ »ÑαѼÑΘáΓ∞ß∩ ß τáßëë⌐ 500 èü ó ΓÑ-
  1162. τÑ¡¿Ñ 8.2 ¼ß,  αáºαÑΦáεΘá∩ ß»«ß«í¡«ßΓ∞ Γá⌐¼Ñαá 0.84 ¼¬ß ñáßΓ «Γ¡«ß¿-
  1163. Γѽ∞¡πε Γ«τ¡«ßΓ∞ 0.01%. ÄΓ¡«ß¿Γѽ∞¡á∩ »«úαÑΦ¡«ßΓ∞ ó «»αÑñѽѡ¿¿ óαÑ-
  1164. ¼Ñ¡¿ óαáΘÑ¡¿∩ íπñÑΓ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ¡á »«α∩ñ«¬ ¼Ñ¡∞ΦÑ.  Åα¿  10  ñ½∩
  1165. ¬αá⌐¡Ñ⌐  íѺ«»áß¡«ßΓ¿,  0.1%  ¬áªÑΓß∩ »α¿Ñ¼½Ñ¼«⌐ «µÑ¡¬«⌐.  Æá¬,  óßÑ
  1166. ñ¿ß¬«ó«ñδ ñ½∩ ú¿í¬¿σ ñ¿ß¬ÑΓ PC íπñπΓ αáºí¿óáΓ∞ß∩ ¡á 40 (2 * 2%/0.1%)
  1167. αẽ¿τ¡δσ úαπ»»,  ¿ ñ¿ß¬ÑΓδ, ºá»¿ßδóáѼδÑ ¡á ñ¿ß¬«ó«ñÑ «ñ¡«⌐ úαπ»»δ,
  1168. ¼«ª¡« ½Ñú¬« «Γ½¿τáΓ∞ «Γ ñ¿ß¬ÑΓ, ºá»¿ßδóáѼδσ ¡á ñαπú«⌐.
  1169.    è ß«ªá½Ñ¡¿ε (σá !), í«½∞Φ¿¡ßΓó« ß«óαѼѡ¡δσ ñ¿ß¬«ó«ñ«ó »«»áñáÑΓ ó
  1170. ±0.2%-ε «í½áßΓ∞ ¿,  Γᬿ¼ «íαẫ¼, αẫí∞εΓß∩ ¡á 4 úαπ»»δ ó¼ÑßΓ« 40,
  1171. »«τΓ¿ π¡¿τΓ«ªá∩ óßε "ºáΘ¿Γπ". ìѬ«Γ«αδÑ FDC (¡á»α¿¼Ñα, ¼«⌐ ßΓáαδ⌐ WD
  1172. HDC/FDC 1986 ú«ñá) αáºαÑΦáεΓ »α«ßΓ«⌐ Γαε¬ ß αÑú¿ßΓα«¼ µ¿Σα«ó«ú«  óδ-
  1173. ó«ñá (3F2h):  óδóÑñ¿ΓÑ 0Ch ó 3F2h («ßΓá¡«ó¿Γ∞ ñó¿úáΓѽ∞ »α¿ó«ñá A:),
  1174. ªñ¿ΓÑ «ßΓᡫ󬿠10 ¼ß, óδóÑñ¿ΓÑ 1Ch ó 3F2h (ºá»πßΓ¿Γ∞ ñó¿úáΓѽ∞ »α¿-
  1175. ó«ñá  A:) ¿ ¡Ñ¼Ññ½Ñ¡¡« óδ»«½¡¿ΓÑ «»Ñαáµ¿ε ºá»¿ß¿.  æ¬«α«ßΓ∞ óαáΘÑ¡¿∩
  1176. ñ¿ß¬«ó«ñá íπñÑΓ ¡Ñ¼¡«ú« ¼Ñ¡∞ΦÑ ¡«¼¿¡á½∞¡«⌐ ó ΓÑτÑ¡¿Ñ »α¿¼Ñα¡« 20 ¼ß,
  1177. αáºαÑΦá∩ ºá»¿ßáΓ∞ «ñ¿¡ ßÑ¬Γ«α.  î«⌐ ¡«óδ⌐ IDE HDC/FDC 1990 ú«ñá, «ñ-
  1178. ¡á¬«, ªñÑΓ, »«¬á ß¬«α«ßΓ∞ óαáΘÑ¡¿∩ ¡Ñ ñ«ßΓú¡ÑΓ ¡«¼¿¡á½∞¡«⌐, ºáñÑন-
  1179. óá∩ «»Ñαáµ¿ε ºá»¿ß¿.
  1180.    ê¡ΓÑαÑß¡δÑ αạ«ó¿ñ¡«ßΓ¿  φΓ«⌐ ¼ÑΓ¬¿ ¼«úπΓ »«½πτáΓ∞ß∩ »α¿ ¡Ñí«½∞-
  1181. Φ¿σ ¼«ñ¿Σ¿¬áµ¿∩σ á»»áαáΓ¡δσ ßαÑñßΓó PC (ß¼. 1.5.3).
  1182.  
  1183.      1.5 çáΘ¿Γá, «ß¡«óá¡¡á∩ ¡á ß»Ñµ¿á½∞¡δσ á»»áαáΓ¡δσ ßαÑñßΓóáσ
  1184.  
  1185.    ƒ ¡Ñ  ß»Ñµ¿á½¿ßΓ  ó  á»»áαáΓ¡δσ  ßαÑñßΓóáσ ºáΘ¿Γδ ¬«»¿¿,  ΓᬠτΓ«
  1186. «íßπªñÑ¡¿Ñ »«τΓ¿ µÑ½¿¬«¼ íếαπÑΓß∩ ¡á rumors ¿ »αÑñ»«½«ªÑ¡¿∩σ.
  1187.  
  1188.                  1.5.1 î«ñ¿Σ¿µ¿α«óá¡¡δÑ MFM-Σ«α¼áΓδ
  1189.  
  1190.    ù¿» FDC  INTEL  8272A  ¡Ñ ¿¼ÑÑΓ ó«º¼«ª¡«ßΓ¿ ¿º¼Ñ¡Ñ¡¿∩ »α«úαá¼¼¡δ¼
  1191. «íÑß»ÑτÑ¡¿Ñ¼ ñ½¿¡δ GAP1,  GAP2 ¿ GAP5,  ¡« íπñÑΓ »α¿¡¿¼áΓ∞ ñ¿ß¬ÑΓδ ß
  1192. φΓ¿¼¿  »α«¼ÑªπΓ¬á¼¿,  «Γ½¿τáεΘ¿¼¿ß∩ «Γ ßΓá¡ñáαΓá ¿ ¿¼ÑÑΓ ß»«ß«í¡«ßΓ∞
  1193. ¿º¼Ñα∩Γ∞ Σá¬Γ¿τÑ߬πε ñ½¿¡π »α«¼ÑªπΓ¬á.  ìá»α¿¼Ñα,  GAP2  (»α«¼ÑªπΓ«¬
  1194. »«ß½Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá) ¼«ªÑΓ ¿º¼Ñα∩Γ∞ß∩ ¿½¿ ¬«¼á¡ñ«⌐ τΓÑ¡¿∩ ñ«α«ª¬¿ ß
  1195. ¬«ñ«¼ ñ½¿¡δ í«½∞ΦÑ Σá¬Γ¿τÑ߬«⌐ ñ½¿¡á  ßÑ¬Γ«αá,  ¿½¿  »α¿  ¿º¼ÑαÑ¡¿Ñ¼
  1196. αẽ¿τ¿∩  ó« óαѼѡ¿ ºáóÑαΦÑ¡¿∩ τΓÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ¿ñÑ¡Γ¿Σ¿¬áΓ«αá
  1197. ¿ ¬«¼á¡ñδ τΓÑ¡¿∩ ñá¡¡δσ.  ä¿ß¬ÑΓδ ß αẽ¿τ¡δ¼¿ º¡áτÑ¡¿∩¼¿ »α«¼ÑªπΓ¬á
  1198. ¼«ú½¿ ß«ºñáóáΓ∞ß∩ ñ½∩ PC ¡á ñαπú¿σ ß¿ßΓѼáσ ¥éî, ¬«Γ«αδÑ ¼«úπΓ ¿º¼Ñ-
  1199. ¡∩Γ∞ φΓ¿ »áαá¼ÑΓαδ.  (îδ ß½δΦ὿, τΓ« ¡Ñ¬«Γ«α«Ñ ß¿ßΓѼδ DEC ß»«ß«í¡δ
  1200. ñѽáΓ∞ φΓ«.)
  1201.  
  1202.                 1.5.2 ÅÑαÑαẼÑΘÑ¡¡δÑ ñ«α«ª¬¿ ñá¡¡δσ
  1203.  
  1204.    ìѬ«Γ«αδÑ ¬«¡Γα«½½Ñαδ  ¿ ñ¿ß¬«ó«ñδ ¿¼ÑεΓ í«½∞ΦÑÑ ßΓα«ú«Ñ π»αáó½Ñ-
  1205. ¡¿Ñ »«º¿µ¿«¡¿α«ó᡿Ѽ ú«½«ó¬¿ ñ½∩ τΓÑ¡¿∩/ºá»¿ß¿,  τѼ φΓ«ú«  ΓαÑíπÑΓ
  1206. PC. (ƒ πóÑαÑ¡, τΓ« ΓαÑíπѼδÑ ¼«ñ¿Σ¿¬áµ¿¿ á»»áαáΓ¡δσ ßαÑñßΓó ¡Ñ ß½¿Φ-
  1207. ¬«¼ í«½∞Φ¿Ñ.) ¥Γ« ¼«ªÑΓ íδΓ∞ »Ñαó«¡áτá½∞¡« óδ»«½¡Ñ¡«  ¡Ñ  ñ½∩  µÑ½Ñ⌐
  1208. ºáΘ¿Γδ  «Γ  ¬«»¿α«óá¡¿∩,  ¡«  τΓ«íδ  «íÑß»Ñτ¿óáΓ∞ ß»«ß«í¡«ßΓ∞ τ¿ΓáΓ∞
  1209. ñ¿ß¬ÑΓδ, ºá»¿ßδóáѼδÑ ¡á »½«σ« αÑúπ½¿απѼδσ ñ¿ß¬«ó«ñáσ. (îδ ß½δΦ὿,
  1210. τΓ« ICL FDC ¿¼ÑÑΓ Γá¬πε ß»«ß«í¡«ßΓ∞.) æ½Ññ«óáΓѽ∞¡«, ¡á Γᬫ⌐ ß¿ßΓÑ-
  1211. ¼Ñ ¼«ª¡« »«ñú«Γ«ó¿Γ∞ ¬½ετÑó«⌐ ñ¿ß¬ ß ¡ÑßΓá¡ñáαΓ¡δ¼ αẼÑΘÑ¡¿Ñ¼ ñ«α«-
  1212. ªÑ¬  (¿ »α«úαá¼¼¡«Ñ «íÑß»ÑτÑ¡¿Ñ íπñÑΓ »α«óÑα∩Γ∞ φΓ«).  Æá¬«⌐ ñ¿ß¬ ¡Ñ
  1213. ß¼«ªÑΓ »α«óÑα∩Γ∞ß∩ ¡á ñαπú«⌐ ß¿ßΓѼѠ¥éî, ΓᬠτΓ« φΓá ¼ÑΓ«ñ¿¬á ¼«ú½á
  1214. íδ ¿¼ÑΓ∞ Γ«½∞¬« «úαá¡¿τÑ¡¡«Ñ »α¿¼Ñ¡Ñ¡¿Ñ.
  1215.  
  1216.                1.5.3 ìÑßΓá¡ñáαΓ¡δѠ߬«α«ßΓ¿ »ÑαÑß佬¿
  1217.  
  1218.    èᬠ¼δ ó¿ñѽ¿ ó 1.4.2, FDC ñ«»π߬áÑΓ º¡áτ¿Γѽ∞¡δÑ ¿º¼Ñ¡Ñ¡¿∩ ó πú-
  1219. ½«ó«⌐ »½«Γ¡«ßΓ¿ ñá¡¡δσ ¡á ñ«α«ª¬Ñ (¿ ¿¼ÑÑΓ ß»«ß«í¡«ßΓ∞ ¿º¼Ñα∩Γ∞ ¿σ).
  1220. ìÑí«½∞Φ¿Ñ  ¼«ñ¿Σ¿¬áµ¿¿  FDC ¿½¿ ñ¿ß¬«ó«ñá ñáεΓ ó«º¼«ª¡«ßΓ∞ π»αáó½∩Γ∞
  1221.  
  1222.                                 - 19 -
  1223. óαπτ¡πε ßαÑñ¡Ñ⌐ τáßëë⌐ WR CLK úÑ¡ÑαáΓ«αá  ¿½¿  ß¬«α«ßΓ∞ε  óαáΘÑ¡¿∩
  1224. ñ¿ß¬«ó«ñá  ¿ Γᬿ¼ «íαẫ¼ ñáεΓ ó«º¼«ª¡«ßΓ∞ ºá»¿ßδóáΓ∞ ñá¡¡δÑ ß ¡Ñ¼-
  1225. ¡«ú« ¡ÑßΓá¡ñáαΓ¡δ⌐ (¡« ÑΘÑ »α¿Ñ¼½Ñ¼δ⌐ ñ½∩ í«½∞Φ¿¡ßΓóá FDC)  ß¬«α«ßΓ∞
  1226. »ÑαÑß佬¿ ñá¡¡δσ.
  1227.    ìѬ«Γ«αδÑ ¿ºú«Γ«ó¿Γѽ¿  á»»áαáΓ¡δσ  ßαÑñßΓó  (¡á»α¿¼Ñα,  ¡áπτ¡«ú«
  1228. «í«απñ«óá¡¿∩  ß« óßΓα«Ñ¡¡δ¼¿ ¼¿¬α«-¥éî) ñѽáεΓ φëà"»«ñá᫬" ºá¬áº-
  1229. τ¿¬á¼.  (îδ ó¿ñѽ¿ 3-ñε⌐¼«óδÑ ñ¿ß¬«ó«ñδ ß« ß¬«α«ßΓ∞ε  360  «í./¼¿¡.,
  1230. ¬«Γ«αδÑ í뫨 ¡Ñß«ó¼ÑßΓ¿¼δÑ ß "¡«α¼á½∞¡δ¼" ¡á 300 «í./¼¿¡.)
  1231.  
  1232.                       1.6 Åα¿¼Ñαδ ßσѼ ºáΘ¿Γδ
  1233.  
  1234.    Åα¿ó«ñ¿¼δÑ ºñÑß∞  ßσÑ¼δ  ºáΘ¿Γδ  «ß¡«óá¡¡δ⌐ ¡á ¡áΦѼ ½¿τ¡«¼ «»δΓÑ
  1235. ºáΘ¿Γδ »α«úαá¼¼ (¬α«¼Ñ ¡Ñ¬«Γ«αδσ π¬áºá¡¡δσ) ¡Ñ ¼«úπΓ αáßß¼áΓα¿óáΓ∞ß∩
  1236. ¬á¬  ºá¬«¡τÑ¡δÑ  ¿ ¡Ñ ß»«ß«í¡δ »«¬αδóáΓ∞ óßÑ á߻ѬΓδ ¿ óÑαß¿¿ ºáΘ¿Γδ
  1237. »α«úαá¼¼¡«ú«  «íÑß»ÑτÑ¡¿∩.  éßÑ  ºáΘ¿ΘÑ¡¡δÑ  »α«úαá¼¼δ,  «íßπªñÑ¡¡δÑ
  1238. ºñÑß∞, ¿ßß½Ññ«ó὿ß∞ ß »«¼«Θ∞ε Copy Unprotector Toolkit (C.U.T).
  1239.  
  1240.                   1.6.1 Å«¼«Θ¡¿¬, τπóßΓóπεΘ¿⌐ IBM
  1241.  
  1242.    ¥Γ« ñÑ⌐ßΓó¿Γѽ∞¡« »α«ßΓá∩ ¿ ¡Ñ»«ßαÑñßΓóÑ¡¡á∩ ºáΘ¿Γá, ñáΓ¿α«óá¡¡δ⌐
  1243. 1986 ú.  Ä¡á ¡Ñ ¿¼ÑÑΓ ¡¿¬á¬«ú« »αá¬Γ¿τÑ߬«ú«  º¡áτÑ¡¿∩  ¿  »α¿óÑñÑ¡á
  1244. ºñÑß∞  Γ«½∞¬«  τΓ«íδ  »«¬áºáΓ∞  αáºó¿Γ¿Ñ  »α¿Ñ¼«ó  ºáΘ¿Γδ  ó ΓÑτÑ¡¿Ñ
  1245. »«ß½Ññ¡¿σ ½ÑΓ.  ¥Γ« "ºáΘ¿ΘÑ¡¡«Ñ" »α«úαá¼¼¡«Ñ  «íÑß»ÑτÑ¡¿Ñ  »α«óÑα∩ÑΓ
  1246. »α¿ßπΓßΓó¿Ñ  ßÑ¬Γ«αá  8Fh  ß  ñ½¿¡«⌐ ¬«ñá 2 ¡á ñ«α«ª¬Ñ 39d ßΓ«α«¡δ 1
  1247. ¬½ετÑó«⌐ ñ¿ß¬ÑΓδ.  ì¿¬á¬¿Ñ ñαπú¿Ñ »α«óÑન ¡Ñ ñѽáεΓß∩.  Æ,¬. »ÑαóδÑ
  1248. óÑαß¿¿ CopyWrite ¬«Γ«αδ⌐ ¼δ ó¿ñѽ¿, »«∩󿽿ß∞ ó 1985 (¿ í뫨 ß»«ß«í-
  1249. ¡δÑ ¬«»¿α«óáΓ∞  ΓᬿѠ ¼ÑΓ¬¿),  Γ«½∞¬«  ¡áñѪñδ  ¡á    "φΓ¿σ
  1250. απß߬¿σ" ¼«úπΓ íδΓ∞ »α¿τ¿¡«⌐ αáºαáí«Γ¬¿ Γᬫ⌐ ºáΘ¿Γδ.
  1251.  
  1252.                           1.6.2 SuperLok
  1253.  
  1254.    ä¿ß¬ ß »α«úαá¼¼«⌐ SuperLok,  ¬«Γ«αδ⌐ ∩ ß¼«ú  »α¿«íαÑßΓ¿,  ñáΓ¿α«-
  1255. óá½ß∩ 10 «¬Γ∩íα∩ 1986 ú. çáΘ¿ΘÑ¡¡δ⌐ ñ¿ß¬ ß«ñÑαªá½ Γα¿ ñ«α«ª¬¿, «Γ¼Ñ-
  1256. τÑ¡δÑ ¬á¬ "¡Ñ¡«α¼á½∞¡δÑ" ( óßÑ ¡á ú«½«ó¬Ñ 0). ÅÑαó«⌐ íδ½á ñ«α«ª¬á 5,
  1257. ¬«Γ«αá∩ ¿¼Ñ½á ¡Ñ«íδτ¡δ⌐ ¿¡ΓÑα½¿ó ¿ ñóá ßÑ¬Γ«αá ß ¬«α«Γ¬¿¼¿ ñá¡¡δ¼¿ ,
  1258. ΓᬠτΓ« ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ßÑ¬Γ«α«ó  »αÑñßΓáó½∩½¿  ß½ÑñπεΘπε  »«ß½Ññ«óá-
  1259. Γѽ∞¡«ßΓ∞ (óßÑ º¡áτÑ¡¿∩ ΦÑßΓ¡áñµáΓÑα¿τ¡δÑ):
  1260.  
  1261.    05/00/01/02, 05/00/06/02, 05/00/8A/03, 05/00/02/02, 05/00/07/02,
  1262.    05/00/65/03, 05/00/03/02, 05/00/08/02, 05/00/04/02, 05/00/09/02,
  1263.    05/00/05/02
  1264.  
  1265.    èᬠí佫 ºá¼ÑτÑ¡«,  SuperLok ¡Ñ »α«óÑα∩ÑΓ φΓπ ñ«α«ª¬π ó««íΘÑ, Γá¬
  1266. τΓ«  φΓ« »αÑñßΓáó½∩ÑΓ ó¿ñ ½«óπΦ¬¿ ñ½∩ ºá¿¡ΓÑαÑß«óá¡¡«ú« ¿ßß½Ññ«óáΓÑ-
  1267. ½∩.
  1268.    éΓ«αá∩ ºáΘ¿ΘÑ¡¡á∩ ñ«α«ª¬á ¡á ñ¿ß¬Ñ íδ½á 12-á∩. Ä¡á ß«ñÑαªá½á ßѬ-
  1269. Γ«α  ß«  ß¬αδΓ«⌐  áñαÑß¡«⌐  ¼ÑΓ¬«⌐  (ß¼.  1.3.6)  ß  ¿ñÑ¡Γ¿Σ¿¬áΓ«α«¼
  1270. 7B/46/05/00,  ¬«Γ«αδ⌐ SuperLok »α«óÑα∩½  ¬«¼á¡ñ«⌐  τΓÑ¡¿∩  ñá¡¡δσ.
  1271. äαπúá∩  »α«óÑα¬á ºáΘ¿Γδ ¡á φΓ«⌐ ñ«α«ª¬Ñ íδ½á óδ»«½¡Ñ¡á ¬«¼á¡ñ«⌐ τΓÑ-
  1272. ¡¿∩ ñ«α«ª¬¿ ß ¬«ñ«¼ ñ½¿¡δ 6 («ñ¿¡ 8192-íá⌐Γ«óδ⌐  ßÑ¬Γ«α)  ¿  3  (ñóá
  1273. 4096-íá⌐Γ«óδσ  ßÑ¬Γ«αá).  16-í¿Γ«óá∩ ¬«¡Γα«½∞¡á∩ ßπ¼¼á óδτ¿ß½∩½áß∞ ó
  1274. «í«¿σ ß½πτá∩σ ¿ ßαáó¡¿óá½áß∞ ß ß«σαá¡Ñ¡¡δ¼ º¡áτÑ¡¿Ñ¼ (ß¼. 1.3.9).
  1275.    ÆαÑΓ∞∩ ñ«α«ª¬á ºáΘ¿Γδ ß«ñÑαªá½á τÑΓδαѠ߻ѵ¿á½∞¡δσ ßÑ¬Γ«αá.  ÅÑα-
  1276. óδ⌐ ¿º ¿σ ¿¼Ñ½ ß¬αδΓπε áñαÑß¡πε ¼ÑΓ¬π ßÑ¬Γ«αá  ¿  ¡Ñ  ¿¼Ñ½  áñαÑß¡«⌐
  1277. ¼ÑΓ¬¿ ñá¡¡δσ, »αÑñ«ΓóαáΘá∩ «í¡áαπªÑ¡¿Ñ ñαπú¿¼¿ »α«úαἼἿ. Æα¿ ßѬ-
  1278. Γ«αá  ¿¼Ñ½¿  ß¬αδΓδÑ  áñαÑß¡δÑ  ¼ÑΓ¬¿:  21/47/05/00,  A5/86/81/04  ¿
  1279. EB/76/EE/04. Å«ß½Ñ ¿σ »α«óÑન, SuperLok τ¿ΓáÑΓ ñ«α«ª¬π ß ¬«ñἿ 6 ¿
  1280. 3, ß¡«óá óδτ¿ß½∩∩ 16-í¿Γ«óδÑ ¬«¡Γα«½∞¡δÑ ßπ¼¼δ.
  1281.    Æá¬¿¼ «íαẫ¼,  SuperLok »αÑñßΓáó½∩ÑΓ σ«α«Φπε ºáΘ¿Γπ «Γ ¬«»¿α«óá-
  1282. ¡¿∩.  ì¿ «ñ¿¡ ¿º »α«óÑαÑ¡¡δσ í¿Γ-¬«»¿α«óΘ¿¬«ó ¡Ñ íδ½ ß»«ß«í¡δ⌐ ¬«»¿-
  1283. α«óáΓ∞  Γᬫ⌐  ñ¿ß¬  "íπ¬óá½∞¡«"  íѺ  ¼«ñ¿Σ¿¬áµ¿¿  «í½áßΓÑ⌐  ñá¡¡δσ
  1284. SuperLok. éÑα«∩Γ¡«, Γá¬á∩ ¬«»¿∩ »α«ßΓ« ¡Ñ󫺼«ª¡á (ß¼. 1.3.9).
  1285.    Å«ºªÑ ∩  ¿¼Ñ½  ó«º¼«ª¡«ßΓ∞ τΓ«íδ ñѽáΓ∞ íδßΓαδ⌐ glance ¡á ñ¿ß¬Ñ ß
  1286.  
  1287.                                 - 20 -
  1288. SuperLok,  ñáΓ¿α«óá¡¡«¼ 1990 ú. ÇñαÑß¡δÑ ¼ÑΓ¬¿ ß¬αδΓδσ ßÑ¬Γ«α«ó í뫨
  1289. πñá½Ñ¡δ  (?),  ñ«ßΓπ» ¬ τΓÑ¡¿ε ñ«α«ª¬¿ ß ¼ÑΓ¬«⌐ ºáΘ¿Γδ ºá¼Ñ¡∩½ß∩ (?)
  1290. ñ«»«½¡¿Γѽ∞¡δ¼ ßÑ¬Γ«α«¼ ß ¬«ñ«¼ ñ½¿¡δ 6 ó ßἫ¼ ¬«¡µÑ ñ«α«ª¬¿.  éÑß∞
  1291. (?) ñ«ßΓπ» ¬ ñ¿ß¬π íδ½ óδ»«½¡Ñ¡ BIOS'«¼.
  1292.  
  1293.                        1.6.3 Cops CopyLock II
  1294.  
  1295.    COPS CopyLock  II  «ß¡«óδóáÑΓ »α«óÑન ºáΘ¿Γδ ¡á ºá¼Ñαáσ óαѼѡ¿.
  1296. Ä¡ ¿ß»«½∞ºπÑΓ ñ«»«½¡¿Γѽ∞¡δ⌐ ßÑ¬Γ«α 00/00/6A/01 ¡á ñ«α«ª¬Ñ 0 ú«½«ó¬¿
  1297. 0, τΓ«íδ ß«σαá¡∩Γ∞ »ÑαѼѡ¡δÑ ñá¡¡δÑ ºáΘ¿Γδ. ( COPS CopyLock ß«ºñáÑΓ
  1298. ºáΘ¿ΘÑ¡¡δÑ »α«úαá¼¼¡δÑ »α«ñπ¬Γδ "»«óδΦÑ¡¡«ú« ¬áτÑßΓóá" íѺ ¬½ετÑó«ú«
  1299. ñ¿ß¬á,  ΓᬠτΓ« ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ß«σαá¡∩Γ∞ τΓ«-½¿í« ÑΘÑ,  ¬α«¼Ñ ßÑ-
  1300. α¿⌐¡«ú« ¡«¼Ñαá ó ΓѽѠ»α«úαá¼¼δ).  éΓ«α«⌐ ñ«»«½¡¿Γѽ∞¡δ⌐  ßÑ¬Γ«α  ¡á
  1301. ñ«α«ª¬Ñ 0 (00/00/F6/02),  π ¬«Γ«α«ú« íδ½á τáßΓ¿τ¡« »ÑαѺỿßá¡á IAM,
  1302. ¿ß»«½∞º«óá½ß∩,  τΓ«íδ »α«óÑα¿Γ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«α áñαÑß¡«⌐ ¼ÑΓ¬¿ ßÑ¬Γ«αá
  1303. 1  τÑαѺ »α«¼ÑªπΓ«¬ (ß¼.  1.3.9).  ùΓ«íδ »αÑñ«ΓóαáΓ¿Γ∞ «íσ«ñ ºáΘ¿Γπ,
  1304. ß«óÑαΦáѼδ⌐ »« 1.3.9,  CopyLock »α«óÑα∩ÑΓ »«º¿µ¿ε óßÑσ (?)  ßÑ¬Γ«α«ó
  1305. ¡á  ñ«α«ª¬Ñ óδí«α«¼ «»αÑñѽѡ¡«ú« óαѼѡ¿ ¬«¼á¡ñδ τΓÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬á-
  1306. Γ«αá ßÑ¬Γ«αá.
  1307.    ä«α«ª¬¿ 1 ¬ 6 «τÑ¡∞ ßσ«ª¿: «¡¿ ¿¼ÑεΓ ñóá ñ«»«½¡¿Γѽ∞¡δσ ßÑ¬Γ«αá ó
  1308. ¬«¡µÑ: XX/00/14/01,  ¬«Γ«αδ⌐ ¡Ñ ¿ß»«½∞ºπÑΓß∩ (?),  ¿ XX/00/13/02,  π
  1309. ¬«Γ«α«ú« »ÑαѺỿßá¡á IAM,  ¿ »α«óÑα∩ÑΓß∩ ΓѼ  ªÑ  ß»«ß«í«¼,  τΓ«  ¿
  1310. 00/00/F6/02.  ä«α«ª¬¿  7 ¬ 9 ¿¼ÑεΓ »« «ñ¡«¼π ñ«»«½¡¿Γѽ∞¡«¼π ßÑ¬Γ«απ
  1311. (XX/00/14/01).  ¥Γ¿ ßÑ¬Γ«αá ¡Ñ ¿ß»«½∞ºπεΓß∩  (?).  ìá  ¿ßß½Ññ«óá¡¡«⌐
  1312. ñ¿ß¬ÑΓÑ  ¿¼Ñ½ß∩  »«óÑασ¡«ßΓ¡δ⌐  ñÑΣÑ¬Γ  ó  ñ«α«ª¬Ñ 32 ú«½«ó¬¿ 1,  ¡«
  1313. CopyLock ¡Ñ »α«óÑα¿½á Ñú« ¡á½¿τ¿Ñ, ΓᬠτΓ« ¼δ ¡Ñ ñπ¼áѼ τΓ« φΓ« ñαπ-
  1314. úá∩ ¼ÑΓ¬á ºáΘ¿Γδ.
  1315.    ¥Γ« - ÑΘÑ «ñ¿¡ »α¿¼Ñα σ«α«ΦÑ⌐ ßσÑ¼δ ºáΘ¿Γδ,  σ«Γ∩  ¿  ñ«ßΓ¿ú¡πΓ«⌐
  1316. ßαÑñßΓóἿ,  «Γ½¿τ¡δ¼¿ «Γ 1.6.2. Äñ¡á¬« , ß »«¼«Θ∞ε C.U.T. δδ ß¼«ú½¿
  1317. ó«ßßΓá¡«ó¿Γ∞ ¡ÑºáΘ¿ΘÑ¡¡πε óÑαß¿ε  »αÑñßΓáó½∩εΘÑ⌐  ¿¡ΓÑαÑß  »α«úαá¼¼δ
  1318. (¥Γ«  íδ½  Paradisk  ¿º  JV ParaGraph ) ó ΓÑτÑ¡¿Ñ »α¿í½¿º¿Γѽ∞¡« 2-σ
  1319. τáß«ó.  îδ ¡Ñ ñπ¼áѼ, τΓ« αáºαáí«Γ¬á CopyLock ºá¡∩½á ¼Ñ¡∞ΦÑ óαѼѡ¿.
  1320. ò«Γ∩  ¼δ  ¿¼ÑѼ ¬«»¿ε COPS CopyLock III,  ÑΘÑ ¡Ñ í佫 óαѼѡ¿ ñ½∩ ÑÑ
  1321. ¿ßß½Ññ«óá¡¿∩.
  1322.  
  1323.                             1.6.4 Ö¿Γ PC
  1324.  
  1325.    ¥Γá ñ¿ß¬«óá∩ ßσѼᠺáΘ¿Γδ «ΓÑτÑßΓóÑ¡¡«ú« »α«¿ºó«ñßΓóá, ¿º«íαÑΓÑ¡-
  1326. ¡á∩ Ç½Ñ¬ßá¡ñα«¼ æ¿¼¬¿¡δ¼,  »«½πτ¿½á í«½∞Φπε αѬ½á¼π ó æ«óÑΓ߬«¼ æ«ε-
  1327. ºÑ. îδ ¿¼Ñ½¿ ó«º¼«ª¡«ßΓ∞ ¿ßß½Ññ«óáΓ∞ »«½-ñ¡δ óÑαß¿⌐ φΓ«⌐ »α«úαá¼-
  1328. ¼δ, ¿, Γᬿ¼ «íαẫ¼, ¡áí½εñáΓ∞ ÑÑ »«ßΓѻѡ¡«Ñ αáºó¿Γ¿Ñ.
  1329.    ÅÑαóδÑ óÑαß¿¿ Ö¿Γá PC ¿ß»«½∞º«ó὿ »α«ßΓπε ¼ÑΓ¬π ßÑ¬Γ«αá, »ÑαѺá-
  1330. »¿ßδóá∩ IAM Γ«½∞¬« ¡á ñ«α«ª¬Ñ 0.  ¥Γ« «í¼á¡δóὫ »«τΓ¿ óßÑ í¿Γ-¬«»¿-
  1331. α«óΘ¿¬¿,  ¬«Γ«αδÑ «»αÑñѽ∩½¿ φΓπ ¼ÑΓ¬π ¬á¬ ¬«α«Γ¬¿Ñ ñá¡¡δÑ (»«½«ó¿¡á
  1332. ßÑ¬Γ«αá - »«ß½Ñ ¿¡ñѬߡ«ú« «ΓóÑαßΓ¿∩, ¡Ñ Γᬠ½¿ ?) ¿, Γᬿ¼ «íαẫ¼,
  1333. αáºαπΦ὿ ÑÑ. Äñ¡á¬«, φΓá ¼ÑΓ¬á ÑΘÑ ¼«ªÑΓ ½Ñú¬« ºá»¿ßδóáΓ∞ß∩ «íδτ¡δ-
  1334. ¼¿ ó맮óἿ BIOS'á (¡Ñ ú«ó«α∩ πªÑ « ¡«óδσ óÑαß¿∩σ í¿Γ-¬«»¿α«óΘ¿¬«ó),
  1335. ¿ φΓá ºáΘ¿Γá "αá߬á½δóá½áß∞".
  1336.    æ½ÑñπεΘ¿⌐ »αÑñ»α¿¡∩Γδ⌐ Φáú - «íαáΘáΓ∞ß∩ ¬ ¿ñÑ¡Γ¿Σ¿¬áΓ«απ áñαÑß¡«⌐
  1337. ¼ÑΓ¬¿ »Ñαó«ú« ßÑ¬Γ«αá τÑαѺ »α«¼ÑªπΓ«¬ (ó½¿∩¡¿Ñ COPS?). ÅÑαó«¡áτá½∞-
  1338. ¡« ñ½∩ φΓ«ú« ñ«»«½¡¿Γѽ∞¡«ú« ßÑ¬Γ«αá óδí¿αá½ß∩ ¬«ñ ñ½¿¡δ 2 (512 íá⌐-
  1339. Γ«ó).  ¥Γá ¼ÑΓ¬á "αá߬á½δóá½áß∞" ¼ÑΓ«ñ¿¬«⌐, «»¿ßá¡¡«⌐ ó 1.3.9 (ß¡«óá
  1340. ,  ¡Ñ ΓαÑíπÑΓß∩ ¡¿τÑú« ¬α«¼Ñ BIOS'á). ê ΓÑ»Ñα∞ , »«ß½Ññ¡¿⌐ Φáú - ¬«ñ
  1341. ñ½¿¡áδ   ñ«»«½¡¿Γѽ∞¡«ú«   ßÑ¬Γ«αá   πóѽ¿τ¿óá½ß∩   ñ«   6  (ó½¿∩¡¿Ñ
  1342. SuperLok?),  ñѽá∩ Γαπñ¡δ¼ (¡« ÑΘÑ ¡Ñ  ¡Ñ󫺼«ª¡δ¼)  ó«ß»α«¿ºóÑñÑ¡¿Ñ
  1343. φΓ«⌐  ¼ÑΓ¬¿  BIOS'«¼.  ÄτÑó¿ñ¡«,  φΓ«  ¡Ñ  »αÑ»∩ΓßΓó¿Ñ  ñ½∩ σ«α«ΦÑú«
  1344. í¿Γ-¬«»¿α«óΦ¿¬á, ¿ C.U.T íπñÑΓ ½Ñú¬« ¿¼¿Γ¿α«óáΓ∞ Γá¬πε ¼ÑΓ¬π.
  1345.    äá½∞¡Ñ⌐Φá∩ αáºαáí«Γ¬á  φΓ«⌐ ßσÑ¼δ ºáΘ¿Γδ ¼«ªÑΓ »«⌐Γ¿ »« ñóπ¼ ¡á»-
  1346. αáó½Ñ¡¿∩¼: ó¬½ετÑ¡¿Ñ »α«óÑન »«º¿µ¿¿ ßÑ¬Γ«αá (¬á¬ ó 1.6.3) ¿½¿ »«½-
  1347. ¡«Ñ τΓÑ¡¿Ñ ñ«α«ª¬¿ ß »α«¼ÑªπΓ¬á¼¿ (¬á¬ ó 1.6.2). éΓ«α«Ñ ¡á»αáó½Ñ¡¿Ñ,
  1348. σ«Γ∩ ΓαÑíπÑΓ ß«σαá¡Ñ¡¿∩ óßÑ⌐ ñ«α«ª¬¿ ñ½∩ µÑ½Ñ⌐ ºáΘ¿Γδ, ¬áªÑΓß∩ í«½ÑÑ
  1349. óÑα«∩Γ¡δ¼,  »«Γ«¼π  τΓ« Γá¬á∩ αáºαáí«Γ¬á ¡Ñ ΓαÑíπÑΓ ñ«ßΓπ»á ¬ FDC ¡á
  1350. πα«ó¡Ñ τ¿»á (óßÑ ¿ºóÑßΓ¡δÑ ¡á¼ óÑαß¿¿ Ö¿Γá  PC  »«½∞ºπεΓß∩  ¿ß¬½ετ¿-
  1351.  
  1352.                                 - 21 -
  1353. Γѽ∞¡« »α«µÑñπαἿ ñ«ßΓπ»á ¬ ñ¿ß¬π BIOS'á).
  1354.  
  1355.  
  1356.                2. çáΘ¿Γá, «ß¡«óá¡¡á∩ ¡á ªÑßΓ¬«¼ ñ¿ß¬Ñ
  1357.  
  1358.    è½ετ¿ ¡á ú¿í¿σ ñ¿ß¬áσ ¼«úπΓ «íÑß»Ñτ¿óáΓ∞ σ«α«Φ¿⌐ πα«óÑ¡∞  ºáΘ¿Γδ,
  1359. ¡«  «¡¿  ß½Ñú¬á  πΓ«¼¿Γѽ∞¡δ  ñ½∩  ÑªÑñ¡Ñó¡«ú« »α¿¼Ñ¡Ñ¡¿∩,  ºá¡¿¼áεΓ
  1360. ó»πßΓπε ñ¿ß¬«ó«ñ ¿ ¼«úπΓ íδΓ∞ ½Ñú¬« »«óαѪñÑ¡δ ¡Ñ»«ñσ«ñ∩Θ¿¼  «íαáΘÑ-
  1361. ¡¿Ñ¼.  æ½Ññ«óáΓѽ∞¡«,  í«½∞Φ¿¡ßΓó« ºáΘ¿ΘÑ¡¡δσ «Γ ¬«»¿α«óá¡¿∩ »á¬ÑΓ«ó
  1362. ¼«úπΓ πßΓá¡áó½¿óáΓ∞ß∩ ¡á ªÑßΓ¬«¼ ñ¿ß¬Ñ, ¿ß»«½∞ºπ∩ ½εíδÑ ¼ÑΓ¬¿ ºáΘ¿Γδ
  1363. ªÑßΓ¬«ú« ñ¿ß¬á (φΓá ú½áóá) ¿½¿ ¼ÑΓ¬¿ «ß¡«ó¡«⌐ »½áΓδ (ú½áóá 3).  ü½á-
  1364. ú«ñáα∩ ßπΘÑßΓó«óá¡¿ε í«½∞Φ«ú« τ¿ß½á ¡Ñß«ó¼ÑßΓ¿¼δσ  Σ¿º¿τÑ߬¿  ¿¡ΓÑα-
  1365. ΣÑ⌐ß«ó ªÑßΓ¬«ú« ñ¿ß¬á, ¼ÑΓ¬¿ ªÑßΓ¬«ú« ñ¿ß¬á - «íδτ¡« "¡á¿¼Ñ¡∞Φ¿⌐ «í-
  1366. Θ¿⌐ º¡á¼Ñ¡áΓѽ∞" αẽ¿τ¡δσ ó«º¼«ª¡«ßΓÑ⌐ ¿ í«½ÑÑ »α«ßΓδ ó  ¿ºú«Γ«ó½Ñ-
  1367. ¡¿¿.
  1368.  
  1369.                      2.1 çáΘ¿Γá ¡á πα«ó¡Ñ τ¿»á
  1370.  
  1371.    ¥Γ«Γ πα«óÑ¡∞  ñ«ßΓπ»á  ¬ ªÑßΓ¬«¼π ñ¿ß¬π óÑß∞¼á ¼á½«óÑα«∩ΓÑ¡,  Γá¬
  1372. τΓ« ¼δ Γ«½∞¬« ¬αáΓ¬« «íßñ¿¼ AT WDC (¬«¡Γα«½½Ñα ó¿¡τÑßΓÑα¡«ú« ñ¿ß¬á),
  1373. ß ¬«Γ«αδ¼ îδ ¿¼ÑѼ ¡Ñí«½∞Φ«⌐ ½¿τ¡δ⌐ «»δΓ «íαáΘÑ¡¿∩. è »Ñαó«¼π AT WDC
  1374. ¼«ª¡« «íαáΘáΓ∞ß∩ »« áñαÑßá¼ 1F0-1F7 ¿ 3F6 (φë໫αΓ ¡áσ«ñ¿Γß∩ ó áñ-
  1375. αÑß¡«¼ »α«ßΓαá¡ßΓóÑ »Ñαóδσ AT FDC, ¿ ∩ó½∩ÑΓß∩ »α¿τ¿¡«⌐ ñ½∩ ¬«¡Σ½¿¬Γá
  1376. á»»áαáΓ¡δσ ßαÑñßΓó ó ß¿ßΓѼáσ ß FDC ¿ WDC,  óδ»«½¡Ñ¡¡δσ ¡á αẽ¿τ¡δσ
  1377. ñ«»«½¡¿Γѽ∞¡δσ »½áΓáσ). éΓ«α«⌐ AT WDC ºá¡¿¼áÑΓ áñαÑßá 170-177 ¿ 376.
  1378. AT WDC ¿ß»«½∞ºπÑΓ IRQ 14 (int 76 ó  îæ-äÄæ)  ¿  ¡Ñ  ¿ß»«½∞ºπÑΓ  DMA.
  1379. æΓαπ¬Γπαá AT WDC óδú½∩ñ¿Γ «τÑ¡∞ ßσ«ªÑ ß τ¿»«¼ INTEL 82062, ñÑ⌐ßΓóπε-
  1380. ΘѼ ó αáßΦ¿αÑ¡¡«¼ αѪ¿¼Ñ ß 4-íá⌐Γ«óδ¼  ¬«ñ«¼  ECC  (¬«ñ  ¿ß»αáó½Ñ¡¿∩
  1381. «Φ¿í«¬), ñ«íáó½Ñ¡¡δ¼ ¬ ¬áªñ«¼π ßÑ¬Γ«απ. (è ß«ªá½Ñ¡¿ε, ¼δ ¿¼ÑѼ Γ«½∞-
  1382. ¬« ¿¡Σ«α¼áµ¿ε »« πß«óÑαΦÑ¡ßΓó«óá¡¿ε ¡á  82062,  Γᬠ τΓ«  »α¿ó«ñ¿¼«¬
  1383. «»¿ßá¡¿Ñ ¡¿ªÑ ¡Ñ ¼«ªÑΓ íδΓ∞ Γ«τ¡δ¼ ¿½¿ ºá¬«¡τÑ¡¡δ¼).
  1384.    1F0 - αÑú¿ßΓα ñá¡¡δσ,  ¿ß»«½∞ºπѼδ⌐ ñ½∩ íπΣÑαá τΓÑ¡¿∩/ºá»¿ß¿ ßѬ-
  1385. Γ«α«ó  (512  íá⌐Γ«ó).  ò«Γ∩  ñ½∩ ñá¡¡δσ ßÑ¬Γ«αá ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩
  1386. ß½«ó¡δ⌐ ñ«ßΓπ» Γ«½∞¬« íá⌐Γ«óδ⌐  »α¿Ñ¼½Ñ¼  ñ½∩  τΓÑ¡¿∩/ºá»¿ß¿  íá⌐Γ«ó
  1387. ECC.
  1388.    1F1 - τΓÑ¡¿Ñ:  αÑú¿ßΓα Σ½áú«ó «Φ¿í«¬
  1389.  
  1390.  ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  1391.  │ BBD │ CRC │  0  │ ID  │  0  │ AC  │ TK0 │ DM  │
  1392.  └──┬──┴──┬──┴─────┴──┬──┴─────┴──┬──┴──┬──┴──┬──┘
  1393.     │     │           │           │     │     └ Çî ñá¡¡δσ ¡Ñ ¡á⌐ñÑ¡á
  1394.     │     │           │           │     └─── ìÑπñáτ¡á∩ »ÑαѬ὿íα«ó-
  1395.     │     │           │           │         α«ó¬á:ßÑ¬Γ«α 0 ¡Ñ ¡á⌐ñÑ¡
  1396.     │     │           │           └──────────── è«¼á¡ñá »αÑαóá¡á
  1397.     │     │           └──────────────────────── ID AM ¡Ñ ¡á⌐ñÑ¡
  1398.     │     └──────────────────────────────────── ìѿ߻αáó¿¼á∩  «Φ¿í¬á
  1399.     │                                        ¿½¿ AM ñá¡¡δσ ¡Ñ ¡áñÑ¡á
  1400.     └────────────────────────────────────────── ìá⌐ñÑ¡  »½«σ«⌐  í½«¬
  1401.             É¿ß 2.1a ÉÑú¿ßΓα Σ½áú«ó «Φ¼í«¬ (1F1)
  1402.  
  1403.    1F1 - ºá»¿ß∞:  »π߬ π¼Ñ¡∞ΦáÑΓ ºá»¿ß∞ ΓѬπΘÑú« µ¿½¿¡ñαá / 4,  0FFh
  1404. «Γ¬½ετáÑΓ RWC.
  1405.    1F2 - αÑú¿ßΓα ßτÑΓτ¿¬á ßÑ¬Γ«α«ó.  êß»«½∞ºπÑΓß∩,  τΓ«íδ «»αÑñѽ∩Γ∞
  1406. τ¿ß½« »ÑαÑßδ½áѼδσ ßÑ¬Γ«α«ó ó ¼¡«ú«ßÑ¬Γ«α¡δσ «»Ñαᵿ∩σ - 1,  Γ« ÑßΓ∞
  1407. ,  º¡áτÑ¡¿Ñ 1 º¡áτ¿Γ 2 ßÑ¬Γ«αá.  WDC íπñÑΓ »α¿¡¿¼áΓ∞ í«½ÑÑ «ñ¡«⌐ ñ«-
  1408. ᫪¬¿, ß«ßΓ«∩ΘÑ⌐ ¿º ßÑ¬Γ«α«ó, ¼«ñ¿Σ¿µ¿απ∩ ¡«¼Ñαá ú«½«ó¬¿ ¿ µ¿½¿¡ñαá,
  1409. ß««ΓóÑΓßΓóÑ¡¡«.  é ΓÑτÑ¡¿Ñ «»Ñαᵿ¿ Σ«α¼áΓá ñ«α«ª¬¿ «»αÑñѽ∩ÑΓ τ¿ß½«
  1410. ßÑ¬Γ«α«ó ¡á ñ«α«ª¬Ñ (0FFh - 255 ßÑ¬Γ«α«ó).
  1411.    1F3 - αÑú¿ßΓα ¡«¼Ñαá ßÑ¬Γ«αá.  é ΓÑτÑ¡¿Ñ «»Ñαᵿ¿ Σ«α¼áΓá ñ«α«ª¬¿
  1412. «»αÑñѽ∩ÑΓ º¡áτÑ¡¿Ñ GAP 1 ¿ GAP 3 (ß¼. «»¿ßá¡¿Ñ MFM ó 1.1.3) ¼¿¡πß 3
  1413. íá⌐Γá.
  1414.    1F4 - 8 ¼½áñΦ¿σ í¿Γ«ó ¡«¼Ñαá µ¿½¿¡ñαá.  (Tech Help! 4.0 ºñÑß∞ ¡Ñ-
  1415. óÑαÑ¡).
  1416.  
  1417.                                 - 22 -
  1418.    1F5 - 2 ßΓáαΦÑú« αáºα∩ñá ¡«¼Ñαá µ¿½¿¡ñαá (í¿Γδ 0-1 ¿ß»«½∞ºπεΓß∩).
  1419. ìѬ«Γ«αδÑ WDC ¡Ñ íπñπΓ »α¿¡¿¼áΓ∞ í«½ÑÑ 2-σ í¿Γ ó φΓ«¼ αÑú¿ßΓαÑ,  Γá-
  1420. ¬¿¼ «íαẫ¼,  »«ññÑনóá∩ ªÑßΓ¬¿Ñ ñ¿ß¬¿ ß í«½ÑÑ 1023 µ¿½¿¡ñαἿ,  ¡«
  1421. í«½∞Φ¿¡ßΓó« BIOS'«ó óßÑúñá πñá½∩ÑΓ φΓ¿ ßΓáαΦ¿Ñ í¿Γδ.
  1422.    1F6 - óδí«α ßÑ¬Γ«αá/»α¿ó«ñá/ú«½«ó¬¿.
  1423.  
  1424.  ┌─────┬───────────┬─────┬───────────────────────┐
  1425.  │ EXT │   SIZE    │ DRV │         HEAD          │
  1426.  └──┬──┴────┬──────┴──┬──┴─────┴─────┼─────┴─────┘
  1427.     │       │         │              └────── éδí«α ú«½«ó¬¿ (0-15)
  1428.     │       │         └───────────────────── éδí«α »α¿ó«ñá (0-1)
  1429.     │       └──────────────────────────────── è«ñ αẼÑαá ßÑ¬Γ«αá:
  1430.     │                                           00 =  256 íá⌐Γ«ó
  1431.     │                                           01 =  512 íá⌐Γ«ó
  1432.     │                                           10 = 1024 íá⌐Γ«ó
  1433.     │                                           11 =  128 íá⌐Γ«ó
  1434.     └──────────────────────────────────────── 0: ¿ß»«½∞º«óáΓ∞ CRC
  1435.                                               1: ¿ß»«½∞º«óáΓ∞ ECC
  1436.           É¿ß. 2.1b SDH (Sector/Drive/Head) αÑú¿ßΓα (1F6).
  1437.  
  1438.    é »Ñαó«¡áτá½∞¡«⌐  ß»Ñµ¿Σ¿¬áµ¿¿  82062  3 í¿Γá αѺÑαó¿α«ó὿ß∞ ñ½∩
  1439. »«½∩ óδí«αá ú«½«ó¬¿ ¿ 2 í¿Γá - ñ½∩ óδí«αá ñ¿ß¬«ó«ñá,  ¡« φΓ¿ ß¿ú¡á½δ
  1440. «íαáíáΓδó὿ß∞ ó¡ÑΦ¡¿¼¿ ßσѼἿ,  ΓᬠτΓ« φΓ« ñÑ⌐ßΓó¿Γѽ∞¡« ¡Ñ ¿¼ÑÑΓ
  1441. º¡áτÑ¡¿∩.
  1442.    1F7 - τΓÑ¡¿Ñ : αÑú¿ßΓα ß«ßΓ«∩¡¿∩
  1443.  
  1444.  ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
  1445.  │BUSY │READY│ WF  │ SC  │ DRQ │ ECC │ CIP │ERROR│
  1446.  └──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┘
  1447.     │     │     │     │     │     │     │     └ ÉѺε¼Ñ «Φ¿í¬¿ (OR ß«
  1448.     │     │     │     │     │     │     │       óßѼ¿ í¿ΓἿ 1F1)
  1449.     │     │     │     │     │     │     └────── è«¼á¡ñá ó αáí«ΓÑ
  1450.     │     │     │     │     │     └─────────── äá¡¡δÑ ECC-¿ß»αáó½Ñ¡δ
  1451.     │     │     │     │     └────────────────── çá»α«ß ñá¡¡δσ (íπΣÑα
  1452.     │     │     │     │                         «ª¿ñáÑΓ ñá¡¡δÑ)
  1453.     │     │     │     └──────────────────────── ôßΓá¡«ó¬á óδ»«½¡Ñ¡á
  1454.     │     │     └────────────────────────────── ÄΦ¿í¬á ºá»¿ß¿
  1455.     │     └──────────────────────────────────── WDC ú«Γ«ó
  1456.     └────────────────────────────────────────── WDC ºá¡∩Γ (óßÑ ñαπ-
  1457.                                                 ú¿Ñ í¿Γδ ¡ÑóÑα¡δ)
  1458.                  É¿ß. 2.1c ÉÑú¿ßΓα ß«ßΓ«∩¡¿∩ (1F7)
  1459.  
  1460.    1F7 -  ºá»¿ß∞:  αÑú¿ßΓα  ¬«¼á¡ñ.  çñÑß∞ ºá»¿ßδóáÑΓß∩ ¬«ñ ¬«¼á¡ñδ.
  1461. æ¿ßΓѼᠬ«¼á¡ñ AT FDC (¬«Γ«αá∩ ∩ó½∩ÑΓß∩ ¡áñ¼¡«ªÑßΓó«¼ 82062),  ó¬½ε-
  1462. τáÑΓ ß½ÑñπεΘ¿Ñ:
  1463.     0     0     0     1           R3 - R0          ôßΓá¡«ó¬á  ñ«α«ª-
  1464.  └─────┴─────┴─────┴─────┴───────────────────────┘ ¬¿ 0
  1465.  
  1466.     0     1     1     1           R3 - R0          ôßΓá¡«ó¬á
  1467.  └─────┴─────┴─────┴─────┴───────────────────────┘
  1468.  
  1469.     0     0     1     0     I     M     E     T    ù¿ΓáΓ∞ ßÑ¬Γ«α
  1470.  └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  1471.  
  1472.     0     0     1     1     0     M     E     T    Å¿ßáΓ∞ ßÑ¬Γ«α
  1473.  └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  1474.  
  1475.     0     1     0     0     0     0     0     0    Åα«ß¼«Γα  ¿ñÑ¡Γ¿-
  1476.  └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ Σ¿¬áΓ«αá
  1477.  
  1478.     0     1     0     1     0     0     0     0    ö«α¼áΓ¿α«óá¡¿Ñ
  1479.  └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  1480.  
  1481.  
  1482.                                 - 23 -
  1483.     1     0     0     1     0     0     0     0    ä¿áú¡«ßΓ¿¬á
  1484.  └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
  1485.  
  1486.     1     0     0     1     0     0     0     1    ôßΓá¡«ó¬á »áαá¼Ñ-
  1487.  └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ Γα«ó »α¿ó«ñá
  1488.  
  1489.    R3-R0 «»αÑñѽ∩εΓ ß¬«α«ßΓ∞ Φáúá ñ¿ß¬«ó«ñá, ¬«Γ«αá∩ íπñÑΓ 0.035+0.5
  1490. * R ¼ß ñ½∩ 5 îⵠ߬«α«ßΓ¿ ß¿¡σα«¡¿ºáµ¿¿. (ìáΦ¿ φ¬ß»Ñα¿¼Ñ¡Γδ ß AT WDC
  1491. π¬áºδóáεΓ, τΓ« φΓ« º¡áτÑ¡¿Ñ ¿ú¡«α¿απÑΓß∩ ¬«¡Γα«½½Ñα«¼, ¬«Γ«αδ⌐ πßΓá-
  1492. ¡áó½¿óáÑΓ ú«½«ó¬π ó ¼á¬ß¿¼á½∞¡«Ñ ó«º¼«ª¡«Ñ íδßΓα«ñÑ⌐ßΓó¿Ñ, ¿ß»«½∞ºπ∩
  1493. á»»áαáΓ¡πε ¿¡ΓÑαΣÑ⌐ß¡πε ½¿¡¿ε Seek Completed).
  1494.    I = 0 αáºαÑΦáÑΓ ºá»α«ß »αÑαδóá¡¿∩ ¡á á¬Γ¿ó¡«¼ DRQ,  ¬á¬  ¿  »«ß½Ñ
  1495. ºáóÑαΦÑ¡¿∩ ¬«¼á¡ñδ, I = 1 «Γ¬½ετáÑΓ »αÑαδóá¡¿Ñ ¡á á¬Γ¿ó¡«¼ DRQ.
  1496.    M = 1 «»αÑñѽ∩ÑΓ ¼¡«ú«ßÑ¬Γ«α¡πε »ÑαÑß佬π,  τ¿ß½« ßÑ¬Γ«α«ó  ¡áσ«-
  1497. ñ¿Γß∩ ó αÑú¿ßΓαÑ ßτÑΓτ¿¬á ßÑ¬Γ«αá.
  1498.    E = 1 «Γ¬½ετáÑΓ ¿ß»αáó½Ñ¡¿Ñ ñá¡¡δσ ¿ »ÑαÑñáÑΓ 4 íá⌐Γá ECC  ¡áα∩ñπ
  1499. ß ñá¡¡δ¼¿ ßÑ¬Γ«α«ó.
  1500.    T = 0 ñ«»π߬áÑΓ »«óΓ«α¡δÑ »ÑαÑß佬¿,  Γ« ÑßΓ∞,  Ñß½¿ «»αÑñѽ∩Ѽδ⌐
  1501. ßÑ¬Γ«α  ¡Ñ  íδ½ «í¡áαπªÑ¡ »«ß½Ñ 6 «í«α«Γ«ó,  WDC óδ»«½¡∩ÑΓ áóΓ«¼áΓ¿-
  1502. τÑ߬¿ ¬«¼á¡ñπ »α«ß¼«Γαá ¿ñÑ¡Γ¿Σ¿¬áΓ«αá,  ¼«ñ¿Σ¿µ¿απÑΓ ó¡πΓαÑ¡¡¿⌐ ¡«-
  1503. ¼Ñα µ¿½¿¡ñαá, óδ»«½¡∩ÑΓ ó ß½πτáÑ ¡Ñ«íσ«ñ¿¼«ßΓ¿ πßΓá¡«ó¬π ¿ »«óΓ«α∩ÑΓ
  1504. «»Ñαᵿε.  Åα¿ T = 1 «Φ¿í¬á ó«º¡¿¬áÑΓ,  Ñß½¿ «»αÑñѽ∩Ѽδ⌐ ßÑ¬Γ«α  ¡Ñ
  1505. íδ½ «í¡áαπªÑ¡ »«ß½Ñ 2 «í«α«Γ«ó.
  1506.    3F6 - ºá»¿ß∞:  αÑú¿ßΓα «»µ¿⌐.  çỿß∞ 02h «Γ¬½ετáÑΓ WDC IRQ 14 «Γ
  1507. ß¿ßΓѼ¡«⌐ Φ¿¡δ,  00h »α«ñ«½ªáÑΓ ¡«α¼á½∞¡δÑ «»Ñαᵿ¿,  04h ßíαáßδóáÑΓ
  1508. ¬«¡Γα«½½Ñα.
  1509.    æ¿ßΓѼᠬ«¼á¡ñ WDC ú«αáºñ« ¼Ñ¡ÑÑ ú¿í¬á∩,  τѼ π 8272, ¿ αáºαÑΦáÑΓ
  1510. óδí¿αáΓ∞ óαπτ¡πε Γ«½∞¬« ¡«¼Ñα ßÑ¬Γ«αá. ò«Γ∩ áñαÑß¡á∩ ¼ÑΓ¬á ¿ñÑ¡Γ¿Σ¿-
  1511. ¬áΓ«αá ßÑ¬Γ«αá ß«ñÑαª¿Γ ΓᬪѠº¡áτÑ¡¿∩ µ¿½¿¡ñαá,  ú«½«ó¬¿ ¿ αẼÑαá,
  1512. «¡¿ »α«¿ºó«ñ∩Γß∩ ¿º αÑú¿ßΓαá ¬«¼á¡ñ WDC ¿  ¡Ñ  ¼«ªúπΓ  ∩ó¡«  «»αÑñÑ-
  1513. ½∩Γ∞ß∩.  Å«φΓ«¼π  óßÑ  ¬«¼á¡ñδ WDC (ºá ¿ß¬½ετÑ¡¿Ñ¼ ¬«¼á¡ñδ »α«ß¼«Γαá
  1514. ¿ñÑ¡Γ¿Σ¿¬áΓ«αá) ¿ß»«½∞ºπεΓ »áαá¼ÑΓαδ πßΓá¡«ó¬¿,  φΓ¿ »«½∩ Γαπñ¡« ¿º-
  1515. ¼Ñ¡∩Γ∞.
  1516.    Äß«íÑ¡¡«ßΓ¿ AT WDC,  «τÑó¿ñ¡«,  óδú«ñ¡δ ñ½∩  ¡«α¼á½∞¡δσ  «»Ñαᵿ⌐
  1517. ¥éî, ¡« ß«¬αáΘáεΓ ó«º¼«ª¡«ßΓ¿ ºáΘ¿Γδ «Γ ¬«»¿α«óá¡¿∩ ñ«»«½¡¿Γѽ∞¡δ¼¿/
  1518. »α«»πΘÑ¡¡δ¼¿ ßÑ¬Γ«αἿ (ß¼. 1.3.1) ¿ »«α∩ñ¬«¼ »α«óÑન ßÑ¬Γ«α«ó (ß¼.
  1519. 1.4.1). êß»αáó½Ñ¡¿Ñ ñá¡¡δσ ECC »«ºó«½∩ÑΓ óδ»«½¡¿Γ∞ ΓαÑΓ¿⌐ Γαε¬ ºáΘ¿-
  1520. Γδ ªÑßΓ¬«ú« ñ¿ß¬á, ¿º¼Ñ¡∩∩ í¿Γ ó «»αÑñѽѡ¡«⌐ »«º¿µ¿¿, ¬«Γ«αδ⌐ íπñÑΓ
  1521. ߬αδóáΓ∞ß∩ ECC.
  1522.    éßÑ φΓ¿  ¼ÑΓ¬¿  ¼«úπΓ  ΓᬪѠ úÑ¡Ñα¿α«óáΓ∞ß∩  ¿  »α«óÑα∩Γ∞ß∩  »α¿
  1523. ¿ß»«½∞º«óá¡¿¿  ñ«ßΓπ»á ¬ ñ¿ß¬π ¡á πα«ó¡Ñ BIOS,  ΓᬠτΓ« «íαáΘÑ¡¿Ñ ¡á
  1524. πα«ó¡Ñ τ¿»á «íαáΘáεΓß∩ ¬ WDC ¡Ñ ñáÑΓ  ¡¿¬á¬¿σ  ßπΘÑßΓóÑ¡¡δσ  »αÑ¿¼π-
  1525. ΘÑßΓó, ¬«Γ«αδÑ ¼«úπΓ »«¬αδΓ∞ß∩ »½«σ«⌐ »ÑαÑ¡«ß¿¼«ßΓ∞ε »α«úαá¼¼.
  1526.  
  1527.                      2.2 çáΘ¿Γá ¡á πα«ó¡Ñ BIOS
  1528.  
  1529.    ¥Γ«, «τÑó¿ñ¡«, «ß¡«ó¡«⌐ πα«óÑ¡∞ ñ½∩ ºáΘ¿Γδ, «ß¡«óá¡¡«⌐ ¡á ªÑßΓ¬«¼
  1530. ñ¿ß¬Ñ.  ä«ßΓáΓ«τ¡á∩ ºáΘ¿Γá ¿º αѺ¿ñÑ¡Γ¡δσ  »α«úαá¼¼,  ¬«¡Γα«½¿απεΘ¿σ
  1531. ó맮óδ int 13h BIOS,  ¼«ªÑΓ ñ«ßΓ¿úáΓ∞ß∩ ó φΓ«¼ ß½πτáÑ »α¿ «Γ߽Ѫ¿óá-
  1532. ¡¿¿ «íαáΘÑ¡¿∩ ¬ »αÑαδóá¡¿ε,  13h,  ∩ó½∩εΘÑú«ß∩ Γ«τ¬«⌐ óσ«ñá BIOS »α¿
  1533. «íαáΘÑ¡¿¿ ¬ ªÑßΓ¬«¼π ñ¿ß¬π (ß¼.  »α¿¼Ñα ó Åα¿½«ªÑ¡¿¿ B). äαπúá∩ »α¿-
  1534. τ¿¡á ñ½∩ Γᬫú« πñá½Ñ¡¿∩ ¡áí½εñÑ¡¿∩ - ó«º¼«ª¡á∩ »«ΓαÑí¡«ßΓ∞ ñ½∩ Γ«τ-
  1535. ¡«ú« óδí«αá Γ«τ¡«ú« óαѼѡ¿ «»Ñαᵿ¿ ó «»αÑñѽѡ¿¿ ¿¡ΓÑ૨óá.
  1536.  
  1537.                      2.2.1 êº¼Ñ¡Ñ¡¿∩ ¿¡ΓÑ૨óá
  1538.  
  1539.    ¥Γ«Γ ¼ÑΓ«ñ  «τÑ¡∞  ßσ«ñÑ¡  ß  ºáΘ¿Γ«⌐ ú¿í¬¿σ ñ¿ß¬«ó,  «»¿ßá¡¡«⌐ ó
  1540. 1.4.1.  é «Γ½¿τ¿Ñ «Γ ñ¿ß¬ÑΓ,  úñÑ ßÑ¬Γ«αá,  ¬á¬ »αá󿽫, αẼÑΘáεΓß∩
  1541. »«ß½Ññ«óáΓѽ∞¡« (¿¡ΓÑ૨ó 1:1),  ßÑ¬Γ«αá ªÑßΓ¬¿σ ñ¿ß¬«ó τáßΓ« αẼÑ-
  1542. ΘÑ¡δ Σ«α¼áΓÑαἿ ¡¿º¬«ú« πα«ó¡∩ »αѵ¿º¿«¡¡«,  τΓ«íδ «íÑß»Ñτ¿óáΓ∞ ßá-
  1543. ¼πε  íδßΓαπε  ¿º ó«º¼«ª¡δσ ß¬«α«ßΓ∞ »ÑαÑß佬¿ ñá¡¡δσ.  æ½Ññ«óáΓѽ∞¡«
  1544. í«½ÑÑ Γαπñ¡« πó¿ñÑΓ∞ ¼ÑΓ¬π ¿¡ΓÑ૨óá ¡á ªÑßΓ¬«¼ ñ¿ß¬Ñ, τѼ ¡á ñ¿ß¬Ñ-
  1545. ΓÑ.
  1546.  
  1547.                                 - 24 -
  1548.  
  1549.                   2.2.2 êº¼Ñ¡Ñ¡¡δÑ ¡«¼Ñαá ßÑ¬Γ«αá
  1550.  
  1551.    æ¡«óá, φΓ«  ñó«⌐¡¿¬  1.3.1.  Äñ¡á¬«,  ªÑßΓ¬¿Ñ  ñ¿ß¬¿ «íδτ¡« ¿¼ÑεΓ
  1552. »½«Γ¡ÑÑ π»á¬«óá¡¡δÑ  ßÑ¬Γ«αá  ñá¡¡δσ,  ¿  τΓ«íδ  ñ«íáó¿Γ∞  ßÑ¬Γ«α  ß
  1553. ¡ÑßΓá¡ñáαΓ¡δ¼  ¡«¼Ñα«¼,  ¡πª¡«  »ÑαѼÑΘáΓ∞  «ñ¿¡ ¿º ßÑ¬Γ«α«ó ñá¡¡δσ.
  1554. ¥Γ«á ß¿Γπᵿ∩ ¼«ªÑΓ ½Ñú¬« «»αÑñѽ∩Γ∞ß∩.
  1555.  
  1556.                2.2.3 ìѿ߻«½∞ºπѼδÑ ñ¿ß¬«óδÑ «í½áßΓ¿
  1557.  
  1558.    ìá πα«ó¡Ñ BIOS ¿¼ÑεΓß∩ ñóÑ ¡Ñ¿ß»«½∞ºπѼδσ «í½áßΓ¿ ¡á »«τΓ¿  ½εí«¼
  1559. ªÑßΓ¬«¼ ñ¿ß¬Ñ: ó ßἫ¼ ¡áτá½Ñ ¿ ó ßἫ¼ ¬«¡µÑ ñ¿ß¬«ó«ñá. ÅÑαóδ⌐ ßѬ-
  1560. Γ«α ¬áªñ«ú« ªÑßΓ¬«ú« ñ¿ß¬á (»« ¬αá⌐¡Ñ⌐ ¼ÑαÑ, ¡Ñ SCSI ¿½¿ ESDI) ºá¡∩Γ
  1561. Γáí½¿µÑ⌐  αáºñѽ«ó,  ó Γ« óαѼ∩ ¬á¬ óßÑ ñαπú¿Ñ ßÑ¬Γ«αá ¡á µ¿½¿¡ñαÑ 0
  1562. ñ«α«ª¬¿ 0 ¡Ñ ¿ß»«½∞ºπεΓß∩ ó IBM ¿ ßσѼѠαáºñѽ«ó Microsoft. àΘÑ, φΓá
  1563. «í½áßΓ∞ ¼«ªÑΓ íδΓ∞ ºá¡∩Γá τáßΓ¡δ¼ »α«úαá¼¼¡δ¼ «íÑß»ÑτÑ¡¿Ñ¼ óδñѽѡ¿∩
  1564. αáºñѽ«ó. ìá»α¿¼Ñα, DiskManager (dmdrvr.bin) ¿ß»«½∞ºπÑΓ ßÑ¬Γ«α 0/0/8
  1565. ñ½∩  αáßΦ¿αÑ¡¡«⌐  Γáí½¿µδ αáºñѽ«ó,  Olivetty îæ-äÄæ ¡áτ¿¡áÑΓ »Ñαóδ⌐
  1566. αáºñѽ DOS ó 0/0/2, ¿ Γ.ñ.
  1567.    éΓ«αá∩ ¡Ñ¿ß»«½∞ºπѼá∩  «í½áßΓ∞ - µ¿½¿¡ñα ñ¿áú¡«ßΓ¿¬¿ »«½∞º«óáΓѽ∩
  1568. , ¬«Γ«αδ⌐ αẼÑΘáÑΓß∩ ºá ó »«ß½Ññ¡¿¼ ñ¿ß¬«óδ¼ µ¿½¿¡ñα ¡á ¥éî AT ¿ ¡á
  1569. »«ß½Ññ¡Ñ¼  µ¿½¿¡ñαÑ  ¡á  PS/2  (ì« «¡¿ ÑΘÑ ß«ó¼ÑßΓ¿¼δ,  ¡Ñ Γᬠ½¿?).
  1570. ùΓ«-¡¿íπñ∞, ºá»¿ßá¡¡«Ñ ºñÑß∞, ¿¼ÑÑΓ «τÑ¡∞ ¡Ñí«½∞Φ¿Ñ ó«º¼«ª¡«ßΓ¿ ß«σ-
  1571. αá¡¿Γ∞ß∩  ñ«½ú«,  »«Γ«¼π  τΓ« ½εíá∩ ñ¿ß¬«óá∩ »α«úαá¼¼á ΓÑßΓá ¡¿º¬«ú«
  1572. πα«ó¡∩ ¼«ªÑΓ «íαáíáΓδóáΓ∞ φΓπ ñ«α«ª¬π ¬á¬ Ñ⌐ ºáσ«τÑΓß∩.  (ƒ  πóÑαÑ¡,
  1573. Norton  DiskTreet ¿ Gibbson Research's SpinRite «»αÑñѽ∩εΓ ºñÑß∞ «»-
  1574. Γ¿¼á½∞¡δ⌐ ¿¡ΓÑ૨ó).
  1575.  
  1576.                       2.3 çáΘ¿Γá ¡á πα«ó¡Ñ DOS
  1577.  
  1578.    çáΘ¿Γá ¡á πα«ó¡Ñ BIOS ªÑßΓ¬«ú« ñ¿ß¬á «íÑß»Ñτ¿óáÑΓ ¡Ñ ß½¿Φ¬«¼ ¼¡«-
  1579. ú« óáα¿á¡Γ«ó, ó Γ« óαѼ∩ ¬á¬ DOS ¿¼ÑÑΓ πñ«í¡δÑ (¿ «Γ¡«ß¿Γѽ∞¡« »ÑαÑ-
  1580. ¡«ß¿¼δÑ)  ß»«ß«íδ  ó맮óá  αáºñѽ«ó  DOS   (¿¡ΓÑαΣÑ⌐ß«¼   »αÑαδóá¡¿⌐
  1581. 25h/26h,  ExtendedOpen  (6Ch)  ó DOS 4.0+),  ¬«Γ«αδÑ ¼«úπΓ ¿ß»«½∞º«-
  1582. óáΓ∞ß∩ ñ½∩ ºáΘ¿Γδ «Γ ¬«»¿α«óá¡¿∩.
  1583.    æΓαπ¬Γπαá Σá⌐½«ó«⌐ ß¿ßΓѼδ DOS Φ¿α«¬« ¿ºóÑßΓ¡á,  ΓᬠτΓ« ¼δ íπñѼ
  1584. Γ«½∞¬« ¬αáΓ¬« π»«¼¿¡áΓ∞ ¡á¿í«½ÑÑ ßπΘÑßΓóÑ¡¡δÑ ÑÑ τáßΓ¿.
  1585.    æÑ¬Γ«α 0 - ßÑ¬Γ«α ºáúαπºτ¿¬á.  Ä¡ ß«ñÑαª¿Γ ¬«ñ ¬«Γ«αδ⌐, ºáúαπªáÑΓ
  1586. «»Ñαᵿ«¡¡πε ß¿ßΓÑ¼π ¿ Γáí½¿µπ,  «»¿ßδóáεΘπε σáαá¬ΓÑα¿ßΓ¿¬¿ αáºñѽá,
  1587. ¬á¬ τ¿ß½« ßÑ¬Γ«α«ó, τ¿ß½« ßÑ¬Γ«α«ó ¡á ¬½áßΓÑα, ¡«¼Ñα FAT, τ¿ß½« óσ«-
  1588. ñ«ó ó ¬«α¡Ñó«⌐ ¬áΓὫú.
  1589.    Æáí½¿µá αẼÑΘÑ¡¿∩  Σá⌐½á«ó (FAT),  ¬«Γ«αδ⌐ ß½ÑñπÑΓ ºá ºáúαπºτ¿¼,
  1590. ß«ñÑαª¿Γ 12- ¿½¿ 16-í¿Γ«óδÑ º¡áτÑ¡¿∩ ñ½∩ ¬áªñ«ú« ¼«ñπ½∩  αáß»αÑñѽÑ-
  1591. ¡¿∩ (¬½áßΓÑαá),  π¬áºδóá∩ ¡«¼Ñα ß½ÑñπεΘÑú« ¬½áßΓÑαá ó µÑ»«τ¬Ñ. Äíδτ-
  1592. ¡«, ¡á ñ¿ß¬Ñ ÑßΓ∞ í«½ÑÑ «ñ¡«⌐ (ñóÑ) FAT, «íÑß»Ñτ¿óá∩, Γᬿ¼ «íαẫ¼,
  1593. ß«σαá¡¡«ßΓ∞ ñá¡¡δσ. (Äñ¡á¬«, DOS ¡Ñ «íαáíáΓδóáѼ ¬«»¿¿ FAT «Γñѽ∞¡«,
  1594. á »α«ßΓ« ß«σαá¡∩ÑΓ »Ñαóπε FAT ó ñ«»«½¡¿Γѽ∞¡δσ  «í½áßΓ∩σ,  ñπí½¿απε∩
  1595. ½εíπε  «Φ¿í¬π ó 1-«⌐ ¬«»¿¿ ó« óßÑσ FAT,  ΓᬠτΓ« ºáΘ¿Γá,  ó ñÑ⌐ßΓó¿-
  1596. Γѽ∞¡«ßΓ¿, ó««íαáªáѼá∩).
  1597.    è«α¡Ñó«⌐ ¬áΓὫú  (»«ß½Ñ  »«ß½Ññ¡Ñ⌐ ¬«»¿¿ FAT) ß«ñÑαª¿Γ Γáí½¿µπ ß
  1598. 32 íá⌐ΓἿ (¡áºδóáѼδ⌐ óσ«ñ«¼ ¬áΓὫúá) ñ½∩ ¬áªñ«ú« Σá⌐½á ó  ¬áΓὫ-
  1599. úÑ. éσ«ñ ¬áΓὫúá ß«ñÑαª¿Γ ¿¼∩ Σá⌐½á, αẼÑαδ, ñáΓπ ¼«ñ¿Σ¿¬áµ¿¿ Σá⌐-
  1600. ½á ¿ »Ñαóδ⌐ ¡«¼Ñα ¬½áßΓÑαá.  äαπú¿Ñ ¬áΓὫú¿ ¿ß»«½∞ºπεΓ ΓÑ ªÑ  ßá¼δÑ
  1601. ¼ÑΓ«ñδ αáß»αÑñѽѡ¿∩, ¬á¬ «íδτ¡δÑ Σá⌐½δ.
  1602.  
  1603.                 2.3.1 çáó¿ß¿¼«ßΓ∞ «Γ ¡«¼Ñαá ¬½áßΓÑαá
  1604.  
  1605.    æΓá¡ñáαΓ¡δÑ ¿¡ßΓαπ¼Ñ¡Γá½∞¡δÑ  ßαÑñßΓóá  äÄæÇ  ¡Ñ  αáºαÑΦáεΓ  »«¬-
  1606. ½áßΓÑα¡δ⌐ ¬«¡Γα«½∞ Σá⌐½«ó,  ΓᬠτΓ« φΓá ¿¡Σ«α¼áµ¿∩  ¼«ªÑΓ  ¿ß»«½∞º«-
  1607. óáΓ∞ß∩ τΓ«íδ ¬«ñ¿α«óáΓ∞ ¿º«íαáªÑ¡¿Ñ »α«úαá¼¼δ ¿/¿½¿ ñá¡¡δσ.  æΓáαΓ«-
  1608. óδ⌐ ¡«¼Ñαá ¬½áßΓÑαá Σá⌐½á ¼«ªÑΓ íδΓ∞  »«½πτÑ¡  CP/M-«íαẫ¼,  óδºóáó
  1609. »αÑαδóá¡¿Ñ 11h ( FindFirst τÑαѺ FCB). (é맮óδ CP/M ¼«úπΓ ß¬αδóáΓ∞ß∩
  1610. «Γ í«½∞Φ¿¡ßΓóá ¡áí½εñáΓѽÑ⌐ óδ»«½¡Ñ¡¿Ñ¼  ñá½∞¡«ú«  ó맮óá  ¬  áñαÑßπ
  1611.  
  1612.                                 - 25 -
  1613. 0:0C0h  ß  ¬«ñ«¼  Σπ¡¬µ¿¿ ó CL ó¼ÑßΓ« AL).  éδ∩ߡѡ¿Ñ ñαπú¿σ ¡«¼Ñα«ó
  1614. ¬½áßΓÑα«ó ΓαÑíπÑΓ »α«ß¼«Γαá FAT (æ¼. »α¿¼Ñα ó Åα¿½«ªÑ¡¿¿ C).
  1615.  
  1616.      2.3.2 ìѿ߻«½∞ºπѼδÑ (ºáαѺÑαó¿α«óá¡¡δÑ) ñ¿ß¬«óδÑ «í½áßΓ¿
  1617.  
  1618.    é ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿, ¿¼ÑÑΓß∩ Γ«½∞¬« «ñ¡á Γá¬á∩ «í½áßΓ∞ »« ß¼ÑΘÑ¡¿ε
  1619. 0Ch  óσ«ñá  ¬áΓὫúá (ñ½¿¡«⌐ 10 íá⌐Γ«ó).  è ß«ªá½Ñ¡¿ε ,  φΓá «í½áßΓ∞
  1620. τáßΓ« ¿ß»«½∞ºπÑΓß∩ "DOS-ß«ó¼ÑßΓ¿¼δ⌐" «»Ñαᵿ«¡¡δ¼¿ ß¿ßΓѼἿ. ìá»α¿-
  1621. ¼Ñα,  Digital  Research  DOS ¿ß»«½∞ºπÑΓ φΓ« »«½Ñ ñ½∩ σαá¡Ñ¡¿∩ »áα«½∩
  1622. Σá⌐½á,  PC-MOS/386 (Software Liks)  ºá»«¼¿¡áÑΓ  ºñÑß∞  ¿ñÑ¡Γ¿Σ¿¬áΓ«α
  1623. ó½áñѽ∞µá Σá⌐½á, »αáóá ñ«ßΓπ»á ¿ ñáΓπ/óαѼ∩ ß«ºñá¡¿∩.
  1624.    äαπúá∩ ºáαѺÑαó¿α«óá¡¡á∩ «í½áßΓ∞,  ¬«Γ«αá∩ ¼«ªÑΓ ßπΘÑßΓó«óáΓ∞  ¡á
  1625. ñ¿ß¬Ñ,  ∩ó½∩ÑΓß∩ «ßΓáΓ¬«¼ »«ß½Ññ¡Ñú« ßÑ¬Γ«αá ó FAT 1, ¬«Γ«αδ⌐ ß«σαá-
  1626. ¡∩ÑΓß∩ DOS (¿ ñáªÑ ¬«»¿απÑΓß∩ ó« óßÑ ñαπú¿Ñ ¬«»¿¿ FAT).
  1627.  
  1628.        2.3.3 ìѿ߻«½∞ºπѼδÑ («¬απú½Ñ¡¡δÑ ñ« αẼÑαá ¬½áßΓÑαá)
  1629.                           ñ¿ß¬«óδÑ «í½áßΓ¿
  1630.  
  1631.    Æ.¬. DOS  αáß»αÑñѽ∩ÑΓ ñ¿ß¬«ó«Ñ »α«ßΓαá¡ßΓó« ó ¬½áßΓÑαáσ (¬«Γ«αδÑ
  1632. ß«ñÑαªáΓ 2^N ßÑ¬Γ«α«ó),  ó Γ« óαѼ∩ ¬á¬ αẼÑα  Σá⌐½á  ¿º¼Ñα∩ÑΓß∩  ó
  1633. íá⌐Γáσ,  í«½∞Φ¿¡ßΓó« Σá⌐½«ó ¿¼ÑÑΓ ¡Ñ¿ß»«½∞ºπÑ¼δ¼ (¿ «íδτ¡« ¡Ñó¿ñ¿¼δ⌐
  1634. ¡á πα«ó¡Ñ Σá⌐½«ó«⌐ ß¿ßΓѼδ) σó«ßΓ,  ¬«Γ«αδ⌐ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩
  1635. µÑ½Ñ⌐  ºáΘ¿Γδ.  èπα∞Ѻ¡á∩ «Φ¿í¬á ó DOS,  ¬«Γ«αá∩ αáºαÑΦáÑΓ πßΓá¡«ó¬π
  1636. (Σπ¡¬µ¿∩ DOS 42h) ºá ¬«¡µ«¼ Σá⌐½á,  ñѽáÑΓ  ñ«ßΓπ»  ¬  φΓ«¼π  σó«ßΓπ
  1637. »α«ßΓδ¼ ñáªÑ ¿º ∩ºδ¬«ó óδß«¬«ú« πα«ó¡∩ (æ¼. Åα¿½«ªÑ¡¿Ñ D).
  1638.  
  1639.         3. æ¿ßΓѼᠺáΘ¿Γδ ¡á «ß¡«ó¡«⌐  »½áΓÑ ¿ ß¿ßΓѼѠBIOS
  1640.  
  1641.    äαπúá∩ τáßΓ∞ PC, ¬«Γ«αá∩, ¡áα∩ñπ ß ñ¿ß¬ÑΓ«⌐ ¿ ªÑßΓ¬¿¼ ñ¿ß¬«¼, ∩ó-
  1642. ½∩ÑΓß∩ óßÑúñá ñ«ßΓπ»¡«⌐ ñ½∩ ºáΘ¿Γδ «Γ ¬«»¿α«óá¡¿∩ - «ß¡«ó¡á∩  »½áΓá.
  1643. ò«Γ∩ «ß¡«ó¡δÑ »½áΓδ ΓÑ»Ñα∞ »α«¿ºó«ñ∩Γß∩ ó Γδß∩τἿ, »«τΓ¿ ¬áªñδá∩ ¿º
  1644. ¿σ ¿¼ÑÑΓ (¿½¿ ¼«ªÑΓ »α¿«íαÑßΓ¿) ¿¡ñ¿ó¿ñπá½∞¡δÑ ¬áτÑßΓóá.
  1645.  
  1646.                   3.1 æ»«ß«í, «ß¡«óá¡¡δ⌐ ¡á ñá¡¡δσ
  1647.  
  1648.    èáªñá∩ «ß¡«ó¡á∩ »½áΓá ¿¼ÑÑΓ ß«íßΓóÑ¡¡δ⌐ BIOS.  Æá¬ τΓ« φΓ«  ¼«ªÑΓ
  1649. ¿ß»«½∞º«óáΓ∞ß∩  ñ½∩  ºáΘ¿Γδ  ¬«»¿¿ ,  σ«Γ∩ ¼δ αѬ«¼Ñ¡ñπѼ φΓ« »αѪñÑ
  1650. óßÑú« ñ½∩ »α«¿ºó«ñ¿ΓѽÑ⌐ á»»áαáΓ¡δσ ßαÑñßΓó,  á ¡Ñ  ñ½∩  ¡Ñºáó¿ß¿¼δσ
  1651. αáºαáí«Γτ¿¬«ó »α«úαá¼¼¡«ú« «íÑß»ÑτÑ¡¿∩.  (Æá¬, ¡áτ¿¡¬á BIOS ß«ñÑনΓ
  1652. ¼¡«ú« ¡Ñ«»¿ßá¡¡δσ Σπ¡¬µ¿⌐ ¿ Γáí½¿µ,  ¿ñÑ¡Γ¿Σ¿¬áµ¿∩ ¬«Γ«αδσ ¼«ªÑΓ ∩ó-
  1653. ½∩Γ∞ß∩ ó¿ñ«¼ ºáΘ¿Γδ «Γ ¬«»¿α«óá¡¿∩).
  1654.    äαπúá∩ «í½áßΓ∞ ñá¡¡δσ ñ«ßΓπ»¡á∩ ¡á «ß¡«ó¡δσ »½áΓáσ -
  1655. φ¡Ñαú«¡Ñºáó¿ß¿¼á∩ »á¼∩Γ∞ CMOS, ¬«Γ«αá∩, ¬á¬ »αá󿽫 ¿¼ÑÑΓ ¼¡«ú«
  1656. («¬«½« 6) ¡Ñ¿ß»«½∞ºπѼ«ú« »α«ßΓαá¡ßΓóá. ìѬ«Γ«αδÑ
  1657. ó¿ñδ τ¿»«ó (¡á»α¿¼Ñα,  ¿º C&T) ¼«úπΓ «Γ«íαáªáΓ∞ τáßΓ∞ »á¼∩Γ¿ CMOS  ó
  1658. áñαÑß¡«¼ »α«ßΓαá¡ßΓóÑ ß¿ßΓѼ¡«ú« Äçô,  Γᬿ¼ «íαẫ¼, ß«ºñáóá∩ »«∩ó-
  1659. ½Ñ¡¿Ñ "»α«úαá¼¼, »ÑαÑ»α«úαá¼¼¿απεΘ¿σ ROM BIOS".
  1660.  
  1661.                  3.2 æ»«ß«í, «ß¡«óá¡¡δ⌐ ¡á óαѼѡ¿
  1662.  
  1663.    ü«½ÑÑ ¿¡ΓÑαÑß¡δÑ  ¼ÑΓ¬¿  ºáΘ¿Γδ - «ß¡«óá¡¡δ⌐ ¡á «»αÑñѽѡ¿¿ ó¡πΓ-
  1664. αÑ¡¡Ñú« óαѼѡ¿ «ß¡«ó¡«⌐ »½áΓδ. Æα¿ «ß¡«ó¡δσ »«ñß¿ßΓѼδ ñ«ßΓπ»¡δ ñ½∩
  1665. Γá¬¿σ ¿º¼ÑαÑ¡¿⌐:  ûÅ, »á¼∩Γ∞ ¿ óó«ñ/óδó«ñ (ß¼. Åα¿½«ªÑ¡¿Ñ E). Éẽ¿-
  1666.  
  1667.     Æáí½¿µá 3.2. îÑΓ¬¿ «ß¡«ó¡«⌐ »½áΓδ ¡á τÑΓδαÑσ αẽ¿τ¡δσ ¥éî.
  1668.   ┌─────────────────────┬────────────┬─────────────┬───────────┐
  1669.   │      æ¿ßΓѼᠠ      │     ûÅ     │   Åá¼∩Γ∞    │  éó./óδó. │
  1670.   ├─────────────────────┼────────────┼─────────────┼───────────┤
  1671.   │ 25 îâµ 80386 (A)    │   35972    │    24576    │    47292  │
  1672.   │ 25 îâµ 80386 (B)    │   35972    │    24576    │    49154  │
  1673.   │ 20 îâµ 80386        │   44958    │    30112    │    59990  │
  1674.   │ 12 îâµ 80286        │    3544    │    41018    │    46646  │
  1675.   └─────────────────────┴────────────┴─────────────┴───────────┘
  1676.  
  1677.                                 - 26 -
  1678.  
  1679. τ¿∩ ¼«úπΓ íδΓ∞ πñ¿ó¿Γѽ∞¡« í«½∞Φ¿¼¿ (ß¼. Γáí½¿µπ 3.2).
  1680.    ç¡áτÑ¡¿∩, »«¬áºá¡¡δÑ  ó Γáí½¿µÑ 3.2,  ßαÑñ¡¿Ñ ñ½∩ ¼¡«ú¿σ ºá»π߬«ó
  1681. »α«úαá¼¼δ ¿º Åα¿½«ªÑ¡¿∩ E.  öá¬Γ¿τÑ߬¿Ñ º¡áτÑ¡¿∩ «Γ½¿τáεΓß∩ «Γ ßαÑñ-
  1682. ¡Ñú« »α¿í½¿º¿Γѽ∞¡« ±4. æ¿ßΓѼδ (A) ¿ (B) ¿¼Ñ½¿ ñóá »«ß½Ññ«óáΓѽ∞¡δσ
  1683. ºáó«ñ߬¿σ ¡«¼Ñαá,  ¡« ÑΘÑ ¼«úπΓ ½Ñú¬« «Γ½¿τáΓ∞ß∩ ¼ÑΓ¬«⌐ óó«ñá/óδó«ñá
  1684. (»«αΓ 0Ch,  ¿ß»«½∞º«óá½ß∩ 1-δ⌐ ¬«¡Γα«½½Ñα DMA). ìÑ«íσ«ñ¿¼« ΓᬪѠ«Γ-
  1685. ¼ÑΓ¿Γ∞, τΓ« ¼ÑΓ¬á óó«ñá/óδó«ñá «τÑ¡∞ τπóßΓó¿Γѽ∞¡á ¬ αѪ¿¼π ñÑ⌐ßΓó¿∩
  1686. ûÅ,  ó Γ« óαѼ∩, ¬á¬ ¼ÑΓ¬¿ ûÅ ¿ »á¼∩Γ¿ »«τΓ¿ «ñ¿¡á¬«óδ ó «í«¿σ αѪ¿-
  1687. ¼áσ.
  1688.  
  1689.               4. Åα¿½«ªÑ¡¿Ñ A. Åα«ßΓá∩ »α«úαá¼¼á 8272A
  1690.  
  1691.    ÆÑ¬ßΓ »α«úαá¼¼δ ¡áσ«ñ¿Γß∩ ó test_fdc.c.  ä½∩ ¬«¼»¿½∩µ¿¿ ΓαÑíπÑΓß∩
  1692. Æπαí«-æ 2.0 ¿ Æπαí« ÇßßѼí½Ñα (½εíá∩ óÑαß¿∩). î¿¡¿¼á½∞¡δÑ á»»áαáΓ¡δÑ
  1693. ßαÑñßΓóá,  ΓαÑíπѼδÑ τΓ«íδ óδ»«½¡¿Γ∞ φëà»α¿¼Ñα - 8  îâµ/0  WS  ¥éî
  1694. 80286  «í«απñ«óá¡¡á∩,  »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ,  «ñ¡¿¼ ñ¿ß¬«ó«ñ«¼ ñ½∩ ú¿í¬¿σ
  1695. ñ¿ß¬ÑΓ, »α¿ó«ñ ñ½∩ óδ»«½¡Ñ¡¿∩ ΓÑßΓá «»αÑñѽ∩ÑΓß∩ »áαá¼ÑΓα«¼ »α«úαá¼-
  1696. ¼δ  (0 ñ½∩ A:,  1 ñ½∩ B:).  ¥Γ«Γ ΓÑßΓ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ¡á óΓ«α«¼
  1697. FDC,  τΓ« «íÑß»Ñτ¿óáΓ∞ß∩ ºá¼Ñ¡«⌐ FDC_BASE ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ¡á 0x370.
  1698. 諼á¡ñá  'T'  ¬«¼á¡ñá  (á¡á½¿º¿α«óáΓ∞ ñ«α«ª¬π) íπñÑΓ αáí«ΓáΓ∞ ¡Ñ»αá-
  1699. ó¿½∞¡« ß ñ¿ß¬«ó«ñἿ ¡á 300 «í«α«Γ«ó ó ¼¿¡πΓπ  (360K,  720K,  1.44M)
  1700. »«¬á  REVOLUTION_TIME  ó ¿ßΓ«τ¡¿¬Ñ »α«úαá¼¼δ ¡Ñ ¡Ñ íπñÑΓ ºá¼Ñ¡Ñ¡á ¡á
  1701. 200L*2*1193 (¡« Γ«úñá «¡á íπñÑΓ αáí«ΓáΓ∞ ¡Ñ»αáó¿½∞¡« ß 1.2M ñ¿ß¬«ó«-
  1702. ñἿ).
  1703.  
  1704. #if ! defined( __TURBOC__ )
  1705. #error Åα«úαἼᠿ߻«½∞ºπÑΓ Turbo C 2.00 ß ó¡πΓαÑ¡¡¿¼ áßѼí½Ñα«¼!
  1706. #else
  1707. #pragma inline
  1708. #endif
  1709. #if ! defined( __SMALL__ )
  1710. #error è«¼»¿½¿α«óáΓ∞ ¡á ¼«ñѽ¿ Small!
  1711. #endif
  1712. #include <stdio.h>
  1713. #include <dos.h>
  1714. #include <bios.h>
  1715. #include <limits.h>
  1716. #include <stdlib.h>
  1717. #include <ctype.h>
  1718. #include <setjmp.h>
  1719. #include <string.h>
  1720. #include <io.h>
  1721. #include <fcntl.h>
  1722. #include <mem.h>
  1723. /*
  1724.  * FDC_BASE óδí¿αáÑΓ ¡«¼Ñα ¬«¡Γα«½½Ñαá.
  1725.  * 0x3F0 ñ½∩ »Ñαó«ú« FDC, 0x370 ñ½∩ óΓ«α«ú« FDC.
  1726.  */
  1727. #define FDC_BASE        0x3F0
  1728. #define FDC_MSR         (FDC_BASE+4)
  1729. #define FDC_DATA        (FDC_BASE+5)
  1730. #define FDC_DIGITAL     (FDC_BASE+2)
  1731. #define FDC_RATE        (FDC_BASE+7)
  1732. /*
  1733.  * RATE_??? ñ«½ªÑ¡ íδΓ∞ πßΓá¡«ó½Ñ¡ »« FDC_RATE ñ½∩  óδí«αá  º¡áτÑ¡¿∩
  1734.    WR CLK . */
  1735. #define RATE_250        2
  1736. #define RATE_300        1
  1737. #define RATE_500        0
  1738.  
  1739. /*
  1740.  *  æ½ÑñπεΘ¿Ñ «»αÑñѽѡ¿∩ «»¿ßδóáεΓ Σ«α¼áΓ αÑú¿ßΓαá ß«ßΓ«∩¡¿∩ 8272A.
  1741.  
  1742.                                 - 27 -
  1743.  */
  1744. typedef struct        {
  1745.         unsigned        ds : 2 ;        /* éδí«α »α¿ó«ñá        */
  1746.         unsigned        h  : 1 ;        /* éδí«α ú«½«ó¬¿        */
  1747.         unsigned        nr : 1 ;        /* ìÑ ú«Γ«ó             */
  1748.         unsigned        ec : 1 ;        /* Åα«óÑα¬á «í«απñ«óá¡¿∩*/
  1749.         unsigned        se : 1 ;        /* ôßΓá¡«ó¬á ºá¬«¡τѡᠠ*/
  1750.         unsigned        ic : 2 ;        /* è«ñ »αÑαδóá¡¿∩       */
  1751.         } ST0 ;
  1752.  
  1753. typedef struct        {
  1754.         unsigned        ma : 1 ;        /* ìÑΓ áñαÑß¡«⌐ ¼ÑΓ¬¿   */
  1755.         unsigned        nw : 1 ;        /* çáΘ¿Γᠺỿ߿        */
  1756.         unsigned        nd : 1 ;        /* æÑ¬Γ«α ¡Ñ ¡á⌐ñÑ¡     */
  1757.         unsigned        _1 : 1 ;
  1758.         unsigned        or : 1 ;        /* ÄΦ¿í¬á »ÑαÑ»«½¡Ñ¡¿∩  */
  1759.         unsigned        de : 1 ;        /* ÄΦ¿í¬á ñá¡¡δσ        */
  1760.         unsigned        _2 : 1 ;
  1761.         unsigned        en : 1 ;        /* ÄΦ¿í¬á ¬«¡µá ñ«α«ª¬¿ */
  1762.         } ST1 ;
  1763.  
  1764. typedef struct        {
  1765.         unsigned        md : 1 ;        /* ìÑΓ áñαÑß¡«⌐ ¼ÑΓ¬¿   */
  1766.         unsigned        bc : 1 ;        /* Å½«σá∩ ñ«α«ª¬á       */
  1767.         unsigned        sn : 1 ;        /*æ¬á¡¿α«óá¡¿Ñ ¡Ñ πß»ÑΦ¡«*/
  1768.         unsigned        sh : 1 ;        /* æ¬á¡¿α«óá¡¿Ñ πß»ÑΦ¡« */
  1769.         unsigned        wc : 1 ;        /* ìÑóÑα¡δ⌐ µ¿½¿¡ñα     */
  1770.         unsigned        dd : 1 ;        /* ÄΦ¿í¬á ñá¡¡δσ ßÑ¬Γ«αá*/
  1771.         unsigned        cm : 1 ;        /* è«¡Γα«½∞¡á∩ ¼ÑΓ¬á    */
  1772.         unsigned        _1 : 1 ;
  1773.         } ST2 ;
  1774.  
  1775. typedef struct        {
  1776.         unsigned        ds : 2 ;        /* éδí«α »α¿ó«ñá        */
  1777.         unsigned        h  : 1 ;        /* éδí«α ú«½«ó¬¿        */
  1778.         unsigned        ts : 1 ;        /* äóπσßΓ«α«¡¡∩∩        */
  1779.         unsigned        t0 : 1 ;        /* ä«α«ª¬á 00           */
  1780.         unsigned        rdy: 1 ;        /* â«Γ«ó                */
  1781.         unsigned        wp : 1 ;        /* çáΘ¿Γᠺỿ߿        */
  1782.         unsigned        ft : 1 ;        /* ìѿ߻αáó¡«ßΓ∞        */
  1783.         } ST3 ;
  1784.  
  1785. /*
  1786.  *      FDC_MSR fields
  1787.  */
  1788. typedef struct        {
  1789.         unsigned        A_buzy : 1 ;
  1790.         unsigned        B_buzy : 1 ;
  1791.         unsigned        C_buzy : 1 ;
  1792.         unsigned        D_buzy : 1 ;
  1793.         unsigned        cb : 1 ;        /* è«Γ¡Γα«½½Ñα ºá¡∩Γ    */
  1794.         unsigned        ndm : 1 ;       /* ÉѪ¿¼ ¡Ñ-DMA         */
  1795.         unsigned        dio : 1 ;       /* ìá»αáó½Ñ¡¿∩ I/O      */
  1796.         unsigned        rqm : 1 ;       /* ÆαÑíπÑΓß∩ ñ½∩ ¼áßΓÑαá*/
  1797.         } STATE ;
  1798. /*
  1799.  *      Åáαá¼ÑΓαδ óδíαá¡¡«⌐ ¬«¼á¡ñδ.
  1800.  */
  1801. typedef struct        {
  1802.         unsigned        hut : 4 ;       /*éαѼ∩ óδúαπº¬¿ ú«½«ó¬¿*/
  1803.         unsigned        srt : 4 ;       /* ôα«óÑ¡∞ Φáúá         */
  1804.         unsigned        nd  : 1 ;       /* ¡Ñ-DMA               */
  1805.         unsigned        hlt : 7 ;       /*éαѼ∩ ºáúαπº¬¿ ú«½«ó¬¿*/
  1806.  
  1807.                                 - 28 -
  1808.         } SPECIFY ;
  1809.  
  1810. /*
  1811.  *      ü½«¬ »áαá¼ÑΓα«ó ñ¿ß¬ÑΓδ BIOS, áñαÑßπѼδ⌐ óÑ¬Γ«α«¼ 1Eh.
  1812.  */
  1813. typedef struct        {
  1814.         SPECIFY specify ;
  1815.         char    motor_wait ;            /* 55-¼ß ¿¡¬αÑ¼Ñ¡δ      */
  1816.         char    sector_size ;           /* ä½¿¡á ¬«ñá           */
  1817.         char    EOT ;
  1818.         char    GAP1 ;                  /* ºá»¿ß∞/τΓÑ¡¿Ñ        */
  1819.         char    DTL ;                   /* FFh                  */
  1820.         char    GAP2 ;                  /* Σ«α¼áΓ               */
  1821.         char    fill_char ;             /* Σ«α¼áΓ               */
  1822.         char    head_settle ;           /* ¼ß                   */
  1823.         char    motor_startup ;         /* 1/8 ßѬ.             */
  1824.         } BIOS_DISK ;
  1825.  
  1826. /*
  1827.  *      Åáαá¼ÑΓαδ «»Ñαᵿ⌐ τΓÑ¡¿∩/ºá»¿ß¿ 8272A
  1828.  */
  1829. typedef struct        {
  1830.         char        c ;
  1831.         char        h ;
  1832.         char        r ;
  1833.         char        n ;
  1834.         char        eot ;
  1835.         char        gpl ;
  1836.         char        dtl ;
  1837.         } RW_INPUT ;
  1838.  
  1839. /*
  1840.  *      Æ¿¬«ó ñ« ó䬽ετÑ¡¿∩ ¼«Γ«αá »α¿ó«ñá
  1841.  */
  1842. #define MOTOR_COUNT     (*(unsigned char far *)MK_FP(0,0x440))
  1843.  
  1844. /*
  1845.  *      write_data() and read_data() »¿ΦÑΓ/τ¿ΓáÑΓ ñá¡¡δÑ 8272A
  1846.  */
  1847.  
  1848. #define write_data(x)                \
  1849.         {\
  1850.         while( ( inportb( FDC_MSR ) & 0xc0 ) != 0x80 ) ;\
  1851.         outportb( FDC_DATA, (x) ) ;\
  1852.         }
  1853.  
  1854. #define read_data(x)               \
  1855.         {\
  1856.         while( ( inportb( FDC_MSR ) & 0xc0 ) != 0xc0 ) ;\
  1857.         (x) = inportb( FDC_DATA ) ;\
  1858.         }
  1859.  
  1860. /*
  1861.  *      Ä»αÑñѽѡ¿Ñ LOOK_TIME αáºαÑΦÑ¡¿Ñ óαѼѡ¿ ¿ß»«½¡Ñ¡¿∩ ¬«¼á¡ñ
  1862.  *      8272A.
  1863.  */
  1864. #define LOOK_TIME
  1865.  
  1866. /*
  1867.  * Ä»αÑñѽѡ¿Ñ HANG_ABORT αáºαÑΦÑ¡¿Ñ ªÑßΓ¬«ú« ºáóÑαΦÑ¡¿∩ »α«µÑñπαδ
  1868.  * »«ß½Ñ ABORT_WAIT Γ¿¬«ó ß¿ßΓѼ¡«ú« Γá⌐¼Ñαá.
  1869.  */
  1870. #define HANG_ABORT
  1871.  
  1872.                                 - 29 -
  1873.  
  1874. #ifdef        LOOK_TIME
  1875.         #define START   start_time = get_exact_time()
  1876.         #define END     elapsed_time = get_exact_time() - start_time
  1877. #else
  1878.         #define START
  1879.         #define END
  1880. #endif
  1881.  
  1882. #ifdef        HANG_ABORT
  1883.         #define HANG_START(x)   hang_start(x)
  1884.         #define HANG_END        hang_end()
  1885. #else
  1886.         #define HANG_START(x)
  1887.         #define HANG_END
  1888. #endif
  1889.  
  1890. char    FDD     = 0 ;                   /*쫼Ñα ΓѬπΘÑú« »α¿ó«ñá*/
  1891.  
  1892. #define ABORT_WAIT        (2*16)        /* Ä¬«½« 2 ßѬ.         */
  1893.  
  1894. #define BUFFER_SIZE        (32*1024)
  1895.  
  1896. #define MAX_SECTORS        40
  1897.  
  1898. /*
  1899.  *      REVOLUTION_TIME πßΓá¡«ó½Ñ¡á ñ½∩ 1.2 Mb AT HD »α¿ó«ñá.
  1900.  *      ä½∩ óßÑσ «ßΓá½∞¡δσ »α¿ó«ñ«ó ¼Ñ¡∩ÑΓß∩ «Γ 166L ñ« 200L
  1901.  */
  1902. #define REVOLUTION_TIME (166L*2*1193)
  1903.  
  1904. BIOS_DISK        far        *bios_disk ;
  1905. union        {        char        c ;        ST0        x ;  } st0 ;
  1906. union        {        char        c ;        ST1        x ;  } st1 ;
  1907. union        {        char        c ;        ST2        x ;  } st2 ;
  1908. union        {        char        c ;        ST3        x ;  } st3 ;
  1909. unsigned char   r_c ;        /* # µ¿½¿¡ñαá ¿º »αÑñδñπΘÑ⌐ «»Ñαᵿ¿ */
  1910. unsigned char   r_h ;                /* â«½«ó¬á ...               */
  1911. unsigned char   r_r ;                /* æÑ¬Γ«α ...                */
  1912. unsigned char   r_n ;                /* ÉẼÑα ¬«ñá ßÑ¬Γ«αá       */
  1913. unsigned long        start_time ;
  1914. unsigned long        elapsed_time ;
  1915. unsigned char   *buffer ;
  1916. unsigned        buffer_bytes = 0 ;
  1917. volatile unsigned long bios_time = 0 ;
  1918. jmp_buf         hang_reset ;
  1919. char                *current_function ;
  1920. unsigned        rest_ticks ;            /* ä« »αѬαáΘÑ¡¿∩         */
  1921. char                abort_on_hangup ;
  1922. FILE                *out ;
  1923. unsigned char   mfm = 0x40 ;            /* 0 ñ½∩ FM, 0x40 ñ½∩ MFM */
  1924.  
  1925. void        interrupt        (*old_int_0eh)( void ) ;
  1926. void        interrupt        (*old_int_08h)( void ) ;
  1927.  
  1928. /*
  1929.  * get_exact_time() ó«ºóαáΘáÑΓ 32-í¿Γ«ó«Ñ óαѼ∩ »«ß½Ñ »π߬ᠻα«úαá¼-
  1930.  * ¼δ. ä½∩ »ÑαÑó«ñá ó ßѬπ¡ñδ ñѽ¿Γ∞ ¡á 2,386,360.
  1931.  */
  1932. static        unsigned        long
  1933. get_exact_time( void )
  1934. {
  1935. asm        pushf
  1936.  
  1937.                                 - 30 -
  1938. asm        sti
  1939. asm        jmp        $+2
  1940. asm        cli
  1941. asm        mov        al, 0c2h
  1942. asm        out        43h, al
  1943. asm        jmp        $+2
  1944. asm        jmp        $+2
  1945. asm        in        al, 40h
  1946. asm        mov        bl, al         /* üá⌐Γ ßτÑΓτ¿¬á ß«ßΓ«∩¡¿∩   */
  1947. asm        jmp        $+2
  1948. asm        jmp        $+2
  1949. asm        in        al, 40h
  1950. asm        mov        ah, al
  1951. asm        jmp        $+2
  1952. asm        jmp        $+2
  1953. asm        in        al, 40h
  1954. asm        xchg        ah, al
  1955. asm        neg        ax
  1956. asm     mov     dx, word ptr bios_time
  1957. asm     rcl     bl, 1
  1958. asm     cmc
  1959. asm     rcl     dx, 1
  1960. asm        popf
  1961. return( ( (unsigned long)_DX << 16 ) + _AX ) ;
  1962. }
  1963.  
  1964. void interrupt
  1965. int_0eh( void )
  1966. {
  1967. /*
  1968.  *      ¥Γ« ¡¿¬«úñá ¡Ñ ñ«½ª¡« »α«¿º«⌐Γ¿!
  1969.  */
  1970. outportb( 0x20, 0x20 ) ;
  1971. printf( "ìÑ«»αÑñѽѡ¡«Ñ »αÑαδóá¡¿Ñ FDC!\n" ) ;
  1972. }
  1973.  
  1974. void
  1975. report_st0( void )
  1976. {
  1977. printf( "Åα¿ó«ñ %c, ú«½«ó¬á %d :\n", 'A' + st0.x.ds, st0.x.h ) ;
  1978. switch( st0.x.ic ){
  1979.         case 0: break ;
  1980.         case 1:
  1981.                 printf( "ìÑ¡«α¼á½∞¡«Ñ ºáóÑαΦÑ¡¿Ñ «»Ñαᵿ¿\n" ) ;
  1982.                 break ;
  1983.         case 2:
  1984.                 printf( "ìÑóÑα¡á∩ ¬«¼á¡ñá\n" ) ;
  1985.                 break ;
  1986.         case 3:
  1987.                 printf( "꺼ѡ¿½«ß∞ πß½«ó¿Ñ ú«Γ«ó¡«ßΓ¿ ñ¿ß¬á\n" ) ;
  1988.                 break ;
  1989.         }
  1990. if( st0.x.se )
  1991.         printf( "ôßΓá¡«ó¬á ºáóÑαΦÑ¡á\n" ) ;
  1992. if( st0.x.ec )
  1993.         printf( "Å«½«¼¬á »α¿ó«ñá\n" ) ;
  1994. if( st0.x.nr )
  1995.         printf("Åα¿ó«ñ ¡Ñ ú«Γ«ó ¿½¿ óδí«α ú«½«ó¬¿ 1 ¡á «ñ¡«ßΓ«α«¡¡Ñ¼
  1996.                »α¿ó«ñÑ\n");
  1997. }
  1998.  
  1999. void
  2000. hang_start( char *f )
  2001.  
  2002.                                 - 31 -
  2003. {
  2004. current_function = f ;
  2005. rest_ticks = ABORT_WAIT ;
  2006. abort_on_hangup = 1 ;
  2007. }
  2008.  
  2009. void
  2010. hang_end( void )
  2011. {
  2012. abort_on_hangup = 0 ;
  2013. }
  2014.  
  2015. void
  2016. install_fdc_driver( void )
  2017. {
  2018. _AH = 0 ; _DL = FDD ;
  2019. geninterrupt( 0x13 ) ;                        /* æíα«ß ñ¿ß¬á BIOS */
  2020. delay( 500 ) ;
  2021. disable() ;
  2022. bios_time = biostime( 0, 0 ) ;
  2023. old_int_0eh = getvect( 0x0e ) ;
  2024. old_int_08h = getvect( 0x08 ) ;
  2025. outportb( 0x21, inportb( 0x21 ) | 0x40 ) ;   /* çá»αÑΓ »αÑαδóá¡¿∩ */
  2026. setvect( 0x0e, int_0eh ) ;
  2027. asm        mov        dx, offset int_08h_routine
  2028. asm        push        ds
  2029. asm        mov        ax, cs
  2030. asm        mov        ds, ax
  2031. asm        mov        ax, 02508h
  2032. asm        int        21h
  2033. asm        pop        ds
  2034. bios_disk = (void far *) getvect( 0x1e ) ;
  2035. enable() ;
  2036. asm        jmp        exit
  2037.  
  2038. asm int_08h_routine label near
  2039. asm        extrn        DGROUP@:word
  2040. asm        push        ax
  2041. asm        push        ds
  2042. asm        mov        ds, cs:DGROUP@
  2043. asm        add        word ptr bios_time, 1
  2044. asm        adc        word ptr bios_time + 2, 0
  2045. asm        push        ds
  2046. asm        mov        ax, 40h
  2047. asm        mov        ds, ax
  2048. asm        mov        byte ptr ds:[40h], 0ffh
  2049. asm        pop        ds
  2050. asm        mov        al, 20h
  2051. asm        out        20h, al
  2052. asm        cmp        abort_on_hangup, 0
  2053. asm        je        done
  2054. asm        dec        rest_ticks
  2055. asm        jg        done
  2056.         longjmp( hang_reset, -1 ) ;
  2057. done:;
  2058. asm        pop        ds
  2059. asm        pop        ax
  2060. asm        iret
  2061.  
  2062. exit:;
  2063. }
  2064.  
  2065. void
  2066.  
  2067.                                 - 32 -
  2068. specify( SPECIFY parms )
  2069. {
  2070. START ;
  2071. HANG_START( "Ä»αÑñѽ¿Γ∞" ) ;
  2072. parms.nd = 1 ;
  2073. write_data( 0x03 ) ;
  2074. write_data( *(char *)&parms ) ;
  2075. write_data( *((char *)&parms + 1 ) ) ;
  2076. HANG_END ;
  2077. END ;
  2078. printf( "HUT = %d ms\n", parms.hut * 16 ) ;
  2079. printf( "HLT = %d ms\n", parms.hlt *  2 ) ;
  2080. printf( "SRT = %d ms\n", 16 - parms.srt ) ;
  2081. printf( "%sDMA mode\n", parms.nd ? "non-" : "" ) ;
  2082. }
  2083.  
  2084. void
  2085. sence_is( void )
  2086. {
  2087. write_data( 0x08 ) ;
  2088. read_data( st0.c ) ;
  2089. if( st0.c != 0x80 )                      /* ìÑóÑα¡á∩ ¬«¼á¡ñá     */
  2090.         read_data( r_c ) ;
  2091. }
  2092.  
  2093. void
  2094. wait_interrupt( void )
  2095. {
  2096. do      outportb( 0x20, 0x0a ) ;         /* ÆαÑíπÑΓß∩ 8259A IRR */
  2097. while( ( inportb( 0x20 ) & 0x40 ) != 0x40 ) ;
  2098. outportb( 0x20, 0x08 ) ;                /* æΓá¡ñáαΓ¡«Ñ ß«ßΓ«∩¡¿Ñ*/
  2099. }
  2100.  
  2101. int
  2102. recalibrate( void )
  2103. {
  2104. START ;
  2105. HANG_START( "ÅÑαѬ὿íα«ó¬á" ) ;
  2106. write_data( 0x07 ) ;
  2107. write_data( FDD ) ;
  2108. wait_interrupt() ;
  2109. do        sence_is() ;
  2110.         while( st0.x.se != 1 ) ;
  2111. HANG_END ;
  2112. END ;
  2113. if( ! st0.x.se || st0.x.ic != 0 )
  2114.         report_st0() ;
  2115. if( r_c == 0 )
  2116.         return 0 ;
  2117. return -1 ;
  2118. }
  2119.  
  2120. int
  2121. seek( unsigned char cyl )
  2122. {
  2123. START ;
  2124. HANG_START( "ôßΓá¡«ó¬á" ) ;
  2125. write_data( 0x0f ) ;
  2126. write_data( FDD ) ;
  2127. write_data( cyl ) ;
  2128. wait_interrupt() ;
  2129. do        sence_is() ;
  2130.         while( st0.x.se != 1 ) ;
  2131.  
  2132.                                 - 33 -
  2133. HANG_END ;
  2134. END ;
  2135. if( ! st0.x.se || st0.x.ic != 0 )
  2136.         report_st0() ;
  2137. if( r_c == cyl )
  2138.         return 0 ;
  2139. return -1 ;
  2140. }
  2141.  
  2142. void
  2143. start_operations( void )
  2144. {
  2145.         SPECIFY temp ;
  2146.  
  2147. temp = bios_disk->specify ;
  2148. temp.nd = 1 ;
  2149. MOTOR_COUNT = UCHAR_MAX - 1 ;
  2150. outportb( FDC_DIGITAL, FDD ) ;
  2151. delay( 1 ) ;
  2152. outportb( FDC_DIGITAL, 0x04 | FDD ) ;
  2153. delay( 1 ) ;
  2154. outportb( FDC_RATE, RATE_300 ) ;
  2155. specify( temp ) ;
  2156. outportb( FDC_DIGITAL, ( 0x10 << FDD ) | 0x0C | FDD ) ;
  2157. delay( bios_disk->motor_startup * 120 ) ;
  2158. }
  2159.  
  2160. void
  2161. reset_old_fdc( void )
  2162. {
  2163. setvect( 0x0e, old_int_0eh ) ;
  2164. setvect( 0x08, old_int_08h ) ;
  2165. outportb( 0x21, inportb( 0x21 ) & ~0x40 ) ;
  2166. biostime( 1, bios_time ) ;
  2167. MOTOR_COUNT = 1 ;
  2168. _AH = 0 ;
  2169. _DL = 0 ;
  2170. geninterrupt( 0x13 ) ;
  2171. }
  2172.  
  2173. void
  2174. read_ST3( void )
  2175. {
  2176. START ;
  2177. HANG_START( "read_ST3" ) ;
  2178. write_data( 0x04 ) ;
  2179. write_data( FDD ) ;
  2180. read_data( st3.c ) ;
  2181. HANG_END ;
  2182. END ;
  2183. }
  2184.  
  2185. /*
  2186.  *      Éáí«Γá ¬«¡Γα«½½Ñαá ó ¡Ñ-DMA αѪ¿¼Ñ «íß½πª¿óáÑΓß∩ ûÅ, »«φΓ«¼π
  2187.  *      read_operation,write_operation ¿ format_track ºá»αÑΘáεΓ »αÑ-
  2188.  *      αδóá¡¿∩ ¡á ñ½¿Γѽ∞¡«Ñ óαѼ∩. Åα«Φπ »α«ΘÑ¡¿∩.
  2189.  */
  2190. void
  2191. read_operation( int code, int head, RW_INPUT *param, char far *buf,
  2192. unsigned max_len )
  2193. {
  2194.         char        *p = (void *)param ;
  2195.         int        i = sizeof( RW_INPUT ) ;
  2196.  
  2197.                                 - 34 -
  2198.  
  2199. buffer_bytes = 0 ;
  2200. START ;
  2201. HANG_START( "«»Ñαᵿ∩ τΓÑ¡¿∩/ºá»¿ß¿" ) ;
  2202. /*
  2203.  *      Å«ß½áΓ∞ »áαá¼ÑΓα ¬«¼á¡ñδ w/ ó 8272A
  2204.  */
  2205. write_data( code ) ;
  2206. write_data( ( ( head & 1 ) << 2 ) | FDD ) ;
  2207. for( ; i > 0 ; i--, p++ ) write_data( *p ) ;
  2208. /*
  2209.  *      åñáΓ∞ ñ« ¡áτá½á Σáºδ ¿ß»«½¡Ñ¡¿∩
  2210.  */
  2211. while( !( inportb( FDC_MSR ) & 0x20 ) ) ;
  2212. disable() ;
  2213. /*
  2214.  *      ÉáºαÑΦÑ¡¿Ñ ¡á »ÑαÑñáτπ ñá¡¡δσ
  2215.  */
  2216. asm        mov        cx, max_len
  2217. asm        mov        dx, FDC_MSR
  2218. asm        les        di, buf
  2219. asm        xor        si, si
  2220. asm        mov        bx, 1+1
  2221. asm        cld
  2222. input_loop:
  2223. asm        in        al, dx
  2224. asm        test        al, 20h
  2225. asm        jz        exit
  2226. asm        test        al, 80h
  2227. asm        jz        input_loop
  2228. asm        inc        dx
  2229. asm        in        al, dx
  2230. asm        stosb
  2231. asm        inc        si
  2232. asm        dec        dx
  2233. asm        loop        input_loop
  2234. exit:;
  2235. enable() ;
  2236. asm        mov        buffer_bytes, si
  2237. /*
  2238.  *      åñáΓ∞ ¬«¡µá Σáºδ óδ»«½¡Ñ¡¿∩
  2239.  */
  2240. wait_interrupt() ;
  2241. /*
  2242.  *      ù¿ΓáΓ∞ αѺπ½∞ΓáΓ
  2243.  */
  2244. read_data( st0.c ) ;
  2245. read_data( st1.c ) ;
  2246. read_data( st2.c ) ;
  2247. read_data( r_c ) ;
  2248. read_data( r_h ) ;
  2249. read_data( r_r ) ;
  2250. read_data( r_n ) ;
  2251. HANG_END ;
  2252. END ;
  2253. }
  2254.  
  2255. void
  2256. write_operation( int code, int head, RW_INPUT *param, char far *buf,
  2257. unsigned max_len )
  2258. {
  2259.         char        *p = (void *)param ;
  2260.         int        i = sizeof( RW_INPUT ) ;
  2261.  
  2262.                                 - 35 -
  2263.  
  2264. buffer_bytes = 0 ;
  2265. START ;
  2266. HANG_START( "«»Ñαᵿ∩ τΓÑ¡¿∩/ºá»¿ß¿" ) ;
  2267. /*
  2268.  *      Å«ß½áΓ∞ »áαá¼ÑΓα ¬«¼á¡ñδ w/ ó 8272A
  2269.  */
  2270. write_data( code ) ;
  2271. write_data( ( ( head & 1 ) << 2 ) | FDD ) ;
  2272. for( ; i > 0 ; i--, p++ ) write_data( *p ) ;
  2273. /*
  2274.  *      åñáΓ∞ ñ« ¡áτá½á Σáºδ óδ»«½¡Ñ¡¿∩
  2275.  */
  2276. while( !( inportb( FDC_MSR ) & 0x20 ) ) ;
  2277. disable() ;
  2278. /*
  2279.  *      üδΓ∞ ú«Γ«óδ¼ »ÑαÑñáΓ∞ ñá¡¡δÑ
  2280.  */
  2281. asm        push        ds
  2282. asm        mov        cx, max_len
  2283. asm        mov        dx, FDC_MSR
  2284. asm        lds        si, buf
  2285. asm        xor        di, di
  2286. asm        cld
  2287. wait_start:
  2288. asm        in        al, dx
  2289. asm        test        al, 20h
  2290. asm        jz        wait_start
  2291.  
  2292. output_loop:
  2293. asm        in        al, dx
  2294. asm        test        al, 20h
  2295. asm        jz        exit
  2296. asm        test        al, 80h
  2297. asm        jz        output_loop
  2298. asm        inc        dx
  2299. asm        outsb
  2300. asm        inc        di
  2301. asm        dec        dx
  2302. asm        loop        output_loop
  2303. /*
  2304.  * FDC ΓαÑíπÑΓ í«½∞ΦÑ ñá¡¡δσ, ¡« ñá¡¡δσ ß½Ñóá ¡ÑΓ, ΓᬠτΓ« «¡¿
  2305.  * αáºαπΦáεΓß∩.
  2306. */
  2307.         outportb( FDC_DIGITAL, 0 ) ;
  2308.         delay( 5 ) ;
  2309.         outportb( FDC_DIGITAL, ( 0x10 << FDD ) | 0x0C | FDD ) ;
  2310.         asm        pop        ds
  2311.         asm        mov        buffer_bytes, di
  2312.         HANG_END ;
  2313.         END ;
  2314.         enable() ;
  2315.         specify( bios_disk->specify ) ;
  2316.         return ;
  2317. exit:;
  2318. enable() ;
  2319. asm        pop        ds
  2320. asm        mov        buffer_bytes, di
  2321. /*
  2322.  *      åñáΓ∞ ¬«¡Ñµ Σáºδ ¿ß»«½¡Ñ¡¿∩
  2323.  */
  2324. wait_interrupt() ;
  2325. /*
  2326.  
  2327.                                 - 36 -
  2328.  *      Read result
  2329.  */
  2330. read_data( st0.c ) ;
  2331. read_data( st1.c ) ;
  2332. read_data( st2.c ) ;
  2333. read_data( r_c ) ;
  2334. read_data( r_h ) ;
  2335. read_data( r_r ) ;
  2336. read_data( r_n ) ;
  2337. HANG_END ;
  2338. END ;
  2339. }
  2340.  
  2341. void
  2342. format_track(int head, int n, int sc, int gpl, int d, char far *buf,
  2343. int lim )
  2344. {
  2345. START ;
  2346. HANG_START( "ö«α¼áΓ ñ«α«ª¬¿" ) ;
  2347. /*
  2348.  *      ÅÑαÑñáΓ∞ »áαá¼ÑΓαδ ¬«¼á¡ñδ ºá»¿ß¿ ó 8272A
  2349.  */
  2350. write_data( 0x0D | mfm ) ;
  2351. write_data( ( ( head & 1 ) << 2 ) | FDD ) ;
  2352. write_data( n        ) ;
  2353. write_data( sc        ) ;
  2354. write_data( gpl ) ;
  2355. write_data( d        ) ;
  2356. /*
  2357.  *      åñáΓ∞ ñ« ¡áτá½á Σáºδ ¿ß»«½¡Ñ¡¿∩
  2358.  */
  2359. while( !( inportb( FDC_MSR ) & 0x20 ) ) ;
  2360. disable() ;
  2361. /*
  2362.  *     üδΓ∞ ú«Γ«óδ¼ ¬ »ÑαÑñáτÑ ñá¡¡δσ
  2363.  */
  2364. asm        push        ds
  2365. asm        mov        cx, lim
  2366. asm        mov        dx, FDC_MSR
  2367. asm        lds        si, buf
  2368. asm        xor        di, di
  2369. asm        cld
  2370. output_loop:
  2371. asm        in        al, dx
  2372. asm        test        al, 20h
  2373. asm        jz        exit
  2374. asm        test        al, 80h
  2375. asm        jz        output_loop
  2376. asm        inc        dx
  2377. asm        lodsb
  2378. asm        out        dx, al
  2379. asm        inc        di
  2380. asm        dec        dx
  2381. asm        loop        output_loop
  2382.         /*
  2383.          * FDC ¡πª¡« í«½∞ΦÑ ñá¡¡δσ, ¡« í«½∞ΦÑ ñá¡¡δσ ¡ÑΓ, Γá¬
  2384.          * τΓ« «¡¿ αáºαπΦáεΓß∩
  2385.          */
  2386.         delay( 1 ) ;
  2387.         outportb( FDC_DIGITAL, 0 ) ;
  2388.         delay( 5 ) ;
  2389.         outportb( FDC_DIGITAL, ( 0x10 << FDD ) | 0x0C | FDD ) ;
  2390.         asm        pop        ds
  2391.  
  2392.                                 - 37 -
  2393.         asm        mov        buffer_bytes, di
  2394.         HANG_END ;
  2395.         END ;
  2396.         enable() ;
  2397.         specify( bios_disk->specify ) ;
  2398.         return ;
  2399. exit:;
  2400. enable() ;
  2401. asm        pop        ds
  2402. asm        mov        buffer_bytes, di
  2403. /*
  2404.  *      Wait execution phase end
  2405.  */
  2406. wait_interrupt() ;
  2407. /*
  2408.  *      ù¿ΓáΓ∞ αѺπ½∞ΓáΓ
  2409.  */
  2410. read_data( st0.c ) ;
  2411. read_data( st1.c ) ;
  2412. read_data( st2.c ) ;
  2413. read_data( r_c ) ;
  2414. read_data( r_h ) ;
  2415. read_data( r_r ) ;
  2416. read_data( r_n ) ;
  2417. HANG_END ;
  2418. END ;
  2419. }
  2420.  
  2421.  
  2422. void
  2423. read_sector( int head, RW_INPUT *param )
  2424. {
  2425. read_operation( 0x06 | mfm, head, param, buffer, BUFFER_SIZE ) ;
  2426. }
  2427.  
  2428. void
  2429. read_deleted( int head, RW_INPUT *param )
  2430. {
  2431. read_operation( 0x0C | mfm, head, param, buffer, BUFFER_SIZE ) ;
  2432. }
  2433.  
  2434. void
  2435. read_track( int head, RW_INPUT *param )
  2436. {
  2437. read_operation( 0x02 | mfm, head, param, buffer, BUFFER_SIZE ) ;
  2438. }
  2439.  
  2440. void
  2441. write_sector( int head, unsigned count, RW_INPUT *param )
  2442. {
  2443. write_operation( 0x05 | mfm, head, param, buffer, count ) ;
  2444. }
  2445.  
  2446. void
  2447. write_deleted( int head, unsigned count, RW_INPUT *param )
  2448. {
  2449. write_operation( 0x09 | mfm, head, param, buffer, count ) ;
  2450. }
  2451.  
  2452. void
  2453. read_address( int head )
  2454. {
  2455. START ;
  2456.  
  2457.                                 - 38 -
  2458. HANG_START( "Read_address" ) ;
  2459. write_data( 0x0a | mfm ) ;
  2460. write_data( ( ( head & 1 ) << 2 ) | FDD ) ;
  2461. wait_interrupt() ;
  2462. read_data( st0.c ) ;
  2463. read_data( st1.c ) ;
  2464. read_data( st2.c ) ;
  2465. read_data( r_c ) ;
  2466. read_data( r_h ) ;
  2467. read_data( r_r ) ;
  2468. read_data( r_n ) ;
  2469. HANG_END ;
  2470. END ;
  2471. }
  2472.  
  2473. void
  2474. explain_ST3( void )
  2475. {
  2476. printf( "ST3 is %02X\n", st3.c ) ;
  2477. printf( "Drive %c is %s\n", 'A' + st3.x.ds, st3.x.rdy ? "ready" :
  2478. "not ready" ) ;
  2479. printf( "Selected head %d\n", st3.x.h ) ;
  2480. if( st3.x.ft )
  2481.         printf( "!!!!! Drive fault !!!!!\n" ) ;
  2482. if( st3.x.wp )
  2483.         printf( "Write protected\n" ) ;
  2484. if( st3.x.t0 )
  2485.         printf( "Currently at track 0\n" ) ;
  2486. }
  2487.  
  2488. void
  2489. print_rw_return( void )
  2490. {
  2491. printf( "STn : %02x %02x %02x\n", st0.c, st1.c, st2.c ) ;
  2492. printf( "Drive %c, head %d :\n", 'A' + st0.x.ds, st0.x.h ) ;
  2493. switch( st0.x.ic ){
  2494.         case 0: break ;
  2495.         case 1:
  2496.                 printf( "Abnormal operation termination\n" ) ;
  2497.                 break ;
  2498.         case 2:
  2499.                 printf( "Illegal command\n" ) ;
  2500.                 break ;
  2501.         case 3:
  2502.                 printf( "Disk drive ready condition changed\n" ) ;
  2503.                 break ;
  2504.         }
  2505. if( st0.x.se )
  2506.         printf( "Seek ended\n" ) ;
  2507. if( st0.x.ec )
  2508.         printf( "Drive fault\n" ) ;
  2509. if( st0.x.nr )
  2510.         printf( "Drive not ready or head 1 selected on single-sided
  2511.                 drive\n" );
  2512. if( st1.x.en )
  2513.         printf( "End of track error\n" ) ;
  2514. if( st1.x.de )
  2515.         if( st2.x.dd )
  2516.                 printf( "User data CRC error\n" ) ;
  2517.         else        printf( "Sector ID CRC error\n" ) ;
  2518. if( st1.x.or )
  2519.         printf( "Overrun error\n" ) ;
  2520. if( st1.x.nd )
  2521.  
  2522.                                 - 39 -
  2523.         printf( "Sector not found\n" ) ;
  2524. if( st1.x.nw )
  2525.         printf( "Write protect error\n" ) ;
  2526. if( st1.x.ma )
  2527.         printf( "Missing address mark\n" ) ;
  2528. if( st2.x.cm )
  2529.       printf("Control mark-Deleted data on Read Data or reverse\n");
  2530. if( st2.x.wc )
  2531.         printf( "Sector ID cylinder number do not match\n" ) ;
  2532. if( st2.x.sh )
  2533.         printf( "Scan condition hit\n" ) ;
  2534. if( st2.x.sn )
  2535.         printf( "Scan not satisfied\n" ) ;
  2536. if( st2.x.bc )
  2537.         printf( "IBM bad track\n" ) ;
  2538. if( st2.x.md )
  2539.         printf( "Missing data address mark\n" ) ;
  2540. }
  2541.  
  2542. void
  2543. read_rw_input( RW_INPUT *p )
  2544. {
  2545.         int        temp ;
  2546.  
  2547. printf( "C = " ) ;
  2548. scanf( "%x", &temp ) ; p->c = temp ;
  2549. printf( "H = " ) ;
  2550. scanf( "%x", &temp ) ; p->h = temp ;
  2551. printf( "R = " ) ;
  2552. scanf( "%x", &temp ) ; p->r = temp ;
  2553. printf( "N = " ) ;
  2554. scanf( "%x", &temp ) ; p->n = temp ;
  2555. printf( "EOT = " ) ;
  2556. scanf( "%x", &temp ) ; p->eot = temp ;
  2557. printf( "GPL = " ) ;
  2558. scanf( "%x", &temp ) ; p->gpl = temp ;
  2559. printf( "DTL = " ) ;
  2560. scanf( "%x", &temp ) ; p->dtl = temp ;
  2561. }
  2562.  
  2563. void
  2564. print_chrn( void )
  2565. {
  2566. printf( "Cyl = %2x Head = %2x Sect = %2x Siz = %1x\n", r_c, r_h, r_r, r_n ) ;
  2567. }
  2568.  
  2569. /*
  2570.    analyze_track() «τÑ¡∞ »α«ßΓ«⌐ á¡á½¿ºáΓ«α ñ«α«ª¬¿, «ß¡«óá¡¡δ⌐ ¡á ¬«-
  2571. ¼á¡ñÑ τΓÑ¡¿∩ ¿ñÑ¡Γ¿Σ¿¬áΓ«αá ßÑ¬Γ«αá.  Ä¡ ¡Ñ ß»«ß«íÑ¡ ¡á⌐Γ¿  ß»Ñµ¿á½∞¡«
  2572. ß»α∩Γá¡¡δÑ ßÑ¬Γ«αδ.
  2573.  */
  2574. void
  2575. analyze_track( int cyl, int head )
  2576. {
  2577.         struct        _x        {
  2578.                 char        c, h, r, n ;
  2579.                 long        time_diff ;
  2580.                 } ;
  2581.         struct        _x        sector_table[ MAX_SECTORS ] ;
  2582.         struct        _x        *p ;
  2583.         int                i ;
  2584.         long                start, end ;
  2585.         int                track_size ;
  2586.  
  2587.                                 - 40 -
  2588.         RW_INPUT        param ;
  2589.  
  2590. seek( cyl ) ;
  2591. fprintf( stderr, "Analyzing track %02X ... Please Wait\n", cyl ) ;
  2592.  
  2593. param.c = 0xff ;
  2594. param.h = 0xff ;
  2595. param.r = 0x0 ;
  2596. param.n = 0xff ;
  2597. param.eot = 0xff ;
  2598. param.gpl = 0x20 ;
  2599. param.dtl = 0xff ;
  2600. disable() ;
  2601. /*
  2602.  * æ½ÑñπεΘ¿⌐  read_sector  ºá¬á¡τ¿óáÑΓß∩ ßαáºπ »«ß½Ñ τΓÑ¡¿∩ ¿¡ñѬߡ«ú«
  2603.  * «ΓóÑαßΓ¿∩
  2604.  */
  2605. do {
  2606.         param.r-- ;
  2607.         read_sector( head, ¶m ) ;
  2608.         } while( ( ! st1.x.nd ) && ( ! st1.x.ma ) ) ;
  2609. if( st1.x.ma ){
  2610.         print_rw_return() ;
  2611.         return ;
  2612.         }
  2613. start = get_exact_time() ;
  2614. for( i = 0, p = sector_table ; i < MAX_SECTORS ; i++, p++ ){
  2615.         read_address( head ) ;
  2616.         end = get_exact_time() ;
  2617.         enable() ;
  2618.         p->c = r_c ;
  2619.         p->h = r_h ;
  2620.         p->r = r_r ;
  2621.         p->n = r_n ;
  2622.         if( st1.x.ma ){
  2623.                 print_rw_return() ;
  2624.                 return ;
  2625.                 }
  2626.         p->time_diff = end - start ;
  2627.         if( p->time_diff > REVOLUTION_TIME )
  2628.                 break ;
  2629.         }
  2630. track_size = i ;
  2631. fprintf(out, "%02X sectors found on track %02X side %1X\n",
  2632.         track_size, cyl, head ) ;
  2633. fprintf(out, "      Cyl Hd Sec  N   Pos (ms) Off (ms)       Cyl Hd
  2634.         Sec  N   Pos (ms) Off (ms)\n" ) ;
  2635. for( i = 0, p = sector_table ; i < track_size ; i++, p++ ){
  2636.   fprintf( out, "#%2d - %02X   %1X  %02X  %1X   %7.3lf %7.3lf%c", i,
  2637.            p->c, p->h, p->r, p->n, p->time_diff / ( 1193.18 * 2 ),
  2638.   ( i == ( track_size - 1 ) ? ( sector_table->time_diff +
  2639.     REVOLUTION_TIME - p->time_diff ) :
  2640.   ( (p+1)->time_diff - p->time_diff ) ) / ( 1193.18 * 2 ),
  2641.   i % 2 ? '\n' : '\t' ) ;
  2642.         }
  2643. if( i % 2 == 1 ) fputc( '\n', out ) ;
  2644. }
  2645.  
  2646. void
  2647. analyze_disk( int from, int count )
  2648. {
  2649.         int        i ;
  2650.  
  2651.  
  2652.                                 - 41 -
  2653. for( i = 0 ; i < count ; i++, from++ ){
  2654.         analyze_track( from, 0 ) ;
  2655.         analyze_track( from, 1 ) ;
  2656.         }
  2657. }
  2658.  
  2659. #define LINE_SIZE        16
  2660. #define SCREEN_SIZE        10
  2661. #define PAGE_SIZE        (SCREEN_SIZE*LINE_SIZE)
  2662.  
  2663. void
  2664. draw_buffer( char *start, unsigned lines, unsigned num_start )
  2665. {
  2666.         int        i ;
  2667.  
  2668. for( ; lines-- > 0 ; num_start += LINE_SIZE, start += LINE_SIZE ){
  2669.         printf( "%04X ", num_start ) ;
  2670.         for( i = 0 ; i < LINE_SIZE ; i++ )
  2671.                 printf( "%02X ", start[ i ] ) ;
  2672.         for( i = 0 ; i < LINE_SIZE ; i++ )
  2673.                 putchar( isprint( start[ i ] ) ? start[ i ] : '.' ) ;
  2674.         putchar( '\n' ) ;
  2675.         }
  2676. }
  2677.  
  2678. void
  2679. buffer_operations( void )
  2680. {
  2681.         unsigned        current_offset = 0 ;
  2682.         int                need_redraw = 1 ;
  2683.         unsigned        offset, len ;
  2684.         unsigned        pattern ;
  2685.         char                temp[ 80 ] ;
  2686.         int                handle ;
  2687.  
  2688. START ;
  2689. while( 1 ){
  2690.  if( need_redraw ){
  2691.   draw_buffer(buffer + current_offset, SCREEN_SIZE, current_offset);
  2692.   printf( "[H,U,D,G,F,S,E,R,W,C,X]\n" ) ;
  2693.                 }
  2694.  need_redraw = 1 ;
  2695.  switch( toupper( (char)bioskey( 0 ) ) ){
  2696.  case 'X':
  2697.   case 0x1b:
  2698.   END ;
  2699.   return ;
  2700.    case 'U':
  2701.    if( current_offset >= PAGE_SIZE )
  2702.    current_offset -= PAGE_SIZE ;
  2703.    else        need_redraw = 0 ;
  2704.                         break ;
  2705.    case 'D':
  2706.    if( current_offset < BUFFER_SIZE - 2 * PAGE_SIZE )
  2707.    current_offset += PAGE_SIZE ;
  2708.    else        need_redraw = 0 ;
  2709.    break ;
  2710.    case 'G':
  2711.    printf( "Go to offset : " ) ;
  2712.    scanf( "%x", ¤t_offset ) ;
  2713.    if( current_offset >= BUFFER_SIZE - PAGE_SIZE )
  2714.    current_offset = 0 ;
  2715.    break ;
  2716.  
  2717.                                 - 42 -
  2718.    case 'F':
  2719.    printf( "Fill from offset : " ) ;
  2720.    scanf( "%x", &offset ) ;
  2721.    printf( "Length : " ) ;
  2722.    scanf( "%x", &len ) ;
  2723.    printf( "Pattern : " ) ;
  2724.    scanf( "%x", &pattern ) ;
  2725.    setmem( buffer + offset, len, pattern ) ;
  2726.    break ;
  2727.    case 'S':
  2728.    printf( "Set at offset : " ) ;
  2729.    scanf( "%x", &offset ) ;
  2730.    printf( "Value : " ) ;
  2731.    scanf( "%x", &pattern ) ;
  2732.    buffer[ offset ] = pattern ;
  2733.    break ;
  2734.    case 'E':
  2735.    printf( "Set at offset : " ) ;
  2736.    scanf( "%x", &offset ) ;
  2737.    printf( "Byte count : " ) ;
  2738.    scanf( "%x", &len ) ;
  2739.    for( ; len-- > 0 ; offset++ ){
  2740.    printf( "Value : " ) ;
  2741.    scanf( "%x", &pattern ) ;
  2742.    buffer[ offset ] = pattern ;
  2743.                                 }
  2744.    break ;
  2745.    case 'R':
  2746.    printf( "Read to offset : " ) ;
  2747.    scanf( "%x", &offset ) ;
  2748.    printf( "Byte count : " ) ;
  2749.    scanf( "%x", &len ) ;
  2750.    printf( "File : " ) ;
  2751.    scanf( "%s", temp ) ;
  2752.    if( ( handle = _open( temp, O_RDONLY | O_BINARY ) ) == -1 ){
  2753.    perror( temp ) ;
  2754.    break ;
  2755.                                 }
  2756. if( _read( handle, buffer + offset, len ) != len )
  2757. perror( temp ) ;
  2758. _close( handle ) ;
  2759. break ;
  2760. case 'W':
  2761. printf( "Write from offset : " ) ;
  2762. scanf( "%x", &offset ) ;
  2763. printf( "Byte count : " ) ;
  2764. scanf( "%x", &len ) ;
  2765. printf( "File : " ) ;
  2766. scanf( "%s", temp ) ;
  2767. if( ( handle = _creat( temp, 0 ) ) == -1 ){
  2768. perror( temp ) ;
  2769. break ;
  2770.                                 }
  2771. if( _write( handle, buffer + offset, len ) != len )
  2772. perror( temp ) ;
  2773. _ßlose( handle ) ;
  2774. break ;
  2775. case 'C':
  2776. printf( "Set at offset : " ) ;
  2777. scanf( "%x\n", &offset ) ;
  2778. printf( "Type string : " ) ;
  2779. gets( temp ) ;
  2780. memcpy( buffer + offset, temp, strlen( temp ) ) ;
  2781.  
  2782.                                 - 43 -
  2783. break ;
  2784. case 'H':
  2785. printf( "U - Up     D - Down  G - Go to  F - Fill  S - Set byte\n"
  2786.       "E - Enter  R - Read  W - Write  X - Exit  C - set string\n");
  2787. default:
  2788.    need_redraw = 0 ;
  2789.                 }
  2790.         }
  2791. }
  2792.  
  2793. main( int argc, char *argv[] )
  2794. {
  2795.         int                cyl, hd ;
  2796.         char                key ;
  2797.         RW_INPUT        rw ;
  2798.         char                name[ 20 ] ;
  2799.         int                n, sc, gpl, d, lim ;
  2800.  
  2801. if( ( buffer = malloc( BUFFER_SIZE ) ) == NULL ){
  2802.         printf( "Can't allocate buffer space !\n" ) ;
  2803.         return( 3 ) ;
  2804.         }
  2805. if( argc > 1 ) FDD = atoi( argv[ 1 ] ) ;
  2806. delay( 1 ) ;
  2807. install_fdc_driver() ;
  2808. start_operations() ;
  2809. do {
  2810.  switch( setjmp( hang_reset ) ){
  2811.  case 0: break ;
  2812.  default:
  2813.   fprintf(stderr,"Unexpected hangup in function %s\n",
  2814.           current_function);
  2815.  start_operations() ;
  2816.                 }
  2817. fprintf( stderr, "-----[H,S,D,R,A,E,B,T,F,L,P,W,C,O,I,M,Z] : " ) ;
  2818. do        key = toupper( bioskey( 0 ) ) ;
  2819.         while( key == 0 ) ;
  2820.         printf( "%c\n", key ) ;
  2821.         switch( key ){
  2822. case 'H':
  2823. printf("H - Help        S - Seek        D - ST3
  2824.         R - Read sector\n" ) ;
  2825. printf("A - Read ID     E - Recalibrate B - BufOps
  2826.         T - Analyze track\n" ) ;
  2827. printf("F - AnalizeDisk L - ReadDeleted P - Data rate
  2828.         W - WriteData\n" ) ;
  2829. printf("C - read traCk  O - fOrmat      I - wrItedelete
  2830.         M - MFM/FM toggle\n" ) ;
  2831. printf("Z - Exit\n" ) ;
  2832. break ;
  2833. case 'S':
  2834. printf( "*Seek to cylinder : " ) ;
  2835. scanf( "%x", &cyl ) ;
  2836. seek( cyl ) ;
  2837. break ;
  2838. case 'D':
  2839.   read_ST3() ;
  2840.   explain_ST3() ;
  2841. break ;
  2842. case 'R':
  2843.   printf( "*Read data\n" ) ;
  2844.   printf( "Head : " ) ;
  2845.   scanf( "%x", &hd ) ;
  2846.  
  2847.                                 - 44 -
  2848.   read_rw_input( &rw ) ;
  2849.   read_sector( hd, &rw ) ;
  2850.   print_rw_return() ;
  2851.   printf( "%d (%#4x) bytes read\n", buffer_bytes, buffer_bytes ) ;
  2852.   printf( "Operation time is not reliable !\n" ) ;
  2853. break ;
  2854. case 'L':
  2855.   printf( "*Read deleted data\n" ) ;
  2856.   printf( "Head : " ) ;
  2857.   scanf( "%x", &hd ) ;
  2858.   read_rw_input( &rw ) ;
  2859.   read_deleted( hd, &rw ) ;
  2860.   print_rw_return() ;
  2861.   printf( "%d (%#4x) bytes read\n", buffer_bytes, buffer_bytes ) ;
  2862.   printf( "Operation time is not reliable !\n" ) ;
  2863. break ;
  2864. case 'C':
  2865.   printf( "*Read a track\n" ) ;
  2866.   printf( "Head : " ) ;
  2867.   scanf( "%x", &hd ) ;
  2868.   read_rw_input( &rw ) ;
  2869.   read_track( hd, &rw ) ;
  2870.   print_rw_return() ;
  2871.   printf( "%d (%#4x) bytes read\n", buffer_bytes, buffer_bytes ) ;
  2872.   printf( "Operation time is not reliable !\n" ) ;
  2873. break ;
  2874. case 'W':
  2875.   printf( "*Write data\n" ) ;
  2876.   printf( "Head : " ) ;
  2877.   scanf( "%x", &hd ) ;
  2878.   printf( "Byte count : " ) ;
  2879.   scanf( "%x", &cyl ) ;
  2880.   read_rw_input( &rw ) ;
  2881.   write_sector( hd, cyl, &rw ) ;
  2882.   print_rw_return() ;
  2883.   printf( "%d (%#4x) bytes written\n", buffer_bytes, buffer_bytes );
  2884.   printf( "Operation time is not reliable !\n" ) ;
  2885. break ;
  2886. case 'I':
  2887.   printf( "*Write deleted\n" ) ;
  2888.   printf( "Head : " ) ;
  2889.   scanf( "%x", &hd ) ;
  2890.   printf( "Byte count : " ) ;
  2891.   scanf( "%x", &cyl ) ;
  2892.   read_rw_input( &rw ) ;
  2893.   write_deleted( hd, cyl, &rw ) ;
  2894.   print_rw_return() ;
  2895.   printf( "%d (%#4x) bytes written\n", buffer_bytes, buffer_bytes );
  2896.   printf( "Operation time is not reliable !\n" ) ;
  2897. break ;
  2898. case 'A':
  2899.   printf( "*Read address\n" ) ;
  2900.   printf( "Head = " ) ;
  2901.   scanf( "%x", &cyl ) ;
  2902.   read_address( cyl ) ;
  2903.   print_rw_return() ;
  2904.   print_chrn() ;
  2905. break ;
  2906. case 'E':
  2907.   printf( "*Recalibrating\n" ) ;
  2908.   recalibrate() ;
  2909. break ;
  2910. case 'B':
  2911.  
  2912.                                 - 45 -
  2913.   buffer_operations() ;
  2914. break ;
  2915. case 'T':
  2916.   printf( "Analyze cylinder : " ) ;
  2917.   scanf( "%x", &cyl ) ;
  2918.   printf( "Head : " ) ;
  2919.   scanf( "%x", &hd ) ;
  2920.   out = stdout ;
  2921.   analyze_track( cyl, hd ) ;
  2922. break ;
  2923. case 'F':
  2924.   printf( "Analyze from cylinder : " ) ;
  2925.   scanf( "%x", &cyl ) ;
  2926.   printf( "Cylinder count : " ) ;
  2927.   scanf( "%x", &hd ) ;
  2928.   printf( "File for output : " ) ;
  2929.   scanf( "%s", name ) ;
  2930.   if( ( out = fopen( name, "wt" ) ) == NULL ){
  2931.   perror( name ) ;
  2932. break ;
  2933.                            }
  2934. analyze_disk( cyl, hd ) ;
  2935. fclose( out ) ;
  2936. break ;
  2937. case 'P':
  2938.   printf( "Select rate : 0 - 500 KBS, 1 - 300 KBS, 2 - 250 KBS\n" ) ;
  2939.   scanf( "%x", &cyl ) ;
  2940.   outportb( FDC_RATE, cyl ) ;
  2941. break ;
  2942. case 'O':
  2943.   printf( "*Format a track using IDs from buffer\n" ) ;
  2944.   printf( "Head : " ) ;
  2945.   scanf( "%x", &hd ) ;
  2946.   printf( "N   = " ) ;
  2947.   scanf( "%x", &n ) ;
  2948.   printf( "SC  = " ) ;
  2949.   scanf( "%x", &sc ) ;
  2950.   printf( "GPL = " ) ;
  2951.   scanf( "%x", &gpl ) ;
  2952.   printf( "D   = " ) ;
  2953.   scanf( "%x", &d ) ;
  2954.   printf( "TC  = " ) ;
  2955.   scanf( "%x", &lim ) ;
  2956.   format_track( hd, n, sc, gpl, d, buffer, lim ) ;
  2957.   print_rw_return() ;
  2958.   printf( "%x bytes transferred as IDs\n", buffer_bytes ) ;
  2959. break ;
  2960. case 'M':
  2961.   if( mfm ) mfm = 0 ;
  2962.    else          mfm = 0x40 ;
  2963.   printf( "Current mode is %s\n", mfm ? "MFM" : "FM" ) ;
  2964. break ;
  2965. case 'Z':
  2966.   reset_old_fdc() ;
  2967.   return( 0 ) ;
  2968.   default:
  2969.     printf( "No action for this key : %c\n", key ) ;
  2970. break ;
  2971.                 }
  2972. printf( "Elapsed time is %8.3f ms\n", elapsed_time / ( 1193.180 * 2 ) ) ;
  2973.         } while( 1 ) ;
  2974. }
  2975.  
  2976.  
  2977.                                 - 46 -
  2978.         5. Åα¿½«ªÑ¡¿Ñ B. Åα«ßΓá∩ »α«úαá¼¼á ΓÑßΓ¿α«óá¡¿∩ HDC
  2979.  
  2980.    ÆÑ¬ßΓ »α«úαá¼¼δ ¡áσ«ñ¿Γß∩ ó Σá⌐½Ñ hd_scan.c, ¬«Γ«αδ⌐ ΓᬪѠΓαÑíπ-
  2981. ÑΓ TC 2.0 ¿ TASM ñ½∩ ¬«¼»¿½∩µ¿¿.  Åα«úαá¼¼á »α¿¡¿¼áÑΓ  ¿ñÑ¡Γ¿Σ¿¬áΓ«α
  2982. ñ¿ß¬«ó«ñá BIOS (80 ñ½∩ 1-ú« ñ¿ß¬«ó«ñá,  81 ñ½∩ 2-ú«). àß½¿ φëàΓÑßΓ
  2983. ºáó¿ßáÑΓ »«ß½Ñ »ÑτáΓ¿ ß««íΘÑ¡¿∩ :
  2984.    " Cyls = XXX, Heads = XXX, Sectors = XXX ",
  2985. óßÑ »α«úαá¼¼δ «»Γ¿¼¿ºáµ¿¿ ñ¿ß¬á ñ«½ª¡δ íδΓ∞ πñá½Ñ¡δ ¿º »á¼∩Γ¿ ñ« óδ-
  2986. »«½¡Ñ¡¿∩ φΓ«ú« ΓÑßΓá.
  2987.  
  2988. static char __rights__[]="î«ñπ½∞ ΓÑßΓ¿α«óá¡¿∩ ªÑßΓ¬«ú« ñ¿ß¬á. (C) 1991
  2989.                           æÑαúÑ⌐ æ. ÅáΦ¬«ó¿τ" ;
  2990.  
  2991. #ifndef __TINY__
  2992. #error ìÑ«íσ«ñ¿¼« ¬«¼»¿½¿α«óáΓ∞ ó ¼«ñѽ¿ TINY!
  2993. #endif
  2994. #pragma inline
  2995. #include <stdio.h>
  2996. #include <stdlib.h>
  2997. #include <bios.h>
  2998. #include <dos.h>
  2999.  
  3000. #define VERSION                 "0.0"
  3001. #define MAX_ROMS                100
  3002. #define MAX_SECTORS             64
  3003. #define SECTOR_SIZE             512
  3004. #define TIMER_CLOCK_RATE        (2*1193180ul)
  3005.  
  3006. #define INT_13()        geninterrupt(0x13)
  3007. #define BIOS_13()       (*BIOS_entry)()
  3008.  
  3009.         unsigned        HDD ;
  3010.         unsigned        cyls, heads, sectors ;
  3011.         FILE            *report ;
  3012.         void interrupt  (*BIOS_entry)( void ) ;
  3013.         unsigned        ROM_count = 0 ;
  3014.         unsigned long   revolution_time ;
  3015.         unsigned char   error_code ;
  3016.         double          ForcedRPS = 0.0 ;
  3017.  
  3018.         struct  _Z_ {
  3019.         unsigned char   sector ;
  3020.         unsigned long   position ;
  3021.         } ;
  3022.  
  3023. static  struct  _Y_ {
  3024.         unsigned        ROM_start ;     /* para                 */
  3025.         unsigned        ROM_end ;       /* para                 */
  3026.         } ROM_list[ MAX_ROMS ] ;
  3027.  
  3028. static  struct  _X_ {
  3029.         unsigned char   code ;
  3030.         char            *message ;
  3031.         } disk_errors[] = {
  3032.                 0x00, "öπ¡¬µ¿∩ óδ»«½¡Ñ¡á πß»ÑΦ¡«",
  3033.                 0x01, "ìÑóÑα¡«Ñ º¡áτÑ¡¿Ñ ¿½¿ ¡ÑóÑα¡á∩ Σπ¡¬µ¿∩",
  3034.                 0x02, "ìÑ ¡á⌐ñÑ¡á áñαÑß¡á∩ ¼ÑΓ¬á",
  3035.                 0x03, "çáΘ¿Γᠺỿ߿",
  3036.                 0x04, "æÑ¬Γ«α ¡Ñ ¡á⌐ñÑ¡",
  3037.                 0x05, "ÄΦ¿í¬á πßΓá¡«ó¬¿",
  3038.                 0x07, "ÄΦ¿í¬á »áαá¼ÑΓαá á¬Γ¿óᵿ¿",
  3039.                 0x08, "æí«⌐ DMA",
  3040.                 0x09, "Å«»δΓ¬á ñ«ßΓπ»á ¬ DMA ßóδΦÑ 64K",
  3041.  
  3042.                                 - 47 -
  3043.                 0x0A, "Ž«σ«⌐ Σ½áú ßÑ¬Γ«αá",
  3044.                 0x0D, "Ž«σ«⌐ ¡«¼Ñα ßÑ¬Γ«αá (Σ«α¼áΓ)",
  3045.                 0x0E, "Äí¡áαπªÑ¡δ ¬«¡Γα«½∞¡δÑ ñá¡¡δÑ áñαÑß. ¼ÑΓ¬¿",
  3046.                 0x0F, "ìÑóÑα¡«Ñ º¡áτÑ¡¿Ñ πα«ó¡∩ áαí¿Γαáªá DMA",
  3047.                 0x10, "ìѿ߻αáó¿¼á∩ «Φ¿í¬á ECC",
  3048.                 0x11, "äá¡¡δѠ߬«ααÑ¬Γ¿α«óá¡δ ECC",
  3049.                 0x20, "Å«½«¼¬á ¬«¡Γα«½½Ñαá ñ¿ß¬á",
  3050.                 0x40, "ÄΦ¿í¬á «»Ñαᵿ¿ πßΓá¡«ó¬¿",
  3051.                 0x80, "åÑßΓ¬¿⌐ ñ¿ß¬ ¡Ñ ú«Γ«ó",
  3052.                 0xBB, "ìÑ«»αÑñѽѡ¡á∩ «Φ¿í¬á",
  3053.                 0xCC, "ÄΦ¿í¬á ºá»¿ß¿",
  3054.                 0xE0, "ÉÑú¿ßΓα «Φ¿í«¬ «í¡π½Ñ¡",
  3055.                 } ;
  3056.  
  3057. char    *
  3058. get_error_name( unsigned char code )
  3059. {
  3060.         int     i ;
  3061. static  char    buf[ 80 ] ;
  3062.  
  3063. for( i = 0 ; i < sizeof disk_errors / sizeof( struct _X_ ) ; i++ )
  3064.  if(code == disk_errors[ i ].code) return disk_errors[ i ].message;
  3065. sprintf( buf, "Unknown error code 0x%02X", code ) ;
  3066. return buf ;
  3067. }
  3068.  
  3069. unsigned long
  3070. get_exact_time( void )
  3071. {
  3072. asm     xor     ax, ax
  3073. asm     mov     es, ax
  3074. asm     pushf
  3075. asm     sti
  3076. repeat_request:
  3077. asm     mov     al, 0c2h
  3078. asm     cli
  3079. asm     out     43h, al
  3080. asm     jmp     $+2
  3081. asm     jmp     $+2
  3082. asm     in      al, 40h
  3083. asm     jmp     $+2
  3084. asm     mov     bl, al          /* æτÑΓτ¿¬ íá⌐Γá ß«ßΓ«∩¡¿∩ */
  3085. asm     in      al, 40h
  3086. asm     jmp     $+2
  3087. asm     mov     ah, al
  3088. asm     in      al, 40h
  3089. asm     mov     dx, es:[46Ch]
  3090. asm     sti
  3091. asm     xchg    ah, al
  3092. asm     cmp     dx, es:[46Ch]
  3093. asm     jne     repeat_request
  3094. asm     popf
  3095. asm     neg     ax
  3096. asm     shl     bl, 1
  3097. asm     cmc
  3098. asm     rcl     dx, 1
  3099. return ( (unsigned long)_DX << 16 ) + _AX ;
  3100. }
  3101.  
  3102. void
  3103. init_timer_channel( unsigned char channel )
  3104. {
  3105. asm     pushf
  3106.  
  3107.                                 - 48 -
  3108. asm     cli
  3109. asm     mov     al, channel
  3110. asm     mov     cl, 6
  3111. asm     shl     al, cl
  3112. asm     or      al, 36h
  3113. asm     out     43h, al
  3114. asm     mov     dx, 40h
  3115. asm     add     dl, channel
  3116. asm     jmp     $+2
  3117. asm     jmp     $+2
  3118. asm     xor     al, al
  3119. asm     out     dx, al
  3120. asm     jmp     $+2
  3121. asm     jmp     $+2
  3122. asm     out     dx, al
  3123. asm     popf
  3124. }
  3125.  
  3126. int
  3127. parce_parameters( int argc, char **argv )
  3128. {
  3129. printf( "HD_scan v. " VERSION " (C) 1991 Serge S. Pachkovsky\n" ) ;
  3130. printf("Values reported can be incorrect for a caching disk
  3131.         controllers\n" ) ;
  3132. if( argc < 2 ){
  3133.         printf( "HD_scan BIOS_disk_ID [Drive RPS]\n" );
  3134.         return -1 ;
  3135.         }
  3136. if( sscanf( argv[ 1 ], "%x", &HDD ) != 1 ){
  3137.         printf( "Invalid disk ID %s\n", argv[ 1 ] ) ;
  3138.         return -1 ;
  3139.         }
  3140. if( argc > 2 )
  3141. if( sscanf( argv[ 2 ], "%lg", &ForcedRPS ) != 1 ){
  3142.   printf( "Invalid drive revolutions_per_secons %s\n", argv[ 2 ] );
  3143.   return -1 ;
  3144.         }
  3145. return 0 ;
  3146. }
  3147.  
  3148. int
  3149. init_files( void )
  3150. {
  3151. if( ( report = fopen( "HD_scan.rep", "wt" ) ) == NULL ){
  3152.         perror( "HD_scan.rep" ) ;
  3153.         return -1 ;
  3154.         }
  3155. fprintf(report, "Hard disk scan v " VERSION " report on disk %X\n",
  3156.         HDD );
  3157. return 0 ;
  3158. }
  3159.  
  3160. int
  3161. read_HDD_params( unsigned char disk )
  3162. {
  3163.         unsigned dx, cx ;
  3164.  
  3165. _DL = disk ;
  3166. _AH = 0x08 ;
  3167. INT_13() ;
  3168. dx = _DX ; cx = _CX ;
  3169. heads   = dx >> 8 ;
  3170. sectors = cx & 0x3F ;
  3171.  
  3172.                                 - 49 -
  3173. cyls    = ( cx >> 8 ) | ( ( ( cx >> 6 ) & 3 ) << 8 ) ;
  3174. return 0 ;
  3175. }
  3176.  
  3177. int
  3178. scan_ROMs( void )
  3179. {
  3180.         unsigned                seg ;
  3181.         unsigned char far       *ptr ;
  3182.         struct _Y_              *x = ROM_list ;
  3183.  
  3184. for( seg = 0xC800 ; seg < 0xE000 ; seg += 0x80 ){
  3185.         ptr = MK_FP( seg, 0 ) ;
  3186.         if( ptr[ 0 ] == 0x55 && ptr[ 1 ] == 0xAA ){
  3187.                 /* ìá⌐ñÑ¡ »α¿º¡á¬ αáßΦ¿αÑ¡¡«⌐ »á¼∩Γ¿ */
  3188.                 x->ROM_start = seg ;
  3189.                 x->ROM_end   = seg + (unsigned)ptr[ 2 ] * (512/16) - 1 ;
  3190.                 x++ ; ROM_count++ ;
  3191.                 }
  3192.         }
  3193. x->ROM_start = 0xF000 ; x->ROM_end = 0xFFFF ;
  3194. ROM_count++ ;
  3195. return 0 ;
  3196. }
  3197.  
  3198. void interrupt
  3199. (*trace_to_BIOS( void interrupt (*start)(), unsigned char disk ))()
  3200. {
  3201. static  void interrupt  (*old_01)( void ) ;
  3202. static  void interrupt  (*entry_point)( void ) ;
  3203. static  unsigned char   trace_on ;
  3204. static  void interrupt  (*trace_dst)( void ) ;
  3205.  
  3206. entry_point = start ;
  3207. old_01      = getvect( 0x01 ) ;
  3208. trace_on    = 1 ;
  3209. asm     push    cs
  3210. asm     lea     ax, trace
  3211. asm     push    ax
  3212. asm     mov     ax, 1
  3213. asm     push    ax
  3214. asm     call    setvect
  3215. asm     add     sp, 6
  3216. asm     pushf
  3217. asm     push    cs
  3218. asm     lea     ax, normal_return
  3219. asm     push    ax
  3220. asm     pushf
  3221. asm     pop     ax
  3222. asm     or      ah, 1
  3223. asm     push    ax
  3224. asm     popf
  3225. asm     pushf
  3226. asm     push    word ptr start + 2
  3227. asm     push    word ptr start + 0
  3228. asm     mov     ah, 8
  3229. asm     mov     dl, disk
  3230. asm     iret
  3231. asm     normal_return   label   near
  3232. setvect( 0x01, old_01 ) ;
  3233. asm     jmp     end_routine
  3234.  
  3235. asm     trace   label   near
  3236.  
  3237.                                 - 50 -
  3238. asm     push    bp
  3239. asm     mov     bp, sp
  3240. asm     push    ax
  3241. asm     push    bx
  3242. asm     push    cx
  3243. asm     push    ds
  3244. asm     push    es
  3245. asm     mov     ax, cs
  3246. asm     mov     ds, ax
  3247. /*
  3248.  *      BP ->   0       old BP
  3249.  *              2       IP
  3250.  *              4       CS
  3251.  *              6       Flags
  3252.  *              8       IP or flags
  3253.  *             10       CS
  3254.  *             12       flags
  3255.  */
  3256. asm     cmp     trace_on, 1
  3257. asm     je      proceed_trace
  3258. stop_trace:
  3259. asm     and     byte ptr ss:[bp+6+1], NOT 1     /* clear TF     */
  3260. exit_trace:
  3261. asm     pop     es
  3262. asm     pop     ds
  3263. asm     pop     cx
  3264. asm     pop     bx
  3265. asm     pop     ax
  3266. asm     pop     bp
  3267. asm     iret
  3268. proceed_trace:
  3269. asm     mov     ax, ss:[bp+2]
  3270. asm     shr     ax, 1
  3271. asm     shr     ax, 1
  3272. asm     shr     ax, 1
  3273. asm     shr     ax, 1
  3274. asm     add     ax, ss:[bp+4]
  3275. asm     lea     bx, ROM_list
  3276. asm     mov     cx, ROM_count
  3277. look_next_ROM_block:
  3278. asm     cmp     ax, ds:[bx].ROM_start
  3279. asm     jb      bad_ROM
  3280. asm     cmp     ax, ds:[bx].ROM_end
  3281. asm     ja      bad_ROM
  3282. asm     mov     ax, ss:[bp+2]
  3283. asm     mov     word ptr entry_point + 0, ax
  3284. asm     mov     ax, ss:[bp+4]
  3285. asm     mov     word ptr entry_point + 2, ax
  3286. asm     jmp     stop_trace
  3287. bad_ROM:
  3288. asm     add     bx, 4
  3289. asm     loop    look_next_ROM_block
  3290. asm     les     bx, dword ptr ss:[bp+2]
  3291. asm     mov     ax, word ptr es:[bx]
  3292. asm     cmp     al, 0cfh
  3293. asm     je      trace_iret_command
  3294. asm     cmp     al, 09dh
  3295. asm     je      trace_popf_command
  3296. asm     cmp     al, 0cdh
  3297. asm     je      trace_intn_command
  3298. asm     cmp     al, 0cch
  3299. asm     je      trace_int3_command
  3300. asm     jmp     exit_trace
  3301.  
  3302.                                 - 51 -
  3303.  
  3304. trace_iret_command:
  3305. asm     or      byte ptr ss:[bp+12+1], 1
  3306. asm     jmp     exit_trace
  3307. trace_popf_command:
  3308. asm     or      byte ptr ss:[bp+8+1], 1
  3309. asm     jmp     exit_trace
  3310. trace_int3_command:
  3311. asm     inc     word ptr ss:[bp+2]
  3312. asm     mov     ah, 3
  3313. asm     jmp     trace_interrupt
  3314. trace_intn_command:
  3315. asm     cmp     ah, 10h
  3316. asm     jb      OK_to_trace
  3317. asm     cmp     ah, 13h
  3318. asm     jb      exit_trace
  3319. asm     je      OK_to_trace
  3320. asm     cmp     ah, 1dh
  3321. asm     jb      exit_trace
  3322. OK_to_trace:
  3323. asm     add     word ptr ss:[bp+2], 2
  3324. asm     jmp     trace_interrupt
  3325. trace_interrupt:
  3326. asm     xor     bx, bx
  3327. asm     mov     es, bx
  3328. asm     mov     bl, ah
  3329. asm     shl     bx, 1
  3330. asm     shl     bx, 1
  3331. asm     mov     ax, word ptr es:[bx]
  3332. asm     mov     word ptr trace_dst, ax
  3333. asm     mov     ax, word ptr es:[bx+2]
  3334. asm     mov     word ptr trace_dst+2, ax
  3335. asm     pop     es
  3336. asm     pop     ds
  3337. asm     pop     cx
  3338. asm     pop     bx
  3339. asm     pop     ax
  3340. asm     pop     bp
  3341. asm     pushf
  3342. asm     push    word ptr cs:trace_dst + 2
  3343. asm     push    word ptr cs:trace_dst + 0
  3344. asm     iret
  3345.  
  3346. end_routine:;
  3347. return entry_point ;
  3348. }
  3349.  
  3350. int
  3351. detect_BIOS_entry( unsigned char disk )
  3352. {
  3353. if( scan_ROMs() == -1 ) return -1 ;
  3354. if( ( BIOS_entry = trace_to_BIOS( getvect( 0x13 ), disk ) ) == NULL)
  3355.  return -1 ;
  3356. return 0 ;
  3357. }
  3358.  
  3359. int
  3360. detect_HDD_params( void )
  3361. {
  3362. if( read_HDD_params( HDD ) == -1 ) return -1 ;
  3363. fprintf( report, "Cyls = %u, Heads = %u, Sectors = %u\n", cyls + 1,
  3364.          heads + 1, sectors ) ;
  3365. printf( "Cyls = %u, Heads = %u, Sectors = %u\n", cyls + 1, heads +
  3366.  
  3367.                                 - 52 -
  3368.          1, sectors ) ;
  3369. if( detect_BIOS_entry( HDD ) == -1 ) return -1 ;
  3370. fprintf( report, "Hard disk BIOS entry point %Fp\n", BIOS_entry ) ;
  3371. printf( "Hard disk BIOS entry point %Fp\n", BIOS_entry ) ;
  3372. return 0 ;
  3373. }
  3374.  
  3375. int
  3376. init_system_timer( void )
  3377. {
  3378. init_timer_channel( 0 ) ;
  3379. return 0 ;
  3380. }
  3381.  
  3382. void
  3383. read_sector(unsigned cyl,unsigned head,unsigned sector,char buf[512])
  3384. {
  3385.         unsigned        cx, dx ;
  3386.  
  3387. cx = ( sector & 0x3F ) | ( cyl << 8 ) | ( ( cyl >> 8 ) << 6 ) ;
  3388. dx = ( head << 8 ) | HDD ;
  3389. _ES = FP_SEG( buf ) ;
  3390. _BX = FP_OFF( buf ) ;
  3391. _CX = cx ;
  3392. _DX = dx ;
  3393. _AX = 0x0201 ;
  3394. BIOS_13() ;
  3395. switch( error_code = _AH ){
  3396.         case 1:
  3397.         case 3:
  3398.         case 5:
  3399.         case 7:
  3400.         case 8:
  3401.         case 9:
  3402.         case 0x0D:
  3403.         case 0x0F:
  3404.         case 0x20:
  3405.         case 0x40:
  3406.         case 0x80:
  3407.         case 0xBB:
  3408.         case 0xCC:
  3409.         case 0xE0:
  3410.                 fprintf( stderr, "%s", get_error_name(error_code));
  3411.                 exit( 255 ) ;
  3412.         }
  3413. }
  3414.  
  3415. int
  3416. detect_rotation_speed( void )
  3417. {
  3418.         int             i ;
  3419.         unsigned long   start, end ;
  3420.         char            buf[ 512 ] ;
  3421.  
  3422. _AX = 0 ; _DL = HDD ; BIOS_13() ;
  3423. read_sector( 0, 0, 1, buf ) ;
  3424. start = get_exact_time() ;
  3425. for( i = 0 ; i < 500 ; i++ ){
  3426.         _AX = 0 ; _DL = HDD ; BIOS_13() ;
  3427.         read_sector( 0, 0, 1, buf ) ;
  3428.         }
  3429. end   = get_exact_time() ;
  3430. revolution_time = ( end - start ) / i ;
  3431.  
  3432.                                 - 53 -
  3433. fprintf( report, "Measured drive RPM is %lu\n", 60*TIMER_CLOCK_RATE
  3434.                   / revolution_time ) ;
  3435. printf( "Measured drive RPM is %lu\n", 60 * TIMER_CLOCK_RATE /
  3436.          revolution_time ) ;
  3437. if( ForcedRPS != 0.0 ){
  3438.         revolution_time = TIMER_CLOCK_RATE / ForcedRPS ;
  3439.         fprintf( report, "Forced drive RPM is %lu\n", 60 *
  3440.                  TIMER_CLOCK_RATE / revolution_time ) ;
  3441.         printf( "Forced drive RPM is %lu\n", 60 * TIMER_CLOCK_RATE /
  3442.                  revolution_time ) ;
  3443.         }
  3444. return 0 ;
  3445. }
  3446.  
  3447. int
  3448. check_sectors( unsigned cyl, unsigned head, struct _Z_ *p )
  3449. {
  3450.         int             secs = 0 ;
  3451.         unsigned        i ;
  3452.         char            buf[ 512 ] ;
  3453.  
  3454. for( i = 1 ; i <= sectors ; i++ ){
  3455.   read_sector( cyl, head, i, buf ) ;
  3456.   if( error_code != 0 )
  3457.    fprintf( report, "\t%s at sector %4u/%2u/%2u\n",get_error_name(
  3458.             error_code ), cyl, head, i ) ;
  3459.   if( error_code == 0 || error_code == 0x0A || error_code == 0x10
  3460.       || error_code == 0x11 ){
  3461.     p++->sector = i ;
  3462.     secs++ ;
  3463.                 }
  3464.         }
  3465. return secs ;
  3466. }
  3467.  
  3468. int
  3469. get_read_times(unsigned cyl,unsigned head,int sectors,struct _Z_
  3470.                *table)
  3471. {
  3472.         int             i ;
  3473.         char            buf[ 512 ] ;
  3474.         unsigned long   index ;
  3475.  
  3476. read_sector( cyl, head, sectors + 1, buf ) ;
  3477. index = get_exact_time() ;
  3478. for( i = 0 ; i < sectors ; i += 2 ){
  3479.         read_sector( cyl, head, table[ i ].sector, buf );
  3480.         table[ i ].position = get_exact_time() - index;
  3481.         }
  3482. for( i = 1 ; i < sectors ; i += 2 ){
  3483.         read_sector( cyl, head, table[ i ].sector, buf ) ;
  3484.         table[ i ].position = get_exact_time() - index ;
  3485.         }
  3486. return 0 ;
  3487. }
  3488.  
  3489. int
  3490. cmp_positions( const struct _Z_ *a, const struct _Z_ *b )
  3491. {
  3492. if( a->position < b->position ) return -1 ;
  3493. if( a->position > b->position ) return  1 ;
  3494. return 0 ;
  3495. }
  3496.  
  3497.                                 - 54 -
  3498.  
  3499. int
  3500. process_read_times( int sectors, struct _Z_ *table )
  3501. {
  3502.         int     i ;
  3503.  
  3504. for( i = 0 ; i < sectors ; i++ )
  3505.         while( table[ i ].position > revolution_time )
  3506.                table[ i ].position -= revolution_time ;
  3507. qsort( table, sectors, sizeof( struct _Z_ ), cmp_positions ) ;
  3508. return 0 ;
  3509. }
  3510.  
  3511. int
  3512. report_track_ordering( int sectors, struct _Z_ *table )
  3513. {
  3514.         int     i ;
  3515.  
  3516. for( i = 0 ; i < sectors ; i++ ){
  3517.         if( i % 17 == 0 ){
  3518.                 putc( '\t', report ) ;
  3519.                 if( i != 0 ) putc( '\t', report ) ;
  3520.                 }
  3521.         fprintf( report, "%02d ", table[ i ].sector ) ;
  3522.         if( i % 17 == 16 )
  3523.                 putc( '\n', report ) ;
  3524.         }
  3525. if( i % 17 != 0 ) putc( '\n', report ) ;
  3526. return 0 ;
  3527. }
  3528.  
  3529. int
  3530. scan_track( unsigned cyl, unsigned head )
  3531. {
  3532.         struct _Z_      sector_table[ MAX_SECTORS ] ;
  3533.         int             sectors ;
  3534.  
  3535. if( ( sectors = check_sectors( cyl, head, sector_table ) ) == -1 )
  3536.       return -1 ;
  3537. if( get_read_times( cyl, head, sectors, sector_table ) == -1 )
  3538.     return -1 ;
  3539. if( process_read_times( sectors, sector_table ) == -1 ) return -1 ;
  3540. fprintf( report, "%4u/%2u\t", cyl, head ) ;
  3541. if(report_track_ordering(sectors, sector_table ) == -1 ) return -1;
  3542. return 0 ;
  3543. }
  3544.  
  3545. int
  3546. scan_surface( void )
  3547. {
  3548.         unsigned        cyl, head ;
  3549.  
  3550. for( cyl = 0 ; cyl <= cyls ; cyl++ ){
  3551.   for( head = 0 ; head <= heads ; head++ ){
  3552.    fprintf( stderr, "\rTrack %4d, head %2d ", cyl, head ) ;
  3553.   if( scan_track( cyl, head ) == -1 ) return -1 ;
  3554.   fflush( report ) ;
  3555.                 }
  3556.         }
  3557. fputc( '\n', stderr ) ;
  3558. return -1 ;
  3559. }
  3560.  
  3561.  
  3562.                                 - 55 -
  3563. int
  3564. main( int argc, char *argv[] )
  3565. {
  3566. if( parce_parameters( argc, argv ) == -1 ) return 1 ;
  3567. if( init_files() == -1 ) return 2 ;
  3568. if( detect_HDD_params() == -1 ) return 3 ;
  3569. if( init_system_timer() == -1 ) return 4 ;
  3570. if( detect_rotation_speed() == -1 ) return 5 ;
  3571. if( scan_surface() == -1 ) return 6 ;
  3572. return 0 ;
  3573. }
  3574.  
  3575.             6. Åα¿½«ªÑ¡¿Ñ C. èᬠóδ∩ß¡¿Γ∞ ¡«¼Ñα ¬½áßΓÑαá
  3576.  
  3577.    ÆÑ¬ßΓ »α«úαá¼¼δ  ¡áσ«ñ¿Γß∩ ó Σá⌐½Ñ cluster.c,  ΓαÑíπεΓß∩ TC 2.0 ¿
  3578. TASM ñ½∩ ¬«¼»¿½∩µ¿¿.  Å«½¡«Ñ ¿¼∩ Σá⌐½á (Γ« ÑßΓ∞,  ó¬½ετá∩ ñ¿ß¬«ó«ñ ¿
  3579. ¬áΓὫú,  ñáªÑ  Σá⌐½ ¡áσ«ñ¿Γß∩ ó ΓѬπΘѼ ¬áΓὫúÑ) ñ«½ª¡« óó«ñ¿Γ∞ß∩,
  3580. ¬á¬ »áαá¼ÑΓα.  ò«Γ∩ φëà»α¿¼Ñα »α«óÑα∩½ß∩ ¡á Äæ MS DOS 3.20,  3.30,
  3581. 4.00 ¿ 5.00 (beta), «¡ ¼«ªÑΓ ¡Ñ αáí«ΓáΓ∞ »«ñ ñαπú¿¼¿ óÑαß¿∩¼¿ MS DOC
  3582. ¿½¿ ß«ó¼ÑßΓ¿¼δ¼¿ ß¿ßΓѼἿ,  »«Γ«¼π τΓ« «¡ «ß¡«óδóáÑΓß∩ ¡á ßΓαπ¬ΓπαÑ
  3583. ¡Ñ«»¿ßá¡¡«ú« DiskInfoBlock.
  3584.  
  3585. static  char    __rights__[] = "(C) 1991 Serge S. Pachkovsky" ;
  3586.  
  3587. #pragma  inline
  3588. #include <stdio.h>
  3589. #include <stdlib.h>
  3590. #include <io.h>
  3591. #include <fcntl.h>
  3592. #include <dir.h>
  3593. #include <dos.h>
  3594. #include <mem.h>
  3595. #include <string.h>
  3596. #include <ctype.h>
  3597. #include <alloc.h>
  3598. #include <limits.h>
  3599. #include <stdarg.h>
  3600.  
  3601. typedef struct  _DI {
  3602.         unsigned        char    drv ;  /* ì«¼Ñα »α¿ó«ñá 0 - A: */
  3603.         unsigned        char    subunit ; /*ÄΓ ú«½«ó¬¿ πßΓα«⌐ßΓóá*/
  3604.         unsigned                sect_siz ; /* ÉẼÑα ßÑ¬Γ«αá     */
  3605.         unsigned        char    hi_sector ;/*æ¬αδΓδ⌐ ßÑ¬Γ«α ó ¬½áß*/
  3606.         unsigned        char    cls_shift ;/* æñó¿ú ¬½áßΓ. ¬ ßѬΓ.*/
  3607.         unsigned                boot_siz ; /* ÉѺÑαó¡δÑ ßÑ¬Γ«αδ   */
  3608.         unsigned        char    fats ;     /* ì«¼Ñα FAT           */
  3609.         unsigned                max_dir ;  /* ì«¼Ñα ¬«α¡Ñó«ú« ¬áΓ.*/
  3610.         unsigned                data_sec ; /*ÅÑαóδ⌐ ¬½áßΓÑα ñá¡¡δσ*/
  3611.         unsigned                hi_clust ; /* è½áßΓÑαδ + 2        */
  3612.         union   {
  3613.          struct  {
  3614.           unsigned      char    fat_size ; /* æÑ¬Γ«α«ó ó FAT      */
  3615.           unsigned              root_sec ; /* ìáτὫ ¬α¡Ñó«ú« ¬áΓ.*/
  3616.           void          far     *device ; /* ÇñαÑß ºáú«½«ó¬á πßΓα.*/
  3617.           unsigned      char    media ;   /* Media «»¿ßáΓѽ∞      */
  3618.           unsigned      char    access ;  /* 0 Ñß½¿ ñ«ßΓπ»¡«      */
  3619.           struct _DI    far     *next ;   /* æ½ÑñπεΘ¿⌐ ¿¡Σ. í½«¬  */
  3620.                         } dos3 ;
  3621.          struct  {
  3622.           unsigned              fat_size ;/* æÑ¬Γ«α«ó ó FAT       */
  3623.           unsigned              root_sec ;/* ìáτὫ ¬α¡Ñó«ú« ¬áΓ. */
  3624.           void          far     *device ; /* ÇñαÑß ºáú«½«ó¬á πßΓα.*/
  3625.           unsigned      char    media ;   /* Media «»¿ßáΓѽ∞      */
  3626.  
  3627.                                 - 56 -
  3628.           unsigned      char    access ;  /* 0 Ñß½¿ ñ«ßΓπ»¡«      */
  3629.           struct _DI    far     *next ;   /* æ½ÑñπεΘ¿⌐ ¿¡Σ. í½«¬  */
  3630.                         } dos4 ;
  3631.                 } dos_dependent ;
  3632.         } DISK_INFO ;
  3633.  
  3634. typedef struct  {
  3635.         char            file_name[ 8 ] ;
  3636.         char            file_ext[ 3 ] ;
  3637.         char            file_attribute ;
  3638.         char            __unused[ 10 ] ;
  3639.         unsigned        time ;
  3640.         unsigned        date ;
  3641.         unsigned        cluster ;
  3642.         long            file_size ;
  3643.         } DIRECTORY_ENTRY ;
  3644.  
  3645. static  DISK_INFO       source_disk_info ;
  3646. enum {  FAT_16, FAT_12  } ;
  3647. static  int             fat_type = FAT_16 ;
  3648.  
  3649. static int near
  3650. get_disk_info( char *name )
  3651. {
  3652.         unsigned        char    drive ;
  3653.         DISK_INFO       far     *p ;
  3654.  
  3655. drive = toupper( *name ) - 'A' ;
  3656. asm     push    ds
  3657. asm     mov     dl, drive
  3658. asm     inc     dl
  3659. asm     mov     ah, 32h
  3660. asm     int     21h
  3661. asm     cmp     al, 0
  3662. asm     jne     error
  3663. asm     mov     dx, ds
  3664. asm     pop     ds
  3665.         p = MK_FP( _DX, _BX ) ;
  3666.         source_disk_info = *p ;
  3667.         return 0 ;
  3668. error:
  3669. asm     pop     ds
  3670. return -1 ;
  3671. }
  3672.  
  3673. static unsigned near
  3674. get_fat( char huge *fat, unsigned clust )
  3675. {
  3676.         unsigned        temp_clust ;
  3677.         unsigned        x ;
  3678.  
  3679. switch( fat_type ){
  3680.         case FAT_12:
  3681.                 temp_clust = ( clust * 3 ) / 2 ;
  3682.                 x = *(unsigned huge *)( fat + temp_clust ) ;
  3683.                 if( ( clust & 1 ) == 0 )
  3684.                         x &= 0xfff ;
  3685.                 else    x >>= 4 ;
  3686.                 if( ( x & 0xfff ) > 0xff0 )
  3687.                         x |= 0xf000 ;
  3688.                 break ;
  3689.         case FAT_16:
  3690.                 x = *( (unsigned huge *)fat + clust ) ;
  3691.  
  3692.                                 - 57 -
  3693.                 break ;
  3694.         }
  3695. return x ;
  3696. }
  3697.  
  3698. static unsigned near
  3699. search_start_cluster( char *name )
  3700. {
  3701.         char            dir[ MAXDIR ] ;
  3702.         char            drive[ MAXDRIVE ] ;
  3703.         char            file[ MAXFILE ] ;
  3704.         char            ext[ MAXEXT ] ;
  3705.         struct  xfcb    xfcb ;
  3706.         struct  fcb     *fcb = &xfcb.xfcb_fcb ;
  3707.         char            dta[ sizeof( DIRECTORY_ENTRY ) + 9 ] ;
  3708.         char    far     *old_dta ;
  3709.  
  3710.  
  3711. printf( "Looking for first cluster number of %s\n", name ) ;
  3712. setdisk( toupper( *name ) - 'A' ) ;
  3713. if( getdisk() != toupper( *name ) - 'A' ){
  3714.         printf( "setdisk(%d) failure\n", toupper( *name ) - 'A' ) ;
  3715.         return 0xffff ;
  3716.         }
  3717. fnsplit( name, drive, dir, file, ext ) ;
  3718. if( strlen( dir ) > 1 )
  3719.         dir[ strlen( dir ) - 1 ] = 0 ;
  3720. if( chdir( dir ) == -1 ){
  3721.         printf( "chdir(%s) failure\n", dir ) ;
  3722.         return 0xffff ;
  3723.         }
  3724. old_dta = getdta() ;
  3725. setdta( dta ) ;
  3726. xfcb.xfcb_flag = 0xff ;
  3727. setmem( xfcb.xfcb_resv, sizeof( xfcb.xfcb_resv ), 0xff ) ;
  3728. xfcb.xfcb_attr = FA_RDONLY | FA_HIDDEN | FA_SYSTEM | FA_ARCH ;
  3729. fcb->fcb_drive = 0 ;
  3730. setmem( fcb->fcb_name, 8 + 3, ' ' ) ;
  3731. memcpy( fcb->fcb_name, file, strlen( file ) ) ;
  3732. if( strlen( ext ) != 0 )
  3733.         memcpy( fcb->fcb_ext, ext + 1, strlen( ext + 1 ) ) ;
  3734. asm     push    ds
  3735. asm     mov     dx, ss
  3736. asm     mov     ds, dx
  3737. asm     lea     dx, xfcb
  3738. asm     mov     ah, 11h
  3739. asm     int     21h
  3740. asm     pop     ds
  3741. if( _AL != 0 ){
  3742.         printf( "DOS fun 11h failure (%u)\n", _AL ) ;
  3743.         return 0xffff ;
  3744.         }
  3745. setdta( old_dta ) ;
  3746. return ((DIRECTORY_ENTRY *)( dta + 8 ))->cluster ;
  3747. }
  3748.  
  3749. /*
  3750.  *      abs_read/abs_write section
  3751.  */
  3752. static  int     abs_error = 0 ;
  3753.  
  3754. static int near
  3755. abs_read( int drive, int start, int len, void far *buf )
  3756.  
  3757.                                 - 58 -
  3758. {
  3759. asm     push    si
  3760. asm     push    di
  3761. asm     push    ds
  3762.         asm     mov     al, drive
  3763.         asm     mov     cx, len
  3764.         asm     mov     dx, start
  3765.         asm     lds     bx, dword ptr buf
  3766.         asm     int     25h
  3767.         asm     pop     dx
  3768. asm     pop     ds
  3769. asm     pop     di
  3770. asm     pop     si
  3771.         asm     jnc     no_error
  3772.         asm     mov     abs_error, ax
  3773.         return -1 ;
  3774. no_error:
  3775. return 0 ;
  3776. }
  3777.  
  3778. static char huge * near
  3779. load_fat( void )
  3780. {
  3781.         char    huge    *fat ;
  3782.         char    huge    *p ;
  3783.         unsigned        fat_size ;
  3784.         unsigned        sectors_per_call ;
  3785.         unsigned        fat_start ;
  3786.  
  3787. if( _osmajor >= 4 )
  3788.         fat_size = source_disk_info.dos_dependent.dos4.fat_size ;
  3789. else    fat_size = source_disk_info.dos_dependent.dos3.fat_size ;
  3790. if( ( fat = (char huge *)farmalloc( source_disk_info.sect_siz
  3791.       * fat_size ) ) == NULL )
  3792.         return NULL ;
  3793. sectors_per_call = 0x8000u / source_disk_info.sect_siz ;
  3794. for( p = fat, fat_start = source_disk_info.boot_siz ; fat_size > 0 ;
  3795.                 fat_size -= min( sectors_per_call, fat_size ),
  3796.                 p += sectors_per_call * source_disk_info.sect_siz,
  3797.                 fat_start += sectors_per_call )
  3798.         if( abs_read( source_disk_info.drv, fat_start, min(fat_size,
  3799.                       sectors_per_call ), (void far *)p ) == -1 ){
  3800.                 farfree( (void far *)fat ) ;
  3801.                 return NULL ;
  3802.                 }
  3803. return fat ;
  3804. }
  3805.  
  3806. static void near
  3807. detect_fat_type( void )
  3808. {
  3809. if( _osmajor <= 2 )
  3810.         fat_type = FAT_12 ;
  3811. else    if( source_disk_info.hi_clust > 4086 )
  3812.                 fat_type = FAT_16 ;
  3813.         else    fat_type = FAT_12 ;
  3814. }
  3815.  
  3816. static unsigned near
  3817. collect_chain( char huge *fat, unsigned start_cluster )
  3818. {
  3819.         unsigned        clusters ;
  3820.  
  3821.  
  3822.                                 - 59 -
  3823. printf( "Clusters chain is :\n" ) ;
  3824. for( clusters = 0 ; start_cluster < 0xfff0 ; clusters++ ){
  3825.         start_cluster = get_fat( fat, start_cluster ) ;
  3826.         printf( "%5u ", start_cluster ) ;
  3827.         if( clusters % 10 == 9 ) putchar( '\n' ) ;
  3828.         }
  3829. if( clusters % 10 != 0 ) putchar( '\n' ) ;
  3830. return clusters ;
  3831. }
  3832.  
  3833. int
  3834. main( int argc, char *argv[] )
  3835. {
  3836.         unsigned        start_cluster ;
  3837.         char            huge *fat ; /*䫽ªÑ¡ íδΓ∞ HUGE ñ½∩ DOS 4.x*/
  3838.         unsigned        clusters ;
  3839.         char            directory[ MAXPATH + 1 ] ;
  3840.         int             disk ;
  3841.         char            *name ;
  3842.  
  3843.  
  3844. if( argc != 2 ){
  3845.         printf( "Type : Cluster full_file_name\n" ) ;
  3846.         return -1 ;
  3847.         }
  3848. name = argv[ 1 ] ;
  3849. disk = getdisk() ;
  3850. getcurdir( disk + 1, directory + 1 ) ;
  3851. directory[ 0 ] = '\\' ;
  3852. if( directory[ 1 ] == '\\' ) directory[ 1 ] = 0 ;
  3853. if( get_disk_info( name ) == -1 ){
  3854.         printf( "Get disk info failure\n" ) ;
  3855.         chdir( directory ) ;
  3856.         setdisk( disk ) ;
  3857.         return -1 ;
  3858.         }
  3859. if( ( start_cluster = search_start_cluster( name ) ) == 0xffff ){
  3860.         printf( "Get start cluster failure\n" ) ;
  3861.         chdir( directory ) ;
  3862.         setdisk( disk ) ;
  3863.         return -1 ;
  3864.         }
  3865. printf( "Starting cluster number is %u\n", start_cluster ) ;
  3866. if( start_cluster == 0 ){
  3867.         chdir( directory ) ;
  3868.         setdisk( disk ) ;
  3869.         return -1 ;
  3870.         }
  3871. if( ( fat = load_fat() ) == NULL ){
  3872.         printf( "Load FAT failure\n" ) ;
  3873.         chdir( directory ) ;
  3874.         setdisk( disk ) ;
  3875.         return -1 ;
  3876.         }
  3877. detect_fat_type() ;
  3878. clusters = collect_chain( fat, start_cluster ) ;
  3879. printf( "Total number of clusters is %d\n", clusters ) ;
  3880. farfree( (void far *)fat ) ;
  3881. chdir( directory ) ;
  3882. setdisk( disk ) ;
  3883. return 0 ;
  3884. }
  3885.  
  3886.  
  3887.                                 - 60 -
  3888.                7. Åα¿½«ªÑ¡¿Ñ D. ä«ßΓπ» ¬ σó«ßΓπ Σá⌐½á
  3889.  
  3890.    ÆÑ¬ßΓ »α«úαá¼¼δ   ¡áσ«ñ¿Γß∩  ó  Σá⌐½Ñ  tail.c.  ò«Γ∩  ½εí«⌐  ANSI
  3891. Γαá¡ß½∩Γ«α ñ«½ªÑ¡ »α¿¡¿¼áΓ∞ ÑÑ,  φëà»α¿¼Ñα  «ß¡«óδóáÑΓß∩  ¡á  ¡Ñ«-
  3892. »¿ßá¡¡«¼ »«óÑñÑ¡¿¿ Σπ¡¬µ¿¿ seek() ¿ ¼«ªÑΓ ¡Ñ αáí«ΓáΓ∞ ß Γαá¡ß½∩Γ«αá-
  3893. ¼¿, «Γ½¿τ¡δ¼¿ «Γ TC 2.0.
  3894.  
  3895. #include <stdio.h>
  3896. #include <io.h>
  3897. #include <fcntl.h>
  3898. #include <stdlib.h>
  3899. #include <string.h>
  3900.  
  3901. #define GRANULARITY     (512)
  3902. #define ID_LENGTH       30
  3903.  
  3904. int
  3905. main( int argc, char *argv[] )
  3906. {
  3907.         int     handle ;
  3908.         long    length ;
  3909.         char    buf[ ID_LENGTH + 1 ] ;
  3910.         int     size ;
  3911.  
  3912. if( ( handle = open( argv[ 0 ], O_RDWR | O_BINARY ) ) == -1 ){
  3913.         perror( argv[ 0 ] ) ;
  3914.         return -1 ;
  3915.         }
  3916. length = filelength( handle ) ;
  3917. if( GRANULARITY - length % GRANULARITY < ID_LENGTH ){
  3918.         printf( "File %s has no sufficient tail !\n", argv[ 0 ] ) ;
  3919.         close( handle ) ;
  3920.         return -1 ;
  3921.         }
  3922. if( argc == 2 ){        /* Write to tail */
  3923.         lseek( handle, 0, SEEK_END ) ;
  3924.         size = min( strlen( argv[ 1 ] ) + 1, ID_LENGTH ) ;
  3925.         if( write( handle, argv[ 1 ], size ) != size ){
  3926.                 perror( argv[ 0 ] ) ;
  3927.                 close( handle ) ;
  3928.                 return -1 ;
  3929.                 }
  3930.         }
  3931. else {
  3932.         lseek( handle, ID_LENGTH, SEEK_END ) ;
  3933.         write( handle, " ", 1 ) ;
  3934.         lseek( handle, length, SEEK_SET ) ;
  3935.         read( handle, buf, ID_LENGTH ) ;
  3936.         printf( "File tail is \"%s\"\n", buf ) ;
  3937.         }
  3938. chsize( handle, length ) ;
  3939. close( handle ) ;
  3940. return 0 ;
  3941. }
  3942.  
  3943.             8. Åα¿½«ªÑ¡¿Ñ E. èᬠ«Γ½¿τáΓ∞ «ß¡«ó¡δÑ »½áΓδ
  3944.  
  3945.    ÆÑ¬ßΓ »α«úαá¼¼δ ¡áσ«ñ¿Γß∩ ó Σá⌐½Ñ sysboard.c,  ΓαÑíπεΓß∩ TC 2.0 ¿
  3946. TASM ñ½∩ ¬«¼»¿½∩µ¿¿. ÆÑ¬πΘÑÑ º¡áτÑ¡¿Ñ »áαá¼ÑΓαá INSTRUCTIONS (16384)
  3947. íπñÑΓ ºáßΓáó½∩Γ∞ ßτÑΓτ¿¬ óαѼѡ »ÑαÑ»«½¡∩Γ∞ß∩ ¡á  τáßΓ«ΓÑ  ¼Ñ¡ÑÑ  20
  3948. îâµ »α«µÑßß«αá 80386.
  3949.  
  3950. static  char    __rights__[] = "î«ñπ½∞ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ «ß¡«ó¡«⌐ »½áΓδ";
  3951.  
  3952.                                 - 61 -
  3953.  
  3954. #pragma inline
  3955. #include <stdio.h>
  3956. #include <stdlib.h>
  3957. #include <dos.h>
  3958. #include <alloc.h>
  3959.  
  3960. #define INSTRUCTIONS    (16*1024u)
  3961.  
  3962. void
  3963. init_timer_channel( unsigned char channel )
  3964. {
  3965. asm     pushf
  3966. asm     cli
  3967. asm     mov     al, channel
  3968. asm     ror     al, 1
  3969. asm     ror     al, 1
  3970. asm     or      al, 36h
  3971. asm     out     43h, al
  3972. asm     mov     dx, 40h
  3973. asm     add     dl, channel
  3974. asm     jmp     $+2
  3975. asm     jmp     $+2
  3976. asm     xor     al, al
  3977. asm     out     dx, al
  3978. asm     jmp     $+2
  3979. asm     jmp     $+2
  3980. asm     out     dx, al
  3981. asm     popf
  3982. }
  3983.  
  3984. unsigned
  3985. read_sound_timer( void )
  3986. {
  3987. /*
  3988.  *      ! ¥Γá Σπ¡¬µ¿∩ ¡Ñ ñ«½ª¡á ¿º¼Ñ¡∩Γ∞ αÑú¿ßΓαδ, ¬α«¼Ñ AX !
  3989.  */
  3990. asm     mov     al, 80h
  3991. asm     out     43h, al
  3992. asm     jmp     $+2
  3993. asm     jmp     $+2
  3994. asm     in      al, 42h
  3995. asm     jmp     $+2
  3996. asm     mov     ah, al
  3997. asm     in      al, 42h
  3998. asm     xchg    ah, al
  3999. asm     neg     ax
  4000. return _AX ;
  4001. }
  4002.  
  4003. #define disable_count() (outportb(0x61,inportb(0x61)&(unsigned
  4004.                          char)~1))
  4005. #define enable_count()  (outportb(0x61,inportb(0x61)|(unsigned
  4006.                          char)1))
  4007.  
  4008. void
  4009. instruction_fill( char far *buf, unsigned cnt, char instr[ 2 ] )
  4010. {
  4011. while( cnt-- > 0 ){
  4012.         *buf++ = instr[ 0 ] ;
  4013.         *buf++ = instr[ 1 ] ;
  4014.         }
  4015. *buf++ = 0xCB ; /* retf */
  4016.  
  4017.                                 - 62 -
  4018. }
  4019.  
  4020. unsigned
  4021. measure( char far *routine )
  4022. {
  4023.         unsigned        time ;
  4024.  
  4025. init_timer_channel( 2 ) ;
  4026. disable_count() ;
  4027. asm     push    cs
  4028. asm     lea     ax, ret_point
  4029. asm     push    ax
  4030. asm     les     bx, routine
  4031. asm     push    es
  4032. asm     push    bx
  4033. asm     xor     dx, dx
  4034. asm     mov     bx, 1
  4035. asm     cli
  4036.         enable_count() ;
  4037. asm     mov     ax, bx
  4038. asm     retf
  4039. asm     ret_point       label   near
  4040.         disable_count() ;
  4041.         time = read_sound_timer() ;
  4042. asm     sti
  4043. return time ;
  4044. }
  4045.  
  4046. int
  4047. main( int argc, char *argv[] )
  4048. {
  4049.         char    far     *buf ;
  4050.         unsigned        idle_time ;
  4051.         unsigned        CPU_mark, mem_mark, DMA_mark ;
  4052.  
  4053. if( ( buf = farmalloc( INSTRUCTIONS * 2 + 1 ) ) == NULL ){
  4054.         perror( "No memory" ) ;
  4055.         return -1 ;
  4056.         }
  4057.             instruction_fill( buf, 0, NULL ) ;
  4058. idle_time = measure( buf ) ;
  4059.             instruction_fill( buf, INSTRUCTIONS, "\xF7\xF3" ) ;
  4060. CPU_mark  = measure( buf ) - idle_time ;                /* div bx */
  4061.             instruction_fill( buf, INSTRUCTIONS, "\xC4\x07" ) ;
  4062. mem_mark  = measure( buf ) - idle_time ;          /* les ax, [bx] */
  4063.             instruction_fill( buf, INSTRUCTIONS, "\xE6\x0C" ) ;
  4064. DMA_mark  = measure( buf ) - idle_time ;          /* out 0Ch, al  */
  4065. printf( "Idle time   = %u\n", idle_time ) ;
  4066. printf( "CPU mark    = %u\n", CPU_mark ) ;
  4067. printf( "Memory mark = %u\n", mem_mark ) ;
  4068. printf( "DMA mark    = %u\n", DMA_mark ) ;
  4069. return 0 ;
  4070. }
  4071.  
  4072.