PDA

Просмотр полной версии : Проф ПЗУ и 4 физ дисковода на Скорпионе. Как?



Evgeny Muchkin
03.11.2006, 13:34
Сабж.
Как известно, к скорпионам можно подключать только 2 физических дисковода, т.к. в нем не сделана дешифрация сигналов для выборки дисководов C и D. Это несложно лечится путем установки одной ИД7 и парочкой проводков. В общем, у меня так и сделано.

Встала задача поставить проф ПЗУ (надеюсь заиметь SMUC ближайшее время :)) Натолкнулся на проблему - при установке Проф ПЗУ у меня отрубаются дисководы C и D - пишет No Disk и все. Втыкаю обычную пзушку, все нормуль.
Очень очень очень не хочу лишаться двух дисководов.

Где собака порылась?

Помогите советом, как подружить физические дисководы C, D и Проф ПЗУ.

Заранее спасибо.

spensor
03.11.2006, 14:31
Где собака порылась?
Все очень просто - в ПрофПЗУ проблемка - она выставляет флаги (гдето в 8-странице памяти) и доступ к этим дискам блокируется на уровне TRDOS (сама TRDOS в ПрофПЗУ модифицирована). Точно не помню в теме "SMUC на дискретах" или в ПС, но данную проблему мы уже рассматривали. Как лечить не знаю.

Ewgeny7
03.11.2006, 15:10
СМУК лучше пока собери сам. Готовые - пока неивестно когда.

jtn
03.11.2006, 19:25
насколько я помню физический-виртуальный диск C или D берутся из битов eeprom на смуке - для спека это просто порт, который не теряет значений в независимости от вкл-выкл питания. а раз у тебя смука пока нет то видимо профпзу постоянно считает, что диски C и D виртуальные

Evgeny Muchkin
03.11.2006, 21:33
СМУК лучше пока собери сам. Готовые - пока неивестно когда.

Завтра :)



а раз у тебя смука пока нет то видимо профпзу постоянно считает, что диски C и D виртуальные.

Очень надеюсь на это. Как смук буит, проверю.
Спасибо, обнадёжил :)

Evgeny Muchkin
07.11.2006, 10:56
а раз у тебя смука пока нет то видимо профпзу постоянно считает, что диски C и D виртуальные

Блин! :( Подрубил SMUC - нифига, не работают нормально C и D :( Все тоже самое, т.е. если ничего не смонтировано к ц:д:, то на *"c" или *"d" сразу пишет но диск. А если юзать проги, которые напрямую а не через 3d13 работают, то эти дисководы видно.

Получается проблема не в железе, а в прошивке проф пзу, которая зачем-то (на хрена самое непонятное?!) ограничивает нормальную работу с 4-мя дисководами.
Тупизм на мой взгляд.

Только вот какое место в пзу копать?.....

Grand
10.11.2006, 03:13
Несколько лет назад я как раз немножко занимался этим вопросом.
В ПЗУ TR-DOS V5.03(4) есть подпрограмма 15816 - "Выбор дисковода":
15816 LD A,(23833)
LD (23798),A
...
;и так далее
а в ПрофПЗУ V4.1 она такая:
15816 LD A,(23833)
CALL 2305
...
;и т. д.
В процедуре 2305 и происходит установка устройств: "C:" и "D:" - только как винчестер.

P.S. Извиняюсь за десятичные адреса в листингах, но я изучал TR-DOS по книге П.Федина "Полное описание и полный дизассемблер ПЗУ TR-DOS", а там все адреса десятичные. :)

Evgeny Muchkin
10.11.2006, 10:30
Да, я эту инфу тоже нашел на тут форуме:



LAB_0A01: ld a,(5cf6h)
0a04 c5 push bc
0a05 01ba7f ld bc,7fbah
0a08 ed48 in c,(c)
0a0a fe01 cp 01h
0a0c 2808 jr z,LAB_0A16
0a0e 300a jr nc,LAB_0A1A
0a10 cb79 bit 7,c
0a12 2019 jr nz,LAB_0A2D
0a14 1808 jr LAB_0A1E

LAB_0A16: bit 6,c
0a18 2013 jr nz,LAB_0A2D
LAB_0A1A: cp 04h
0a1c 300f jr nc,LAB_0A2D
LAB_0A1E: pop bc
0a1f 51 ld d,c
0a20 c5 push bc
0a21 0e02 ld c,02h
0a23 cd2608 call LAB_0826 ; RST 8
0a26 81 db #81
0a27 c1 pop bc
0a28 dae73e jp c,LAB_3EE7
0a2b e1 pop hl
0a2c c9 ret

LAB_0A2D: pop bc
0a2e c3eb1f jp LAB_1FEB

Это из функций 5/6 3D13. Берется текущий диск, читается 7FBA
(7 и 6 биты этого порта предназначены для быстрой
проверки "виртуальности" дисков A и B), если диск А - проверяется
бит 7, если диск B - проверяется бит 6. Если они установлены - переход
на процедуры работы с ВГ93, если сброшены - RST8: DB #81.
Для дисков С и D сразу идет переход на RST8


Сейчас примерно понятно, какие места в ПЗУ надо будет править. Один только момент неясен: можно ли проверять "виртуальность" дисков C и D, используя какие-то (если такие есть) флаги виртуальности, находящиеся в системных переменных теневика (тобешь в памяти), чтобы не переделывать железную часть порта 7FBA смака, задействуя еще 2 его бита.

Grand
11.11.2006, 02:43
Процедура 2305 не единственная в ПрофПЗУ, отвечающая за работу с HDD/FDD.
Исправлением только ПрофПЗУ видимо можно добиться, чтобы FDD назначался устройствам "A:" и "B:", а "C:" и "D:" были бы всегда физическими дисководами. Так что без аппаратной доработки не обойтись (если таковая возможна)...

Evgeny Muchkin
11.11.2006, 12:45
Процедура 2305 не единственная в ПрофПЗУ, отвечающая за работу с HDD/FDD
Ну эт я понимаю, чего ж я совсем тугой чтоли ;) Там их куча это точно, причем куски у многих просто идентичны.

а "C:" и "D:" были бы всегда физическими дисководами
Не, такое нам не надо!

Посмотрим, что Mick скажет...

Mick
11.11.2006, 17:38
Ну эт я понимаю, чего ж я совсем тугой чтоли ;) Там их куча это точно, причем куски у многих просто идентичны.

Не, такое нам не надо!

Посмотрим, что Mick скажет...

Вот взглянул на труды ковыряния прошлого года.
На вскидку, не вдаваясь в подробности, вариантов, мне видится 3:
1 - как ты говоришь, сделать еще 2 бита - теряется совместимость с стандартным SMUC (кто его знает как поведет);
2 - добавить флаг(ячейку памяти) при отсутсвии платы все дисководы становятся физическими(тогда прелестями платы не воспользуешся) ;
3 - как самый реальный, биты переназначить на дисководы C и D, а дисководы A и B всегда физические, как бы как в PCюке.

Но после этого все равно - тестировать тебе придется на свой страх и риск.

Для начала - я бы сделал самое простое - поставить заглушки, как бы отключить всю виртуальщину - этим самым можно проверить не вываливаются вся "эксепшены - типа неразберихи в бейсике".

Evgeny Muchkin
13.11.2006, 14:22
Господа железячники специалисты.

Скажите, пожалуйста, сколько дополнительных микросхем нужно будет навесить на SMUC, чтобы заработали биты 4 и 5 порта #7FBA оригинального смака? Если такая доработка вообще возможна на оригинальном смаке, конечно.

Я прикинул просто:
У человека на скорпе 4 реальных флопа => значит у него на плате сделана доработка => значит скорей всего он её делал сам => паяльник умеет держать :) => имея несложную схему доработки SMUC, сможет довесить на него пару корпусов. :)
Зато при таком раскладе переделка пзу становится более реальным делом, нежели сейчас.

icebear
13.11.2006, 14:24
Я прикинул просто:
У человека на скорпе 4 реальных флопа => значит у него на плате сделана доработка => значит скорей всего он её делал сам => паяльник умеет держать :) => имея несложную схему доработки SMUC, сможет довесить на него пару корпусов. :)

Один маленький вопрос - нафига четыре флопа?

Evgeny Muchkin
13.11.2006, 14:27
Один маленький вопрос - нафига четыре флопа?

Потому что они есть.

icebear
13.11.2006, 14:38
Потому что они есть.

И из-за того, что они есть, надо ковырять SMUC? Интересно, а что будет, если к четырём флопам захочется два винта?

Evgeny Muchkin
13.11.2006, 14:43
Я потому и спрашиваю. Если такая железная доработка сложна в исполнении, то действительно, нафик нужно. А если её можно сделать достаточно легко, то почему бы и нет. :)

spensor
13.11.2006, 14:53
И из-за того, что они есть, надо ковырять SMUC? Интересно, а что будет, если к четырём флопам захочется два винта?
Андреас, 2 винта и так обычный SMUC держит - master и slave. Это стандартно для любого вида IDE-каналов. Возможны любые пары устройств: HDD+HDD, HDD+CD/DVD, HDD+CF, CF+CF, CF+CD/DVD.

А вот зачем 4 дисковода, это признаться интересный вопрос, их и два при 1Мб оперативки не очень то надо.

PS: Небольшое уточнение - в SMUCse, в порту #7FBA используются биты D5 и D3. Эта заморочка вытекает из-за особенностей (глюков) обработки версии платы SMUC прошивкой ПрофПЗУ.

Evgeny Muchkin
13.11.2006, 14:58
PS: Небольшое уточнение - в SMUCse, в порту #7FBA используются биты D5 и D3. Эта заморочка вытекает из-за особенностей (глюков) обработки версии платы SMUC прошивкой ПрофПЗУ.

Не понял, а как тогда вообще SMUCse работает? И как работают в этом случае реальные дисководы A: и B: ?

Evgeny Muchkin
13.11.2006, 15:10
А! Дошло :) В SMUCse биты 6 и 7 работают как и должны, а 3 и 5 это чиста приблуда из-за прибавки SE. Видимо, это имеется ввиду.


А вот зачем 4 дисковода, это признаться интересный вопрос, их и два при 1Мб оперативки не очень то надо.
У кого 1Мб, а у кого и 256К только :)

Evgeny Muchkin
13.11.2006, 18:00
Я тут подумал... а нафига и вправду железную часть смака курочить??

Не проще ли просто подправить процедуру RST 8: db #81 ?
Когда она определяет (как-то ведь она это делает), что диски C и D не примонтированы, то следует переход на вывод сообщения No Disk.
Что если вместо этого перехода сделать jp на LAB_1FEB, и пускай уже TR-DOS разбирается, есть диск в дисководе или нет.

Как думаете?

Evgeny Muchkin
20.11.2006, 16:48
Хм... воплотил я в жизнь эту свою идейку. Вроде работает, но C и D медленно очень через #3D13. Но тем не менее :)