ZXNet эхоконференция «hardware.zx»


тема: Подключение IDE-винтов к Спектрумам



от: Eugene Stahov
кому: All
дата: 01 May 2000
_-~ Greetings to you, All !

В течение довольно долгого времени происходила разработка сабжевой схемы.
Устройство разрабатывалось как альтернатива SMUC - девайсу. Пока схема собрана
на макетке и МГТФ, в Екатеринбурге довольно много желающих на сей девайс.
Перед тем, как делать печатку, хотелось бы выслушать соображения всесведущего
ALL о данном вопросе.

Для начала:

Основные свойства, аппаратные особенности:
1. Файловая система MS-DOS
2. Возможность работы с TR-DOS на уровне #3D13 (скорость - высокая)
3. Возможна загрузка с винта
4. диапазон портов HDD: xx90h-xx9fh
5. для устранения конфликтов вводится /IORQGE
/IORQGE=/IORQ | (A7 & A4 & /A6 & /A5)
6. Имеется мс 62256-621024 (в последнем случае можно отключать пзу полностью.
), в частности, это позволяет работать с винтом в TR-DOS (эмуляция #3Д13,
буферизация секторов 512<->256)
4. При работе с винтом в ТR-DOS на любое из устройств A,B,C,D можно назначить
обраы дисков *.TRD (естественно, не более 4х за раз).
^^^^^^^^^^^^^^^^^это^^^^^уже^^^^^^^^^^есть^^^^^^^^^^^^^

7. Возможна реализация в будующем:
- второй IDE порт
- универсальный последовательный контроллер (I2C, RS232, USB) - I2C
realtime clock DS1307 (dip08)

Почему I2C? Я уже имел дело с этими часами, а также с 512ви1
Для 512ви1 пришлось делать относительно сложную схему блокировки от искажения
информации при вкл/выкл. А тут все внутри.

предполараемая цена < 10$

ВОПРОС:
- какие на данное время существуют раскладки портов IDE?


~-_ Ну, All, бывай.

Eugene Stahov
Воскресенье 1 Май 2000 13:34:43

[] [STUDIO STALL] [STD2] [QUORUM]

от: Felix Knajzev
кому: Eugene Stahov
дата: 05 May 2000
Приветствую тебя, о досточтимый(ая) Eugene!

[Понедельник 1 Май 2000] в [13:34:43] Eugene Stahov начертал(а) письмецо к All.
Обсуждали они тему "Подключение IDE-винтов к Спектрумам". Продолжим начатое...

[skip]

ES> ВОПРОС:
ES> - какие на данное время существуют раскладки портов IDE?


================== begin of file "NemoHDD .C" ==================
DATL EQU #10 ;10:Младший байт регистра данных
DATH EQU DATL+1 ;11:Старший байт регистра данных
ERRF EQU DATL+#20 ;31:Рг ошибок
SCNT EQU ERRF+#20 ;51:Рг счетчика сектора
SNMB EQU SCNT+#20 ;71:Рг н-ра сектора
CYLL EQU SNMB+#20 ;91:Рг н-ра цилиндра (младший)
CYLH EQU CYLL+#20 ;B1:Рг н-ра цилиндра (старший)
SDH EQU CYLH+#20 ;D1:Рг н-ра привода и головки
RSTA EQU SDH+#20 ;F1:Рг состояния
RCOM EQU RSTA ;F1:Рг команд
ASR EQU #C8 ;Alter Stat Rg
FDR EQU #C8 ;Fixed disk Rg
DIR EQU #E8 ;Dig In Rg
SYSR EQU #F8 ;сис рг
.

================== end of file "NemoHDD .C" ==================

С уважением, Felix.

[I.ZX]

от: Ivan Mak
кому: Kirill Frolov
дата: 05 May 2000

Приветствую Вас, Kirill!

<12:46> Kirill Frolov write to Ivan Mak:

IM>> Саму схему уже кидал сюда, если нужно, повтоpю.

KF> Повтоpи, а то что-то не понятно...


=== Cut ===

╔════════════════════════════════════════╦══════════════════════╗
║ ║ Designed by Ivan Mak ║
║ Sprinter HDD controller. Version 1.02. ║ FIDO: 2:5030/529.24 ║
║ ║ (C) 1999 Peters-Plus ║
╠════════════════════════════════════════╩══════════════════════╣
║ Схема предназначена для возможного повторения и установки на ║
║ компьютеры типа ZX-Spectrum, а так же для понимания логики ║
║ работы HDD компьютера Sprinter ║
╠═══════════════════════════════════════════════════════════════╣
║ "Буферы" ║
║ К555АП6 ║
║ ┌──┬────┬──┐ ║
║ D0──────┤D0│ RG │Q0├───────────────────────────────────┬─WD0 ║
║ D1──────┤D1│ │Q1├──────────────────────────────────┬──WD1 ║
║ D2──────┤D2│ │Q2├─────────────────────────────────┬───WD2 ║
║ D3──────┤D3│ │Q3├────────────────────────────────┬────WD3 ║
║ D4──────┤D4│ │Q4├───────────────────────────────┬─────WD4 ║
║ D5──────┤D5│ │Q5├──────────────────────────────┬──────WD5 ║
║ D6──────┤D6│ │Q6├─────────────────────────────┬───────WD6 ║
║ D7──────┤D7│ │Q7├────────────────────────────┬────────WD7 ║
║ ├──┤ │ │ ││││││││ ║
║ /RD───┤<>│ │ │ ││││││││ ║
║ DIR1──┤OE│ │ │ ││││││││ ║
║ └──┴────┴──┘ ││││││││ ║
║ К555АП6 К555ИР23 ││││││││ ║
║ ┌──┬────┬──┐ ┌──┬────┬──┐ ││││││││ ║
║ D0──────┤D0│ RG │Q0├────────┬──────┤D0│ RG │Q0├────────┘ ║
║ D1──────┤D1│ │Q1├───────┬───────┤D1│ │Q1├───────┘ ║
║ D2──────┤D2│ │Q2├──────┬────────┤D2│ │Q2├──────┘ ║
║ D3──────┤D3│ │Q3├─────┬─────────┤D3│ │Q3├─────┘ ║
║ D4──────┤D4│ │Q4├────┬──────────┤D4│ │Q4├────┘ ║
║ D5──────┤D5│ │Q5├───┬───────────┤D5│ │Q5├───┘ ║
║ D6──────┤D6│ │Q6├──┬────────────┤D6│ │Q6├──┘ ║
║ D7──────┤D7│ │Q7├─┬─────────────┤D7│ │Q7├─┘ ║
║ ├──┤ │ │ ││││││││ ├──┤ │ │ ║
║ VCC──┤<>│ │ │ ││││││││DIR3──┤WR│ │ │ ║
║ /WR──┤OE│ │ │ ││││││││DIR2──┤OE│ │ │ ║
║ └──┴────┴──┘ ││││││││ └──┴────┴──┘ ║
║ ││││││││ ║
║ │││││││└────────────────────────────WD8 ║
║ ││││││└─────────────────────────────WD9 ║
║ │││││└──────────────────────────────WD10 ║
║ ││││└───────────────────────────────WD11 ║
║ │││└────────────────────────────────WD12 ║
║ ││└─────────────────────────────────WD13 ║
║ │└──────────────────────────────────WD14 ║
║ └───────────────────────────────────WD15 ║
║ ║
╠═══════════════════════════════════════════════════════════════╣
║ ║
║ "Схема, вшиваемая в ПЛМ" ┌─────────────────────DIR3 ║
║ │ ┌──┐ ║
║ ┌───/HDD_ENABLE─────┬─┴───┤1 ├──────────/HDD_CS1 ║
║ │ ┌──┐ │ ┌───┤ │ ║
║ ├─┤1 ├─────┐ │ │ ├──┤ ║
║ /WR──────────│─┤ │ │ ├─│───┤1 ├──────────/HDD_CS3 ║
║ │ ├──┤ │ │ │ ┌─┤ │ ║
║ ├─┤1 ├───┐ │ │ │ │ └──┘ ║
║ /RD──────────│─┤ │ │ │ │ │ └──────┐ ║
║ │ └──┘ │ │ │ │ ┌──┐ │ ║
║ └──────┐ │ │ ┌──────│─┴───┤1 o─┘ ║
║ │ │ │ │ │ └──┘ ║
║ │ │ │ │ │ ║
║ ┌──┐ ┌──┐ │ │ │ │ ├────────────┐ ║
║ /WR───┤& ├─────┤1 ├─┘ │ │ │ │ │ ║
║ /RD───┤ │ ┌─┤ │ │ │ │ │ ┌──┐ │ ║
║ └──┘ │ └──┘ │ │ │ └─────┤1 │ │ ║
║ │ │ │ │ ┌──────────┤ ├─┐ │ ║
║ │ │ │ │ │ WRH └──┘ │ │ ║
║ │ ┌──┐ │ │ │ │ ┌──┬────┬──┐ │ │ ┌──┐ ║
║ A8──────┬────│─┤1 o───│─│─│─┤ ┤S │ TT │ │ │ └─┤1 ├─────DIR1 ║
║ │ │ └──┘ │ │ │ │ ├──┤ │ Q├──│───┤ │ ║
║ │ └──────┐ │ │ │ ├─┤D │ │ │ │ ├──┤ ║
║ │ ┌──┐ │ │ ├─│─┼─>C │ │ _│ └───┤1 ├─────DIR2 ║
║ /IORQ───│──────┤1 │ │ │ │ │ │ ├──┤ │ Qo┐ ┌┤ │ ║
║ │ ┌─┤ ├─┘ ├─│─│─│─┤R │ │ ││ │└──┘ ║
║ │ │ └──┘ │ │ │ │ └──┴────┴──┘│┌──┐│ ║
║ │ └──────┐ │ │ │ │ └┤& ├┘ ║
║ │ │ └─│─│─│─────┬────────┤ │ ║
║ │ │ │ │ │ │ └──┘ ║
║ │ │ │ │ │ │ ┌──┐ ║
║ │ │ │ │ │ └─────────────┤1 │ ║
║ └───────────│───│─│─│───────────────────┤ ├──/HDD_RD ║
║ │ │ │ │ └──┘ ║
║ ┌──┐ ┌──┐ │ │ │ │ ┌──┐ ║
║ A1────┤& o─────┤& o─┘ │ │ └──────────┤1 ├───────────/HDD_WR ║
║ A2────┤ │ ┌───┤ │ └─│────────────┤ │ ║
║ ├──┤ │ ┌─┤ │ │ └──┘ ║
║ A5────┤1 ├─┘ │ └──┘ │ ║
║ A7────┤ │ │ │ ║
║ └──┘ │ │ ┌──┐ ║
║ A6───────────┘ │ A0────────┤1 ├─────────────HD_A0 ║
║ │ ├──┤ ║
║ ┌──┐ ┌──┐ │ A1────────┤1 ├─────────────HD_A1 ║
║ A1────┤1 ├─────┤& ├───────│────────┬───┤ │ ║
║ A2────┤ │ ┌───┤ │ │ │ ├──┤ ║
║ └──┘ │ ├──┤ │ A2────│───┤1 ├─────────────HD_A2 ║
║ A14────────┴───┤& ├───────┘ └───┤ │ ║
║ A2─────────────┤ │ └──┘ ║
║ └──┘ ║
║ ═════════════════════════════════════════════════════════════ ║
║ Здесь прорисованя только логика в ПЛМ. ║
║ Действительная реализация в корне отличается от нарисованной, ║
║ так как ПЛМ позволяет реализовывать сложные функции на одной ║
║ ячейке. Кроме того, адресация портов производится через схему ║
║ распределения портов Sprinter-а, которая позволяет изменить ║
║ все адреса портов винчестера. ║
║ При повторении достаточно повторить только логику и обеспечить║
║ отсутствие "глитчей". ║
║ Кроме того в ПЛМ введена дополнительная задержка от начала /IO║
║ так как в режиме TURBO на 21MHz не успевают устанавливаться ║
║ адреса портов винчестера. ║
║ Выводы /HDD_WR,/HDD_RD,/HDD_CS1,/HDD_CS3 поданы на IDE разъем ║
║ через сопротивления 150 ом. ║
║ Сигнал /HD_RES можно подключать, можно не подключать к сбросу ║
║ компьютера. Лучше не подключать, но некоторые винчестеры ║
║ могут серьезно "затыкаться" при неправильной работе с ними и ║
║ им может понадобиться железный сброс. ║
║ Hа сигнал /PDIAG вешается светодиод через резистор 300 ом на ║
║ +5v для индикации работы HDD. (но иногда светодиод светится ║
║ как попало, особенно со старыми винчестерами и в режиме SLAVE ║
║ Сигнал /HD_RDY либо подключается, либо не подключается на ║
║ /WAIT процессора. Лучше подключить через элемент И с сигналом ║
║ идущим на этот вывод процессора со схемы компьютера. ║
║ ═════════════════════════════════════════════════════════════ ║
║ Разводка 40-pin разъема HDD ║
║ ┌──────────┬───────┬──────────┬───────────┐┌────────────────┐ ║
║ │1 /HD_RES│11 WD3 │21 --- │31 --- ││ │ ║
║ │2 GND │12 WD12│22 GND │32 --- ││ "штыри" │ ║
║ │3 WD7 │13 WD2 │23 /HDD_WR│33 HD_A1 ││ на плате │ ║
║ │4 WD8 │14 WD13│24 GND │34 --- ││ для кабеля │ ║
║ │5 WD6 │15 WD1 │25 /HDD_RD│35 HD_A0 ││ │ ║
║ │6 WD9 │16 WD14│26 GND │36 HD_A2 ││ 246 40 │ ║
║ │7 WD5 │17 WD0 │27 /HD_RDY│37 /HDD_CS1││ ooo........o │ ║
║ │8 WD10 │18 WD15│28 --- │38 /HDD_CS3││ ooo........o │ ║
║ │9 WD4 │19 GND │29 --- │39 /PDIAG ││ 135 39 │ ║
║ │10 WD11 │20 --- │30 GND │40 GND ││ │ ║
║ └──────────┴───────┴──────────┴───────────┘└────────────────┘ ║
║ ═════════════════════════════════════════════════════════════ ║
║ Схема работает на Sprinter-е, но в самом рисунке возможны ║
║ неточности. ║
║ ═══════════════════════════════════════╦═════════════════════ ║
║ Порты HDD: xx50h..xx55h ║ Считывание сектора: ║
║ xx50h - порт данных ║ CALL HDD_READY ║
║ 0051h - порт ошибок/предкомпенсации ║ JR C,ERROR ║
║ 0052h - порт числа секторов ║ LD BC,0050h ║
║ 0053h - порт номера сектора ║ INI..INI ; 512 раз ║
║ 0054h - порт номера цилинтра, младшего ║ RET ║
║ 0055h - порт номера цилинтра, старшего ╠═════════════════════ ║
║ 4052h - порт драйва/номера головки ║ Запись сектра: ║
║ 4053h - порт команд/регистра состояния ║ CALL HDD_READY ║
║ 4054h - порт порт 3F6h ║ JR C,ERROR ║
║ 4055h - порт порт 3F7h ║ LD BC,0150h ║
║ При записи в порт, его адрес надо ║ OUTI..OUTI ; 512 раз ║
║ увеличить на 100h ║ RET ║
║ ═══════════════════════════════════════╩═════════════════════ ║
╠═══════════════════════════════════════════════════════════════╣
║ Как работает схема? ║
║ ║
║ Z80 ┌───┐ ║
║ bus │Buf│ ║
║ ──┬──┤<─>├────────────┬──<─> Low Byte ║
║ │ │ 1 │ │ ║
║ │ ├───┤ ┌───┐ │ ║
║ │ │Buf│ │Reg│ │ ║
║ └──┤──>├──┬──┤──>├──┘ HDD bus ║
║ │ 2 │ │ │ 3 │ ║
║ └───┘ │ └───┘ ║
║ │ ║
║ └────────────<─> High Byte ║
║ ║
║ 1. Чтение всех регистров, кроме регистра данных, A8 = 0 ║
║ Данные с шины HDD через буфер 1 передаются в процессор. ║
║ Только младший байт, старший не нужен. ║
║ ║
║ 2.1 Чтение регистра данных, A8 = 0 ║
║ Данные с шины HDD через буфер 1 передаются в процессор. ║
║ Только младший байт, старший нужен и он защелкивается в ║
║ регистре 3 ║
║ ║
║ 2.2 Чтение регистра данных, A8 = 1 ║
║ Данные из регистра 3 через буфер 1 передаются в процессор. ║
║ - старший байт - HDD в этот момент не выбирается ║
║ ║
║ 3. Запись всех регистров, кроме регистра данных, A8 = 1 ║
║ Данные с шины Z80 через буфер 1 передаются на шину HDD. ║
║ Только младший байт, старший не нужен. ║
║ ║
║ 4.1 Запись регистра данных, A8 = 0 ║
║ Данные с шины Z80 через буфер 2 передаются в регистр 3. ║
║ Только младший байт, старший нужен и он ожидается в следующем ║
║ цикле. HDD в этот момент не выбирается. ║
║ ║
║ 4.2 Запись регистра данных, A8 = 1 ║
║ Данные из регистра 3 передаются на шину HDD - младший байт. ║
║ - старший байт - через буфер 2 передается с процессора ║
║ ║
║ Почему пункт 4.2 отличается от 3, хотя операции по виду ║
║ одинаковы? ║
║ Потому что перед 4.2 всегда идет 4.1, который устанавливает ║
║ тригер WRH в единицу и, таким образом переключает путь ║
║ прохождения байтов. Это и позволяет использовать команды OUTI ║
║ для записи сектора в HDD ║
║ ║
╚═══════════════════════════════════════════════════════════════╝

=== Cut ===

Вай! Протосы атакуют моих зерлингов! Пора сматываться. Ivan.

- Разводись схемка, больша и маленька.. [ Sprinter-II ] [Forth-CPU] [ZX]

от: Oleg Grigoriev
кому: Eugene Stahov
дата: 07 May 2000

Пусть враги твои, Eugene, умрут без сыновей!

1 May 2000 at 13:34, Eugene Stahov ═> All:

ES> Перед тем, как делать печатку, хотелось бы выслушать соображения
ES> всесведущего ALL о данном вопросе.

ES> Для начала:

ES> Основные свойства, аппаратные особенности:
ES> 1. Файловая система MS-DOS

hpfs...

ES> 2. Возможность работы с TR-DOS на уровне #3D13 (скорость - высокая)

высокая - это какая?

ES> 3. Возможна загрузка с винта

как реализовано?

ES> 4. диапазон портов HDD: xx90h-xx9fh

т.е. inir/otir не катят?

ES> 6. Имеется мс 62256-621024 (в последнем случае можно отключать пзу
ES> полностью. ), в частности, это позволяет работать с винтом в TR-DOS
ES> (эмуляция #3Д13, буферизация секторов 512<->256)

программное кэширование секторов винта предполагается?

ES> 7. Возможна реализация в будующем:
ES> - второй IDE порт

имеется в виду другой контроллер на других портах? или сейчас есть только
master?

ES> предполараемая цена < 10$

это, конечно, круто, хотя мне ||.

ES> ВОПРОС:
ES> - какие на данное время существуют раскладки портов IDE?

smuc, by Jason, все под досом:

── { Begin } ─────────────────────────────────────────── { ports .C } ──

SMUC controllers ver 1.1 - 1.3 IDE registers.

Command block registers (блок регистров команд).

┌───────┬───────────────────────────┬────────────────────────────┐
│ │ IN │ OUT │
╞═══════╪═══════════════════════════╪════════════════════════════╡
│ #D8BE │ Регистр данных D8-D15 │ Регистр данных D8-D15 │
│ │ │ │
│ #F8BE │ Регистр данных D0-D7 │ Регистр данных D0-D7 │
│ #F9BE │ Регистр ошибок │ Регистр предкомпенсации (*)│
│ #FABE │ Регистр счетчика секторов │ Регистр счетчика секторов │
│ #FBBE │ Регистр номера сектора │ Регистр номера сектора │
│ #FCBE │ Регистр номера цилиндра │ Регистр номера цилиндра │
│ │ (low) │ (low) │
│ #FDBE │ Регистр номера цилиндра │ Регистр номера цилиндра │
│ │ (high) │ (high) │
│ #FEBE │ Регистр накопителя/головки│ Регистр накопителя/головки │
│ #FFBE │ Регистр состояния │ Регистр команд │
├───────┼───────────────────────────┼────────────────────────────┤

Control block registers (блок регистров управления).
Регистры доступны, если установлен bit 7 #FFBA.

├───────┼───────────────────────────┼────────────────────────────┤
│ #FEBE │ Регистр альтернативного │ Управление состоянием нако-│
│ │ состояния │ пителя │
│ #FFBE │ Регистр адреса накопителя │ not used │
└───────┴───────────────────────────┴────────────────────────────┘

[censored]
── { End } ───────────────────────────────────────────── { ports .C } ──

[ WBR, Oleg. ]
[ 01:31 7 May XXXV A.S. ]




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

Похожие статьи:
Kraftwerk - Techno культура: "история о том, как электронная музыка стала музыкой современности".
Система - описание мощного упаковщика данных "ASC-LZSSPack Game Compressor v4.5".
Shаw Вrоthers - Pамсы - тhе Shаw Вrоthеrs...
Отдохнем - БИЛЛ - ГЕРОЙ ГАЛАКТИКИ (1)
Я сама - Бесперебойные блоки питания: информация об UPS-технологии.

В этот день...   26 апреля