© j7n/4th dimension

fdd: новые возможности.

heya! наконец jtn , то есть я, решил донести до народа кучу накопившейся полезной информации в надежде, что кому-нибудь она пригодится. как видите, на этот раз я вещаю не с экрана, украшенного #z80-e-paper logo, а дружественного нам adventurer 'а. это связано с тем, что в ближайшее время не планируется новых выпусков #z80 , и в то же время статьи по железу не очень вписываются в формат нашего издания, судьба которого как всегда неопределенна ;), т.е. о его кончине речь не идет, равно как и о скором возрождении.

честно говоря, не хотел этого писать, но не могу не молчать: ну зачем спрашивается нужны огромные спектрумовские экраны ( born dead ), индикаторы номера дорожки и еше какой-то ерунды ( dejavu ), мультицапов и модификаторов адресного пространства ( zx hard )? все это обычному юзеру нафиг не нужно и к тому же гробит и без того еле жывые п/платы наших компьютеров, короче говоря, засоряет журналы/газеты, а также умы начинающих "паяльнищиков". я думаю, вы сделаете соответствующие выводы.

ну ладно, не будем о грустном, предлагаю на ваше рассмотрение следующие вещи: во-первых, адаптированную к профи схему для чтения/записи hd (high density) дисков, во-вторых, _очень_ полезную примочку, дополняющую turbo hd , ну и наконец, маленький прибамбас, который я назвал "защита #fd" . все опубликованные схемы придуманы лично мной, также мной спаяны и работают, так что читайте, разбирайтесь, хватайте паяльник и... пользуйтесь на здоровье (-:

краткая аннотация по turbo hd . многие утверждали, что вгшка никогда не сможет работать с hd, ан нет, нашлись умные люди, решившие эту проблему (не знаю, кому принадлежит авторство, но сделаю ссылку на axlr, поскольку в последней версии, опубликованной в deja vu #0a стоит его копирайт). кстати, в любом случае советую ознакомиться с прототипом (хотя бы в том же deja vu #0a ). основная идея очень проста: на контроллерах флопов используются частоты: 1 mhz для вгшки, 4 mhz для схемы записи (на м/сх ир16) и 8 mhz для фапч, либо 4 mhz для схемы чтения это стандартные частоты. если каждую из них удвоить, то начнут читаться/писаться hdшные диски (только в том случае, если дисковод позволяет). как видите, все элементарно. теперь реализация.

владельцам профи, плат версии 3.x (версия верхней платы, нижняя может быть любой) нужно собрать только первый фрагмент: м/сх d1, d2. последовательность действий (все обозначения для верхней платы! ):
1. если у вас кварц zq1 на 16 mhz, то переходите к п.3.
2. поставьте кварц zq1 на 16 mhz, разомкните контакты 1 и 8 у s3 (в схеме это u27), и замкните контакты 2 и 7. запустите комп, с дисками он должен работать как и раньше, иначе ставьте u22 и u26 серии 1533 или хотя бы 555. когда все заработает переходите к п.3.
3. разомкните 2 и 7 у s3.
4. поставьте d1, d2 доработки. откуда брать сигналы?
8mhz с u26.12, 16 mhz с u26.14,
freq на u26.1, wf/de с u21.13,
drq с u13.9, /step с u12.4.
где брать /hda, /dsb и нафига они нужны читайте дальше.

микросхемы:
d1: 1533тм2, d2: 1533кп12, в качестве d1 сойдет 555.

фрагмент 1.

                            D2
                       +---+--+--+
8Mhz               +--6|A0 |MX|  |
----------------------5|A1 |  |  |
16Mhz              +--4|A2 |  |  |  FREQ
-------------------+--3|A3 |  |YA|7-----
           D1      +--1oE0A|  |  |
WF/DE    +-+-+-+   +   +---|  |  |
--------1oR|T| |   --10|B0 |  |  |
DRQ   +-2|D| | |   --11|B1 |  |  |
------+-3|C| |_|6  --12|B2 |  |  |
/STEP |+4oS| |Qo-+ --13|B3 |  |YB|9--
------++ +-+-+-+ | --15oE0B|  |  |
      +          |     +---|  |  |
/HDA             +---14|SO |  |  |
---------|<+---+------2|S1 |  |  |
/DSB           |       +---+--+--+
---------|<+---|
               +----XXX---o +5V
                    10К

что, у вас не профи 3й версии? ну ничего, для вас я постарался и нарисовал кусок схемы с профика (фрагмент 2). итак: 1. сначала выясняете, если у вас фапч. фапч это такая штуковина из 2х микросхем тм9 и рт4 (или рт11 вместо рт4), соединенных в цепочку, которая якобы помогает лучше читать диски: ). фапч точно есть на профи - всех версий, на скорпе, и его точно нет на _оригинальном_ пентагоне и контроллере из инфоркомовской книжки, на остальных смотрите сами...

2. собираете фрагменты 1 и 2 (генератор на d4 можно не собирать если он есть, главное, чтобы zq1 был на 16mhz).

3. если фапч есть, то отрезайте вывод 9 тм9 и подавайте на него сигнал freq, а если фапча нет, то ищите место, куда идет сигнал 4mhz (как уже писал выше, 4 mhz используется также в схеме записи - вывод 9 микросхемы ир16), отрезаете его и подаете туда сигнал wrclk.

4. одноименные сигналы обоих фрагментов соединяются, сигнал wrclk подается на вывод 9 м/сх ир16 в схеме записи (отрезав приходящую туда дорожку), а wgclk на вывод 24 вгшки (идущий туда проводник также отрезается).

микросхемы: d3: 1533ие5, d4: 1533лн1

фрагмент 2.

       ZQ1                         16Mhz
+------|X+------+-----------------------
|  D4.1    D4.2 |
|  +-+     +-+  |       D3
+-1|1o2-+-3|1o4-|   +--+--+--+      8Mhz
|  +-+  |  +-+  +-14|CO|CT|Q0|12--------
|  1К   |      +---1|C1|  |Q1|9---+WRCLK
+--XXX--+      |    +--|  |Q2|8-- +-----
               |+--2|R1|  |Q3|11+  VGCLK
FREQ           |+--3|R2|  |  |  +-------
---------------+|   +--+--+--|
                +-10|GND   Uv+5-o +5V
                |   +--------+
                +

не забудьте, что питание на м/сх ие5 подается на 10 и 5 выводы!

так, и еще пара замечаний перед главной частью этой статьи. во-первых, я использую только 3, 5' hd диски, это связано и с тем, что 5, 25' диски _imho_ морально устарели, так и с тем, что длина дорожки на них меньше, чем на 3, 5'. во-вторых, я _категорически_ не согласен, что нужно использовать бит 7 trdosного порта #ff для переключения контроллера и дисковода на hd и dd. и вот почему: 1. все програмное обеспечение не устанавливает этот бит - т.е. это исключает (без перепрошивки) работу всех trdosных прог с hd диска.

2. наклейки - это вовсе не маразм наоборот сразу видно какой диск hd/dd.

3. ну вы сами скоро поймете, почему ;))).

сначала сделайте сигнал /hda, он снимается с ноги микрика, отвечающего за открытие/закрытие отверстия hd/dd, с 3, 5' дисковода. если диск заклеен, то /hda=лог.1. его нужно подавать через 2 или 4 проводник дисководного шлейфа (смотрите чтоб другие дисководы на него не гадили: ). если у вас 3, 5' стоит драйвом "а" (как у у меня - кстати это предпочтительней), то /dsb берете с дисководного разъема - это выбор драйва "b". если у вас есть еще дисководы, то добавьте еще диодов; ). короче говоря, на 2 вывод м/сх d2 должен быть лог.1, тогда и только тогда, когда выбран 3, 5' дисковод и в нем hd'шная дискета.

предположим, что эту схему вы собрали и что же дальше? лично мне попадалась всего одна программа, поддерживающая hd, причем это форматтер, который, по идее, бесполезен ввиду того, что читать и писать нечем; (. пользователям is-dos 'а есть смысл обратиться к фидошникам - у них, вроде, есть драйвера под это дело.

ну, а пока остается ждать появления какого-нить копировщика с писишных 1, 44 дисков. правда, у меня есть собственный, но он очень глючный и распространению не подлежит. еще, если кто желает, могу дать модифицированный modplayer , который работает как с 720, так и с 1, 44 msdos дисками.

а теперь то, ради чего затевалась эта статья. сколько времени прошло между возникновением идеи и ее воплощением в жизнь сказать сложно. причины обычные: это, конечно, лень и разные бытовые мелочи. схема называется "2 in 1" . первое, что я сделал - запихал на hd дискетку 32 сектора по 256 байт, причем с interlieve=18 , т.е. сектора располагались так (слева указан номер стороны):

0: 1, 2, 3, 4, 5, 6, .., 16, 17, 18, 19, .., 32 1: 15, 16, 17, 18, 19, 20, .., 30, 31, 32, 1, .., 14 0: 29, 30, 31, 32, 1, 2, .., 12, 13, 14, 15, .., 28 etc... (напомню, что физические номера секторов начинаются с 1).

если кто не понял: сначала trdos грузит сектора 1-16 стороны 0, затем переключает сторону и грузит снова сектора 1-16, причем сектора 1-14 грузятся на этом же обороте! таким образом, за один оборот имеем в буфере почти 2 дорожки. я сразу же проверил в rds 'е и чуть не упал со стула; ), увидев, с какой скоростью check'ается диск. ну, в общем, дальше раздумывать было нечего...

итак детали: d5: 1533кп12, d6: 1533лл1 (можно ставить 555 серию).

D5          +---+--+--+
-------+--10|B0 |  |  | <- это неисполь-
       +--11|B1 |  |  |   зованный кусок
D1FF   +--12|B2 |  |  |   м/сх D2 (фр.1)
-------+--13|B3 |  |YB|9---+
       +--15oE0B|  |  |    |
       +    +---+--+--+    |
                           |
     +---------------------+
     |    +------------------+
     | +--+----------------+ |
     | |  |       D5       | |
     | |  |   +---+--+--+  | |
     | |  +--6|A0 |MX|  |  | |
     | |  +--5|A1 |  |  |  | |
     +-------4|A2 |  |  |  | |  D5VG
/WR    |  +--3|A3 |  |YA|7-+--------
-------------1oE0A|  |  |    |
       |      +---|  |  |    |
       +--+-10|B0 |  |  |    |
          +-11|B1 |  |  |    |
          +-12|B2 |  |  |    |    D5
          +-13|B3 |  |YB|9---+------
        +---15oE0B|  |  |
A5      |     +---|  |  |
------------14|SO |  |  |
A6      | +--2|S1 |  |  |
----------+   +---+--+--+
        +------+
          D6   |
/CSVG    +--+  |
--------1|1 +3-+
/RD  +--2|  |
-----+   +--+

куда паять?
1. режем d5 (12 вывод 1818вг93).
2. подаем туда d5vg.
3. d5, a5, a6, /wr, /rd - сигналы с шины/процессора, можно взять с вг93 (кроме d5 конечно):
a5 - 5й вывод вг93,
a6 - 6й /wr - 2й /rd - 4й
d5 перерезанный 4. /csvg берем с 3 вывода вг93.

как обычно, все гениальное просто; ). нужно обмануть вгшку, подменяя номера секторов. для этого используем сигнал d5. номера получаются такие (думаю понятно почему): 1, 2, .., 16, 33, 34, .., 48. встает вопрос: как сделать переключение между двумя trd дисками на одном дисководе? поскольку у меня 2 дисковода: a-3, 5' и b-5, 25' + ramdisk d, то решение было на поверхности: сделать драйв "c" второй половинкой 3, 5'. для этого отрезаем вход дешифратора abcd - бит d1 trdosного порта #ff, на дешифратор подаем 0, а освободившийся бит на доработку - он обозначен как d1ff. теперь если выбрать в коммандере диск "a", будут читаться сектора 1-16 с драйва "a" (hd или dd), если "b", то обычные dd диски 5, 25', если "c", то сектора 33-48 с драйва "a", и, наконец, выбор диска "d", будет програмно перехвачен trdosом (конечно если у вас версия 5.12 и выше). в случае, когда у вас, 3, 5' подключен как "b", изменений в данной схеме делать не нужно. позаботтесь лишь, чтобы режим /hd включался как при обрашении к "b" и к "c" и выключался при обращении к "a".

в приложении вы обнаружите програмку hdddform. b - это не что иное, как мой форматтер, который позволяет сформировать диск как нужно доработке. но поскольку я не силен (точнее просто нет опыта) в писании дисковых утилит, то за основу форматтера взят исходник cardinal 'a из playgear и интерфейс там фактически никакой; ). к сожалению, эта утилитка может только форматировать, ни check'ать, ни restore'ть она не умеет. правда, диски можно check'ать и в почти любой дисковой утилитке (в rds 'е почему-то только 2 драйва...), но restore делать ни в коем случае нельзя - убъете сразу 1 или 2 дорожки. чтоб хоть как-нибудь оправдаться, привожу исходники: файл formain. a - "интерфэйс", minifont. a - миниатюрная печаталка, formhd. a - собственно, форматтер (его можно подключить к своему интерфэйсу и т.д. - все параметры описаны в исходнике).

напоследок, еще одна мулька - "защита #fd" . наверное, многие, сделав себе расширение памяти pentagon512 , частенько, ругая кодеров, щелкают переключателем on/off. и все из-за того, что нынче модно обращаться к #7ffd по #fd, но с маской #40 (все благодаря scorp 'ам с каями и их системному порту #1ffd). пример:

ld a, #50; out (#fd), a - врубить 0 банк. ну, соответственно, у кого 256/512кб начинают включаться не те банки, портится рамдиск и прочая ерунда. а кое-кто даже специально (вот это уж совсем зря) переключает память по #fd ( ultrasonic - digital tracker). короче говоря, эта проблема решена уже давно (я не пользуюсь переключателем pent512 on/off полтора года).

oбычно схема расширения выглядит так:

      pent512 on/off
           /                 +-+-+-+
  +-------/ +---+------------oR|T| |
  |             |            +-| | |
  +  +5V o--XXX-+ +----------/C| | |
            10К   |    D6    +-| | |
WR7ffd            |    ------|0| |0+--
------------------+    D7  +-|1| |1+--
                       ----+ | | | |
                             +-+-+-+

микросхема-триггер - это обычно пара элементов тм2 или тм9 или тм8. у тм2 входы r (должны быть соединены) - 1 и 13, у тм8 и тм9 - 1. входы c у тм2 (должны быть соединены) - 3 и 11, у тм8 и тм9 - 9.

схема доработки:

D7: 1533ЛЕ1

      pent512 on/off
           /                 +-+-+-+
  +-------/ +---+---+--------oR|T| |
  |             |   |        +-| | |
  +  +5V o--XXX-+ +----------/C| | |
            10К   | |  D6    +-| | |
WR7ffd            | |  --------|0| |0+--
--------+---------+ |  D7  +-|1| |1+--
        |  D7.3     |  ----+ | | | |
        |  +--+     |        +-+-+-+
        +-8|1 |     +-----------------+
        |  |  o10-+  D7.2    D7.1     |
        +-9|  |   |  +--+    +--+     |
           +--+   +-6|1 |  +3|1 |     |
A13                  |  o4-| |  o1-|<++
--------------------5|  |  +2|  |
                     +--+    +--+

вместо d7 можно использовать инвертор и элемент лл1 (если есть свободные на плате). особое внимание следует уделить сигналу wr7ffd. здесь приведен вариант, пригодный для пентагона и профи : когда записи в порт нет wr7ffd=лог.0, если у вас по-другому, то подавайте wr7ffd без инверсии (без d7.3). принцип работ таков: 1. ld bc, #7ffd: ld a, #50: out (c), a адресация полная - a13=bit5, b=1 - на выходе d7.1 имеем лог.1, триггер не сбрасывается, включается #50 банк.

2. ld a, #50: out (c), a адресация короткая - a13=bit5, a=0 (напомню 5й бит a - это блокировка #7ffd, поэтому он всегда равен 0)

когда происходит запись wr7ffd=1, то на выходе d7.1 - лог.0, который сбрасывает триггер - 6й и 7й биты. таким образом включается банк 0.

недостатки: все равно не работает ufo 2 , потому что там перед записью в #7ffd накладывается маска #c0. также в ultrasonic'е имеем только 128к. а в остальном...все отлично!

приветы: axlr , thx за схему turbo в пентагоне , combinator&point/pht и tiggr/bw/xpj за моральную поддержку, vts , cardinal/pgc - а не слабо отформатить диск за 16 сек.; )?, ну и всем пермским zx маньякам.

cya, send messages to мыло: jtn@mail.ru or golubt@psu.ru звонилка: (3422) 16-82-34 (василий) ring time: 17: 00 - 21: 00 msk папер: 614002 пермь, островского 111а-47