Кстати очень часто этот порт дергается в TRDOS, пример где то выше.Там кстати проверяются bit6 и bit7 после чтения из порта. Здесь же похоже перекочевала часть функций TRDOSа ну и плюс нововведения.Цитата:
Сообщение от spensor
Вид для печати
Кстати очень часто этот порт дергается в TRDOS, пример где то выше.Там кстати проверяются bit6 и bit7 после чтения из порта. Здесь же похоже перекочевала часть функций TRDOSа ну и плюс нововведения.Цитата:
Сообщение от spensor
Пришла в голову грустная мысль. Поскольку порт FDC сейчас выбирается при любом состоянии бита 7, то введение еще одного порта ничего не изменит. Если бы при установленном "диске А" сразу же выбирался бы и "диск С", тогда идея с "теневым" FDC имела бы право на жизнь. но этого не происходит... :o
Кста, по поводу хранения информации о подключенных дисках. При "выставлении" дисков, равно как и при их "демонтаже" происходит обмен непосредственно с винчестером (винт жужжит долю секунды). На запись в NVRAM нет никаких признаков, т.к. эта процедура занимает пару секунд и эта задержка была бы заметна. Даже если специально сохранить дамп настроек в NVRAM, а затем по быстрому переназначить "дорожки" и выключить Скорп, при запуске он восстановит только последние подключения. И прямое чтение из NVRAM эти подключения не изменит.
По поводу сохранения в RTC - ботва другая, но такая же :)
Микросхема часов - весчь опциональная, и в инструкции никаких изменений в работе с дисками не указано. Тем более, что по умолчанию эта МС даже не ставилась.
Почему-то вспомнился до сих пор не изученный DB3. Может он и есть тот "ключ" (или "переключатель")... Жалко, схемы оригинального СМУКа под рукой нет :(
Если реально используется вышепредположенный принцип, то либо так, либо ИР26/ИР32 (1шт на два порта).Цитата:
Сообщение от ewgeny7
Трудно сказать, в приведенном ниже примере (взято из primer0c.rar), видно нечто похожее на вариант предложенный мной:Цитата:
Сообщение от ewgeny7
Вот и пойди-разберись что это значит.Код:LAB_0CFF: ld bc,0ffbah ; выставляем в порте SYS D7=1
0d02 3ef7 ld a,0f7h
0d04 32f0df ld (0dff0h),a
0d07 ed79 out (c),a
0d09 01ba7f ld bc,7fbah ; обращаемся к порту FDC
0d0c 3eff ld a,0ffh
0d0e 32eedf ld (0dfeeh),a
0d11 ed79 out (c),a
Это правда, но в жизни бывает много сюрпризов:)Цитата:
Сообщение от ewgeny7
Всякое может быть. Попробуй "поиграть" с ним, может что-то прояснится.Цитата:
Сообщение от ewgeny7
IMHO, не поможет, но если уж так надо, то смотрите в прототеме этой темы "Порты SMUC".Цитата:
Сообщение от ewgeny7
Вот ссылка на тему:http://zx.pk.ru/showthread.php?t=456&highlight=SMUC
Пересмотрел тему "Порты SMUC":( Похоже там схем уже давно нет:( Ладно, думаю не будет нарушением правил если я перезалью схему еще раз уже в эту тему.
Все подключения хранятся на винчестере в секторе 3 и в памяти в 8 странице.Цитата:
Сообщение от ewgeny7
Порт 7FBA используется в тр-досе для быстрого определения, что подключено -
реальный дисковод и образ на винчестере. А дисководов у Скорпиона только 2.
Обращение к дисководам C/D через 3D13 всегда идет на винчестер. Проверка реальный диск или образ идет только на драйвах A и B (7,6 биты порта 7FBA).Цитата:
Сообщение от spensor
На самом деле если смотреть переделанные исходники TRDOSа перед обращением к порту он сначала берет номер дисковода для временных операций(текущего). затем уходит в теневой сервис монитор по rst 08h(закамуфлированный вызов по адресу 0826 - в моем примере LAB_0826) с функцией 81h.Цитата:
Сообщение от Blade
Кстати говоря подсказка. В последенем примере есть таблица адресов функций. Так вот функция 22h - IdHdd - идентификация жесткого диска, 23h - монтирование подразделов диска.
Откуда у Вас такая информация? Монтируются все ЧЕТЫРЕ диска A,B,C,D.Цитата:
Сообщение от Blade
Другое дело, что диски C и D запоминаются только на текущую сессию, т.е. после выключения-включения питания восстанавливаются только диски А и В.
Все это я проверяю сам, на реальном Скорпи, на ПрофПЗУ и тестовом СМУК.
А обращение к три дэ тринадцать инициирует обращение к внутренним п/п ПрофПЗУ, которые уже сами смотрят, реальный ли это диск или виртуальный. Нужно учитывать, что тыр-дос в Скорпи и в ... скажем так, оригинальном Спекки - отличаются, в основном за счет выноса части процедур и доп. доработок в теневой монитор.
Должны запоминаться все 4 диска. Так было в смуке 1.2, 1.3. Unreal 0.32 с Проф-ПЗУ 4.01 также запоминает все диски.Цитата:
Сообщение от ewgeny7
Не совсем так. вот кусок дизассемблера:Цитата:
Сообщение от ewgeny7
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, если диск B - проверяется бит 6. Если они установлены - переход на процедуры работы с ВГ93, если сброшены - RST8: DB #81. Для дисков С и D сразу идет переход на RST8.
Если в Unreale включить Проф-ПЗУ и СМУК, то 3D13 никогда не обращается к реальным диководам C и D.