Black Crow #03
27 июня 2000
  Железо  

Очумелые ручки - Всё о HDD IDE: Краткое описание портов и битов.

<b>Очумелые ручки</b> - Всё о HDD IDE: Краткое описание портов и битов.

Аппаратное обеспечениеПериферийное оборудованиеХранение информацииКонтроллеры дисковода и жестких дисков

                                         
     Краткое описание портов и битов     
         контроллера Hard drive.         
                                         
(С) Slot & Со                            
(R) Valerij KozHevnikov                  
   (500:95/462.18@ZXNet)                 
-----------------------------------------
                                         
 АМ      - адресный маркер               
 CRC,КЦК - контрольно-циклический код    
 HOST    - управляющий компьютер         
 ЕСС     - код обнаружения ошибки        
                                         
   Конструктивно  контроллер содержит два
девайса: контроллер ОЗУ 512k и контроллер
HDD. На той же платке есть еще контроллер
ХТ клавы, но он абсолютно независим и тут
не описывается.                          
                                         
 #FCAF  (out)  - управление конфигурацией
контроллера.                             
                                         
 bit  7,1 - старшие биты, формирующие но-
мер   видеостраницы  выводимой  в  режиме
640*200.                                 
 bit  0 - (=1) подключение порта конфигу-
рации ОЗУ 512k.                          
 bit  4  -  (=1) блокировка reset-а порта
конфигурации контроллера.                
 bit  5 - (=1) блокировка записи и чтения
всех портов контроллера.                 
 bit 6 - (=1) аппаратный reset HDD.      
                                         
 #FDAF (out) - порт конфигурации ОЗУ.    
                                         
   Полностью приводить не буду, но факти-
чески можно иметь 4 независимых 128-х ма-
шины. То есть в любой из трех нижних сег-
ментов  может подставляться одна из четы-
рех  страниц, а с адреса #С000 - любая из
32-х имеющихся.                          
                                         
        +---------+-------------+        
        | Сегмент |  Страницы   |        
        +---------+-------------+        
        |  #0000  | 0,8,16,24   |        
        |         |             |        
        |  #4000  | 5,13,21,29  |        
        |         |             |        
        |  #8000  | 2,10,18,26  |        
        |         |             |        
        |  #С000  |   любая     |        
        +---------+-------------+        
                                         
   Далее все про винт. Сразу скажу: злоу-
потреблять  програмными/аппаратными резе-
тами не стоит. Винт паркует головы и дви-
гатель отрабатывает останов/разгон. Жизни
ему  это не прибавит. Я вообще аппаратный
ресет  исключил:  оторвал  1-й контакт от
шлейфа, и все О`К.                       
                                         
+-----+--------------------------+--------------------------+ 
|     |          IN              |           OUT            | 
+=====+==========================+==========================+ 
|#FDAF|Регистр данных D8-D15     |         пот used         | 
|#FFAF|       пот used           |Регистр данных D8-D15     | 
|#FEAF|Регистр данных DO-D7      |Регистр данных DO-D7      | 
|#F6AF|Регистр ошибок            |Регистр предкоипенсацuu   | 
|#EEAF|Регистр счетчика секторов |Регистр счетчика секторов | 
|#E6AF|Регистр ноиера сектора    |Регистр ноиера сектора    | 
|#DEAF|Регистр ноиера цилиндра   |Регистр ноиера цилиндра   | 
|     | (low)                    | (low)                    | 
|#D6AF|Регистр ноиера цилиндра   |Регистр ноиера цилиндра   | 
|     | (high)                   | (high)                   | 
|#CEAF|Регистр накопителя/головки|Регистр накопителя/головки| 
|#C6AF|Регистр состояния         |Регистр коианд            | 
+-----+--------------------------+--------------------------+ 
|#CAAF|Регистр алютернатuвного   |Управление состоянuеи на- | 
|     |состояния                 |копителя                  | 
|#C2AF|Регистр адреса накопителя |      пот used            | 
+-----+--------------------------+--------------------------+ 
                                         
   Регистры  данных  #FDAF,  #FEAF, #FFAF
используются при выполнении операций чте-
ния/записи  сектора  в программном режиме
ввода-вывода.  Регистр  #FEAF недоступен,
пока  не начнется операция чтения или за-
писи. Передача данных осуществляется 16 -
разрядными  словами.  При чтении из порта
#FDAF считываются разряды D8-D15 регистра
данных HDD. Для их корректного считывания
предварительно необходимо считать разряды
D0-D7  (порт  #FEAF) регистра данных HDD.
При  записи сначала заносят D8-D15 в порт
#FFAF, затем D0-D7 в порт #FEAF.         
   При выполнении длинных операций чтени-
я/записи  (когда вместе с данными переда-
ются  байты  КЦК)  4 байта ЕСС передаются
байтами,  перед передачей байтов ЕСС пов-
торно   устанавливается   бит   3   "Data
request" регистра состояния.             
 * Такой  способ  передачи  данных принят
из-за  того, что размер слова для HDD IDE
-  16 бит, а размер шины - 8 бит. Поэтому
одно  слово данных передается/принимается
двумя  командами IN/OUT. Однако для уско-
рения  операций ввода-вывода, адреса пор-
тов  расположены  таким образом, что воз-
можно использование команд INI/OUTI.     
                                         
   Например, чтение одного слова:        
                                         
        LD      HL,BUFFER                
        LD      ВС,#FEAF                 
        INI                              
        INI                              
                                         
   или запись:                           
                                         
        LD      HL,BUFFER                
        LD      ВС,#OOAF                 
        OUTI                             
        OUTI                             
                                         
 *  Адрес  #OOAF взят из-за того, что ко-
манда  OUTI  делает  DEC В до пересылки в
порт.                                    
   Регистр  ошибок  #FбAF (in) определяет
состояное  HDD после выполнения операции.
Состояное этого регистра действительно:  
 -  после  выполнения команды, если уста-
новлен бит "Еггог" в регистре состояния. 
 - после выполнения команды "диагностика"
или  после выполнения внутренней диагнос-
тики HDD по системному сбросу.           
   В диагностическом режиме коды регистра
ошибок определяют следующее:             
                                         
    #01  нет ошибки                      
    #02  ошибка микроконтроллера         
    #03  ошибка буферного ОЗУ            
    #04  ошибка аппаратуры ЕСС           
    #05  ошибка микропроцессора          
    #8х  готовь гроб, копай могилу нахрен
        (HDD неисправен).                
                                         
  Значения  битов регистра ошибок после  
           выполнения команды:           
                                         
+-------+-------+------+-------+------+-------+------+------+ 
|   7   |   6   |   5  |   4   |  3   |   2   |  1   |  О   | 
+-------+-------+------+-------+------+-------+------+------+ 
|   BBK |  UNC  |   О  | IDNF  |  О   |  ABRT | TONF | AMNF | 
+-------+-------+------+-------+------+-------+------+------+ 
                                         
 bit 0 - Data Adress Mark Not Found - ус-
танавливается во время выполнения команды
"чтение  сектора",  если  адресный маркер
данных сектора не найден после правильно-
го нахождения идентификатора этого секто-
ра.                                      
 bit 1 - Track 0 Not Found - устанавлива-
ется только в команде "рекалибровка", ес-
ли после 2048 шагов не обнаружена дорожка
0.                                       
 bit 2 - Aborted Command - устанавливает-
ся  при получении из HDD состояния "Write
fault",  "Not  seek complete", "Drive пот
ready"   или  когда  была  загружена  не-
действительная  команда.  Причина  ошибки
может быть определена из регистров состо-
яния и ошибки.                           
 bit 3 - пот used (=0)                   
 bit 4  -  ID  Not Found  - требуемые ци-
линдр,  головка, сектор не могут быть об-
наружены  или  же  произошла ошибка ЕСС в
поле идентификатора.                     
 bit 5 - пот used (=0)                   
 bit  6  -  Uncorrect Data - ошибка ЕСС в
поле данных. Устанавливается в случае не-
корректируемой ошибки.                   
 bit 7 - Bad Mark Block - в идентификато-
ре обнаружена метка дефектного сектора.  
                                         
   Регистр  предкомпенсации  #FбAF  (out)
использовался  для  указания  номера  ци-
линдра  с  которого  необходимо выполнить
предкомпенсацию.  В  современных  моделях
предкомпенсацией  управляет  сам  накопи-
тель,  поэтому  данный  регистр может ис-
пользоваться для других целей.           
   Регистр счетчика секторов #EEAF содер-
жит количество секторов для операций чте-
ния/записи.   Значение   этого   регистра
уменьшается  на  1  при обработке каждого
сектора.  Передача  1  сектора происходит
при значении 1, при значении 0 - 256 сек-
торов.  Если при выполнении мультисектор-
ной  передачи произошла ошибка записи или
чтения  очередного  сектора,  то передача
прекращается,  и в регистре счетчика сек-
торов  находится кол-во секторов, которое
осталось  после  обнаружения  ошибки. При
успешном завершении команды содержит 0.  
   Регистр  номера сектора #E6AF содержит
стартовый номер сектора для операций чте-
ния-записи.  После обработки каждого сек-
тора  содержимое  инкрементируется. После
завершения команды содержит номер послед-
него обработанного сектора или номер сек-
тора в котором произошла ошибка.         
   Регистры  младшего  #DEAF  и  старшего
#DбAF  байтов  номера цилиндра определяют
цилиндр,  для  которого будет выполняться
данная команда.                          
   Регистр  накопителя/головки #CEAF (in/
out) имеет вид:                          
                                         
+-------+-------+------+-------+------+-------+------+------+ 
|   7   |   6   |   5  |   4   |  3   |   2   |  1   |  О   | 
+-------+-------+------+-------+------+-------+------+------+ 
|   1   |   О   |   1  |  DRV  | HS3  |  HS2  | HS1  | HSO  | 
+-------+-------+------+-------+------+-------+------+------+ 
                                         
 bit 0-3 - двоичный код выбранной головки
 bit 4   - выбор HDD,  0 - накопитель 0  
                       1 - накопитель 1  
 bit 5,6 - размер сектора:               
    00    резерв                         
    01    резерв                         
    10    512 байт/сектор.               
    11    резерв                         
 bit 7   - резерв                        
                                         
   Регистр состояния #C6AF (in) отобража-
ет  текущее состояние HDD. Значение этого
регистра   обновляется  после  выполнения
каждой  команды.  Если установлен бит BSY
этого  регистра, то любые обращения к HDD
запрещены, и значения остальных битов не-
действительны.   Чтение   этого  регистра
сбрасывает аппаратное прерывание IRQ14 (в
данной  схеме это прерывание не использу-
ется).                                   
                                         
   Значения битов:                       
                                         
+-------+-------+------+-------+------+-------+------+------+ 
|   7   |   6   |   5  |   4   |  3   |   2   |  1   |  О   | 
+-------+-------+------+-------+------+-------+------+------+ 
|  BSY  | DRDY  |  WFT |  DSC  | DRQ  |  CORR | INЧ  | ERR  | 
+-------+-------+------+-------+------+-------+------+------+ 
                                         
 bit 0 - Еггог - индицирует, что предыду-
щая команда закончилась с ошибкой, и один
или  несколько  битов  установлены  в ре-
гистре  ошибок.  Используется для быстрой
проверки  успешного  завершения  команды.
Сбрасывается,  когда в регистр команд за-
сылается новая команда.                  
 bit  1 - Index - устанавливается в 1 при
каждом обороте пакета блинов. В современ-
ных моделях не используется.             
 bit 2 - Corrected Data - индицирует, что
при чтении данных произошла ошибка, кото-
рая  была успешно скорректирована аппара-
турой КЦК. Корректируемые ошибки не прек-
ращают мультисекторную передачу.         
 bit  3 - Data Request - этот бит показы-
вает, что имеется запрос на обмен данными
с  буфером  сектора при выполнении команд
чтения-записи. По этому запросу необходи-
мо  прочитать/записать  данные в буфер, в
зависимости  от  выполняемой  команды. (в
данной  схеме,  бит  схожий  с этим (27-й
контакт разъема) управляет сигналом /Wait
CPU Z80).                                
 bit  4 - Drive Seek Complete - индициру-
ет,  что головки завершили операцию поис-
ка.                                      
 bit  5  -  Write  Fault - индицирует не-
исправность в накопителе, или попытку ис-
полнить  команду "запись" с некорректными
параметрами.                             
 bit  6 - Drive Ready - установленный в 1
означает  готовность HDD к выполнению ко-
манды.                                   
 bit 7 - Busy - определяет состояние HDD.
Устанавливается в 1 при выполнении коман-
ды или диагностики после системного сбро-
са.  Когда  этот  бит установлен, никакие
другие биты регистра состояния не являют-
ся  действительными. Бит Busy должен быть
проверен  перед  чтением  любого регистра
состояния.                               
                                         
   Регистр команд #C6AF (out) использует-
ся  для загрузки выполняемой команды. Пе-
ред  записью  команды необходимо подгото-
вить  файл  задания - Task File (записать
необходимые  данные в порты #EEAF, #E6AF,
#DEAF, #DбAF, #CEAF), когда HDD находится
в состоянии "не занят" (Busy = 0). Выпол-
нение  команды  начинается  немедленно, с
момента записи в регистр команд.         
   Регистр    альтернативного   состояния
#CAAF  (in) содержит такую же информацию,
что  и основной. Различие в том, что чте-
ние альтернативного регистра не сбрасыва-
ет  установленное  прерывание  IRQ14.  (В
данной схеме IRQ14 не используется).     
                                         
   Регистр  управления  состоянием  #CAAF
(out) содержит три управляющих бита:     
                                         
+-------+-------+------+------+-------+-------+------+------+ 
|   7   |   6   |   5  |   4  |   3   |   2   |  1   |  О   | 
+-------+-------+------+------+-------+-------+------+------+ 
|       |       |      |      | HS3EN |  SRST | /IEN |      | 
+-------+-------+------+------+-------+-------+------+------+ 
                                         
 bit  1 - Interrupt Enable - бит разреше-
ния  прерывания от HDD к HOST. Когда этот
бит  активен  и  накопитель  выбран, HOST
прерывается.  Сигнал  к HOST IRQ14 должен
быть разрешен через трехстабильный буфер.
Когда этот бит не активен или HDD не выб-
ран,  сигнал HOST IRQ14 будет иметь высо-
кий уровень. (В данной схеме это прерыва-
ние не используется).                    
 bit  2 - Soft Reset - программный сброс.
Для сброса HDD этот бит надо установить в
1 и затем сбросить в 0.                  
 bit  3  -  Heads 3 Enable - используется
для разрешения выбора головок с 8 по 15. 
                                         
   Регистр  адреса  накопителя #С2AF (in)
содержит  номера  головки  и  накопителя,
выбранные предыдущей командой.           
                                         
+-------+-------+------+-------+------+------+------+------+  
|   7   |   6   |   5  |   4   |  3   |  2   |  1   |  О   |  
+-------+-------+------+-------+------+------+------+------+  
|       | /WTG  | /HS3 |  /HS2 | /HS1 | /HSO | /DS1 | /DSO |  
+-------+-------+------+-------+------+------+------+------+  
                                         
 bit 0,1 - Drive Select - биты выбора со-
ответствующего накопителя 0 или 1.       
 bit 2,3,4,5 - Head Select - двоичный код
выбранной головки.                       
 bit  6 - Write Gate - бит выполнения за-
писи, активен во время операции записи.  
                                         
                  -----                  
                                         
    Краткое описание команд HDD IDE.     
                                         
   Команды из Host записываются в регистр
команд  #C6AF  и  выполняются немедленно.
Перед  записью команды в регистрах #EEAF,
#E6AF, #DEAF, #DбAF, #CEAF надо сформиро-
вать  файл  задания  (task file), который
содержит данные, необходимые для выполне-
ния команды. Коды команд приведены в таб-
лице:                                    
                                         
+---------------------+------+------------------------------+ 
|                     |      |     Uсполюзyеиые регистры    | 
|    Kоианда          | Код  +-----+-----+-----+-----+------+ 
|                     |      |#EEAF|#E6AF|#DEAF|#D6AF|#CEAF | 
+=====================+======+=====+=====+=====+=====+======+ 
| Внутренняя          | #9О  |     |     |     |     |  D   | 
|   диагностика       |      |     |     |     |     |      | 
|                     |      |     |     |     |     |      | 
| Фориатuрованuе      | #5О  |  Y  |     |  Y  |  Y  |  Y   | 
|  дорожки            |      |     |     |     |     |      | 
|                     |      |     |     |     |     |      | 
| Uдентuфuкацuя       | #EC  |     |     |     |     |  D   | 
|  HDD                |      |     |     |     |     |      | 
|                     |      |     |     |     |     |      | 
| Uнuцuалuзацuя       | #91  |  Y  |     |     |     |  Y   | 
| параиетров HDD      |      |     |     |     |     |      | 
|                     |      |     |     |     |     |      | 
| Рекалибровка        | #1О  |     |     |     |     |  D   | 
|                     |      |     |     |     |     |      | 
| Чтение буфера       | #E4  |     |     |     |     |  D   | 
|                     |      |     |     |     |     |      | 
| Чтение сектора(ов)  | #2Ч  |  Y  |  Y  |  Y  |  Y  |  Y   | 
|                     |      |     |     |     |     |      | 
| Верификация         | #41  |  Y  |  Y  |  Y  |  Y  |  Y   | 
|                     |      |     |     |     |     |      | 
| Позиционирование    | #7О  |     |  Y  |  Y  |  Y  |  Y   | 
|                     |      |     |     |     |     |      | 
| Запuсю буфера       | #E8  |     |     |     |     |  D   | 
|                     |      |     |     |     |     |      | 
| Запuсю сектора(ов)  | #3Ч  |  Y  |  Y  |  Y  |  Y  |  Y   | 
|                     |      |     |     |     |     |      | 
| Sleep (спатю)       | #E6  |     |     |     |     |      | 
|                     |      |     |     |     |     |      | 
+---------------------+------+-----+-----+-----+-----+------+ 
                                         
  Y - регистр используется.              
                                         
  D  - в регистре #CEAF (выбор накопителя
и  головки) используется только выбор на-
копителя.                                
  X - младшая тетрада команд чтения и за-
писи сектора.                            
    X = %OOlr                            
    l  - отвечает за режим длинной опера-
ции.                                     
     l=0  - нормальный режим, выполняются
функции CRC или ЕСС.                     
     l=1 - режим длинной операции. Не вы-
рабатываются байты CRC или ЕСС, возникно-
вение  ошибок в поле данных не проверяет-
ся. При чтении/записи сектора, добавляют-
ся 4 байта КЦК пользователя.             
                                         
    r  - режим повторения при возникнове-
нии ошибки.                              
      r=0  повторение разрешено          
      r=1  повторение запрещено          
                                         
   Внутренняя  диагностика (#90) - выпол-
няется  внутренняя  диагностика  HDD,  по
окончании  которой в регистре ошибок фор-
мируется код завершения. Если ошибок нет,
код завершения #01.                      
   Форматирование дорожки (#50) - по этой
команде записывается формат нижнего уров-
ня на указанную дорожку HDD. У многих на-
копителей IDE форматирование дорожки про-
изводится  при включении технологического
режима.                                  
   Идентификация HDD (#ЕС)  - по этой ко-
манде в секторный буфер считывается  пас-
порт диска и формируется запрос DRQ в ре-
гистре состояния.                        
   Инициализация  параметров  HDD (#91) -
по  этой команде HDD настраивается на па-
раметры  задаваемые  накопителю  из Host.
Данная  команда  должна выполняться после
"сброса" HDD.                            
   Рекалибровка  (#10)  - по этой команде
головки  HDD  устанавливаются  на 0-й ци-
линдр.                                   
   Чтение  буфера (#Е4) - по этой команде
устанавливается  запрос  DRQ  в  регистре
состояния.  Host может прочитать содержи-
мое буфера (256 слов) через регистры дан-
ных.                                     
   Чтение сектора(ов) (#2X) - по этой ко-
манде  заданный сектор считывается в сек-
торный  буфер (обычно 512 байт). и форми-
руется  запрос  DRQ. Host может прочитать
содержимое  буфера  (256  слов) через ре-
гистры данных. В команде могут быть уста-
новлены  биты  l  и/или r. Содержимое ре-
гистра #EEAF указывает на количество счи-
тываемых секторов (если #EEAF = 0 то счи-
тывается  256  секторов).  Содержимое ре-
гистра #E6AF указывает начальный сектор. 
   Верификация (#41) - проверяется формат
указанной дорожки.                       
   Позиционирование  (#70)  - головки HDD
устанавливаются на указанный цилиндр.    
   Запись  буфера (#Е8) - устанавливается
запрос  DRQ  в  регистре состояния, после
этого  Host должен переслать 256 слов че-
рез регистры данных.                     
   Запись  сектора(ов) (#3X) - устанавли-
вается запрос DRQ в регистре состояния, и
Host  должен переслать 256 слов через ре-
гистры данных. После этого данные записы-
ваются на магнитный диск. В команде могут
быть установлены биты l и/или r. Содержи-
мое  регистра  #EEAF  указывает  на коли-
чество  записываемых секторов (если #EEAF
= 0 то записывается 256 секторов). Содер-
жимое  регистра #E6AF указывает начальный
сектор.                                  
   Sleep  (спать)  (#Е6) - парковка голо-
вок, останов двигателя "блинов" и переход
в  режим  пониженного  энергопотребления.
Любая  другая  команда  прерывает команду
sleep.  В старых моделях не поддерживает-
ся.                                      
                  -----                  
                                         
      Адресация регистров HDD IDE.       
                                         
   Для  адресации  регистров  HDD  IDE  в
ZX-NEXT используются сигналы:            
                                         
A5,A6,A7,A8,A9  -  (селектирующие  линии)
формируют базовый адрес регистров HDD.   
A10,A11,A12,A13  - (соадресные линии) ис-
пользуются при выборе регистров HDD.     
                                         
/WR - строб записи данных в регистры.    
/RD - строб чтения данных из регистров.  
                                         
   Для выбора регистров:                 
                                         
A5,A7,A9 = 1                             
A6,A8    = 0                             
                                         
   Состояние  других  сигналов показано в
таблице.                                 
                                         
+-----+-----+-----+-----+-----------------+-----------------+ 
| А1О | А11 | А12 | А13 | Чтение регистров| Запuсю регистров| 
|     |     |     |     |  по сигналу /RD |  по сигналу /WR | 
+=====+=====+=====+=====+=================+=================+ 
|  О  |  О  |  О  |  О  |      #C2AF      |        -        | 
|  О  |  1  |  О  |  О  |      #CAAF      |      #CAAF      | 
|  1  |  О  |  О  |  О  |      #C6AF      |      #C6AF      | 
|  1  |  1  |  О  |  О  |      #CEAF      |      #CEAF      | 
|  1  |  О  |  1  |  О  |      #D6AF      |      #D6AF      | 
|  1  |  1  |  1  |  О  |      #DEAF      |      #DEAF      | 
|  1  |  О  |  О  |  1  |      #E6AF      |      #E6AF      | 
|  1  |  1  |  О  |  1  |      #EEAF      |      #EEAF      | 
|  1  |  О  |  1  |  1  |      #F6AF      |      #F6AF      | 
|  1  |  1  |  1  |  1  |      #FEAF      |      #FEAF      | 
+-----+-----+-----+-----+-----------------+-----------------+ 
                                         
                  -----                  
                                         
     Формат паспорта Hdd (512 байт).     
             Все числа Нех.              
                                         
+------+--------+-------------------------------------------+ 
| Addr | Length | Значение                                  | 
+------+--------+-------------------------------------------+ 
|  ООО |   О2   | Главное слово конфигурации                | 
|  ОО2 |   О2   | Количество цилиндров                      | 
|  ООЧ |   О2   | Зарезервировано                           | 
|  ООб |   О2   | Количество головок                        | 
|  ОО8 |   О2   | Кол-во байт на дорожке                    | 
|  ООА |   О2   | Кол-во байт в секторе                     | 
|  OOC |   О2   | Кол-во секторов на дорожке                | 
|  OOE |   О6   | Спецификация продавца                     | 
|  О14 |   14   | Серийный ноиер (ASCII)                    | 
|  О28 |   О2   | Тип контроллера                           | 
|  О2А |   О2   | Eикостю буфера (кэша) деленая на #2ОО байт| 
|  О2C |   О2   | Значение кода ECC для коианд Long Rd/Wr   | 
|  О2E |   О8   | Версия рабочих програии (ASCII)           | 
|  О36 |   26   | Моделю (ASCII)                            | 
+------+--------+-------------------------------------------+ 
                                         
   Дальше каждый производитель волен впи-
сывать  что угодно. У меня далее одни ну-
ли.                                      
                                         
 Слово - два байта, младший/старший.     
 ЕСС - Еггог Control Code.               
                                         
   Из-за   непонятных  стандартов,  ASCII
выглядит  в  паспорте  не совсем понятно.
Модель  stЗ144AT  смотрится как ts1344TA.
Значит,  если  понадобится вывести сие на
экран, нужно поменять местами первый байт
со  вторым,  третий с четвертым и т.д. до
конца строки.                            
                                         
      Для понятности терминологии:       
                                         
  Дисковод:             Мой винт:        
80  цилиндров        1001 цилиндр        
2   головки          15   головок        
16  секторов/трек    17   секторов/трек  
256 байт/сектор      512  байт/сектор    
                                         
                  -----                  
                                         
Схема подключения HDD IDE к ZX SPECTRUM. 
                                         
   Схема  имеет огромный размер и набрана
в  условной графике обычным текстовым ре-
дактором,  поэтому  здесь  ее нет. Но она
есть  в  приложении,  так  что ищите там.
Здесь только комментарии :(              
                                         
   Все микрухи - серии 1533.             
                                         
D1      ИД7                              
D2      ЛЕ1                              
D3      ЛЛ1                              
D4      АПб                              
D5      ТМ9                              
D8      ЛП8                              
D9      ЛН1                              
D10     ЛИ1                              
D11,12  ИР23                             
                                         
   D10  в  принципе можно не ставить, она
чисто  буферизующая, но я бы не стал сое-
динять  напрямую шины компа и винта. D6 и
D7  отвечают за управление памятью 512k и
на схеме не показаны. Микрухи были вычис-
лены мной по памяти со справочником в ру-
ках.  Диоды  - любые маломощные, например
КДS22.  Неуказанные  номиналы  резисторов
некритичны, подбираются на глаз, в диапа-
зоне  1.5  -  10 k. Схему я распечатал, и
долго сравнивал с оригиналом, глюков вро-
де  не  нашел. Транзистор VT1 отвечает за
блокировку   аппаратного   ресета   порта
#FCAF. Можно поставить любой подходящий. 
   Сбросить винт можно аппаратно (битом 6
регистра  #FCAF), либо через soft reset в
регистре  управления  состоянием (бит 2 в
#CAAF).  При ресете винт паркует головы и
отрабатывает  останов/разгон двигателя, а
это ему никакой пользы не приносит. У ме-
ня  винт нельзя сбросить аппаратно (ресет
на   шлейфе  перекушен),  и  все  рулезз.
Единственный  способ полностью остановить
движок  -  команда "sleep", т.е. "спать",
так что все ОК.                          



Другие статьи номера:

От автора - управление, действие иконок в статье, о следующих номерах, связь.

Программистам - Процессор Z380

Программистам - Сборник кодов: зашифровка файла, Эффект точечной сетки, работа с диском при включенных прерываниях, программирование кэша.

Программистам - Теория: Биты и байты.

Очумелые ручки - Реализация кэша.

Очумелые ручки - ZX-дигитайзер: оцифровка видеосигнала.

Очумелые ручки - Всё о HDD IDE: Краткое описание портов и битов.

Белый_попугай - Советы молодожёнам.

Белый_попугай - Поручик Ржевский.

Белый_попугай - О начальстве.

Белый_попугай - Автошкола.

Белый_попугай - Набор приколов.

Раскрутка - Новые группы.

Раскрутка - Алло, таланты!

Раскрутка - Neos

Игротека - Редактор черного ворона и его новые миссии.

Игротека - Прохождение игр: 12 Тайныx Книг, Twillight.

Игротека -Перспективные проекты.

Разное - Наша жизнь компьютерщика.

Разное - Глюкодром.

Разное - Intel outside.

Разное - Почтовый ящик.

Разное - Pidarsoft.

Разное - Реклама.

Комментарий к приложению


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Контроллер SMUC - Истрория создания.
Железо - схема турбо-режима дисковода.
Очумелые ручки - Подключение контроллеров дисковода к ZX-Spectrum.

В этот день...   18 января