© 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