Вроде робит. Буду дальше тестировать.
Вид для печати
Вроде робит. Буду дальше тестировать.
Может стоит создать отдельную тему: "Тестирование ProfROM для двух HDD для ZS-256" или аналогичную. Так как сама тема про дизассемблер ПрофПЗУ Scorpion! Все-таки путаница есть. Дизассемблер для Scorpion-а и тестирование ProfROM для подключения двую "жёстких" дисков, это не одно и то же. Да, и потом легче искать файлы будет.
Перенёс сообщения в отдельную тему.
Логичнее было бы перенести в ветку Scorpion'а....
Нашёл для чего версия 4.02. Копаясь в старых архивах, обнаружил интересный файл: ZS_PZU.MAI
выдержка из него:
На своей странице МОА писал:Код:area : NETMAIL
from : Vlad Sotnikov
to :
subj : Переключение страниц
date : 26-01-01
time : 23:18:11
Привет, Кирилл!
Извини, что отвечаю тебе так поздно - признаться, твоя
просьба заставила меня достаточно помучаться, чтобы выяснить,
как же все-таки переключаются страницы в ПрофПЗУ. Вначале я
начал копать эмулятор MOA SPM. И напоролся там на команду,
названную им SPM. Она имеет код #ED,#10 - и мне потребовалось
немного времени, чтобы понять, что этот способ не имеет ничего
общего с тем, как переключаются страницы на реальном спеке. А
на реальном Скорпионе все происходит так:
Известно, что для выполнения подпрограмм в дополнительных
страницах используется команда RST #30, которая вызывается при
включенном ПЗУ Монитора и 8-й странице. При этом она имеет
следующий формат:
RST #30
DW адрес подпрограммы
DB номер страницы (0...15)
...
После выполнения подпрограммы снова включается основная
страница монитора, и 8-я банка памяти.
* * *
Счастливо, Влад (Vega, ex Style Group).
--- Turbo-Poke_v3.1
* Origin: SPbZXNet'2001 (500:812/8.9)
"SPM -- это эмулятор-отладчик ZX Spectrum-совместимого компьютера. Причем, это скорее более отладчик, нежели эмулятор.
В комплекте с эмулятором поставляется специально откомпилированная версия ПЗУ компьютера Scorpion. Поскольку SPM эмулирует Scorpion не в полном объеме, то реальное ПЗУ Scorpion работать не будет."
Вложение 78115
LW, теневик известен глючностью при работе через LBA, нет планов по исправлению этих глюков?
А в чем выражаются эти глюки?
- - - Добавлено - - -
Имеется ввиду этот глюк? Или есть что-то еще?
Этот исправить легко.
Да. Например - запись "Save Set Up to disk" в режимах CHS и LBA производится в разные сектора HDD.
https://zx-pk.ru/threads/1360-smuc-n...ll=1#post54927
https://zx-pk.ru/threads/13230-probl...-smuc-1-3.html
Это уже не про LBA b CHS, пишут про то, что профпзу работает в пределах 1800 Мб https://zx-pk.ru/threads/7032-prosto...-pro-smuc.html
Не ошибаюсь. Этой "фичей" пользовался ещё в конце 90х на версии 4.01.
Ещё раз проверил на UnrealSpeccy.
Установите CHS, сохраните в CMOS, примонтируйте диски, сохраните "Save Set Up to disk".
Установите LBA, сохраните в CMOS, примонтируйте другие диски, сохраните "Save Set Up to disk".
Посмотрите содержимое винта. У меня сектора 1 и 2 раздела MFS.
Возможно, это зависит от CHS винта.
Раздела MFS или быть может винчестера?
1й и 2й сектор раздела MFS (если считать с единицы), содержат список подразделов. Потом уже идут данные подразделов.
Пункт Save Set Up to disk сохраняет настройки на дискету либо, если примонтирован образ, то на образ диска. Причем список примонтированных образов там не сохраняется.
А вот в самом начале винчестера уже записаны настройки примонтированных образов.
Причем в режиме CHS они записываются в сектор 2 (считаем от ноля), а в режиме LBA в сектор 3. Отсюда и растут все проблемы.
Сектор hdd, в который записываются данные о примонтированных псевдодисках - разный в CHS и LBA. В TR-DOS Navigator'е это учитывается.
Поскольку в CHS сектора считаются с "1", то CHS=000003 не тоже самое, что LBA=000003.
Создал новый пустой диск, дабы потестить LBA (на патченном ПЗУ)
fsutil file createnew test.hdd 1056964608
CHS0=2048/16/63
LBA0=2064384
Еще ничего не делал, а unreal уже сообщает "unknown ata cmd"
https://i.ibb.co/4FDCVrK/1.png
Пробую разбить винт на разделы, переключаю в режим LBA, создаю MFS раздел на 128 Мб, получаю сообщения в консоли "unknown ata cmd" и ошибку в анриле.
https://i.ibb.co/VJFRRnR/2.png
Давайте папку эмулятора с этим образом винта, будем смотреть.
На непатченном аналогичная ошибка, в том числе и в режиме CHS. Скорее всего ему геометрия не нравится, либо эмулятор глючит. Вечером проверю еще и на zxmak2, у него вроде как и логирование ATA операций есть.
https://www.upload.ee/files/14692254/us.7z.html
Еще такой момент - если поставить chs0=0/0/0, а оставить только LBA то профпзу не видит винт совсем, не знаю баг ли это эмулятора или нет.
В ATAPI 6 отменили CHS, оставили только LBA. Вроде на адаптерах sd2ide это встречается.
- - - Добавлено - - -
поставил chs0=1/1/1,
включил режим lba
test1 - проходит
test2 - ошибки
- - - Добавлено - - -
Нашел свой косяк, RO у HDD включен :)
- - - Добавлено - - -
Вот попытка создания раздела в режиме lba (это на патченном ПЗУ) (при этом chs в настройках указан 1/1/1)
https://i.ibb.co/wKyhGYj/3.png
- - - Добавлено - - -
А вот попытка сохранить настройки на диск
https://i.ibb.co/0X7jX0X/4.png
А в мониторе LBA то включен? И сохранена настройка в CMOS?
Угу.
Размер винчестера, исходя из параметров CHS должен составлять не менее одного мегабайта. Примите это как факт. В любом случае совсем не использовать параметры CHS не получится.
Если целью стоит в том числе монтирование trd прямо с fat32, то к.м.к., лучше выпилить этот chs вообще.
Да нельзя его выпилить. Это неотъемлемая часть геометрии любого винчестера. Плюс те, кто пользуется старыми винтами, которые не умеют LBA сразу пойдут лесом. Плюс невозможность корректно создать раздел.
Не любого, LBA стал обязателен в ATA-3 (1997 год), а в стандарте ATA/ATAPI 6 (2001 год) CHS стал необязательным.
Диски, не поддерживающие LBA это что-то типа Quantum LPS 127 (на 127 Мб), ему и FAT32 не нужен.
- - - Добавлено - - -
Wild Commander на tsconf-е и с chs=0/0/0 робит.
Fatall в режиме скорпиона тоже.
LW, Можно ли сделать в настройках явное указание какие HDD использовать, например "MASTER-ON (OFF)", возник глюк, отсоединил slave винт, подключил назад cd-rom, отключил авто определение hdd, при холодном старте
при запуске пишет что оба Hdd установлены.
Вполне логично что так пишет, настройки берутся из NVRAM.
Развейте свою мысль подробнее.
Сделать то можно. Но, допустим, отключим работу со slave, ну так на этом канале и CD-ROM тоже перестанет работать.
- - - Добавлено - - -
Еще не выкладывал, но уже сделал. Настройки Autostart from disk N/autoconfig/TRD-DOS mirror/LBA mode будут индивидуальными для каждого винчестера.
Может так будет проще? На slave оставите автоопределение включенным и можете подключать то привод, то винт.
По мере публикации сообщений, читаю их. Возник вопрос, даже несколько. Как проводится тестирование (или эксперименты, как хотите называйте). На "живом" ZS-256, и на каком, "жёлтом" или на "зелёном"? Если на "живом", то каким образом или способом подключаются два "жёстких" диска, одинаковые они или с разной геометрией. Какие? CHS, LBA? Микросхема ProROM прошивается "вновь и вновь" или используется "как есть"? Или все делается в эммуляторе? И чем отличается тестирование (эксперименты) в эмуляторе от тестирования (экспериментов) на "живом" ZS-256?
Если будут соответствующие рестарты - то проблем не будет. Их (рестарты) в будущем надо обсудить на нашем Форуме :)
К сожалению, возможности тестирования на реале есть не у каждого, да и начинать надо с эмулятора. А Unreal Speccy для этого не очень-то подходит - не стоит ожидать от него точной эмуляции железа т. к. делавшие зтот эмулятор люди не были скорпионщиками. Но даже такими маленькими шажками есть щанс, что мы выработаем решения. :)Цитата:
Сообщение от ZXFanat
Лично я ожидаю: то, что с успехом пойдет на эмуляторе, еще придется отлаживать на реальном железе.
Я на Живом Зеленом проверяю, винты разные устанавливал. работали оба в режиме CHS. Микросхему прошиваю каждый раз, у меня их несколько, единственно перед прошивкой добавляю нужные программы в rom disk .
Вот этот вопрос на самом деле достаточно интересен. Я и сам планировал его поднять, но несколько позже. Нюанс в том, что я, к сожалению, не имею практики использования рестартов ПрофПЗУ. И хотелось бы услышать мнение тех, кто их использовал. В особенности ваше, Grand.
Не разбирался в исходниках TRDN, но насколько я понимаю сектор с настройками примонтированных образов вы формируете сами (иначе зачем вам вызов п/п подсчета CRC...) Если это так, то есть вопрос, что вы заносите в байт +5? по умолчанию он дублирует байт +0 (тип подключенного раздела/образа диска) но в дальнейшем нигде более не используется, что вообщем-то и позволило подвесить на него номер глобального раздела при монтировании дисков.
Касательно этого вопроса. тут тоже есть некоторые моменты, с которыми надо определиться. Допустим есть один винт master или slave, тут всё более-менее
понятно, А в случае наличия двух винтов, где сохранять настройки?... На master или slave или на обоих... А читать настройки с какого винта... С мастера, а
если там пусто или контрольная сумма кривая, то попытаться считать со слейва?... Или как вариант переместить настройки в NVRAM, благо там неиспользуемого
пространства вагон, но опять таки возможно существуют SMUC'и без NVRAM...
Вообщем реализовать можно много чего, но хотелось бы услышать мнения и пожелания сообщества.
По поводу использования рестартов в TRDN. Сейчас, когда командер запущен на Scorpion'е с HDD, используются следующие функции реcтарта RST 8 \ DB #81: 1, 2, 7, 9, 16, 34, 35, 36, 38. Самая нелюбимая - полностью забагованная функция 35, но без нее никак, пришлось научится с ней работать. В будущих версиях нужно будет добавить исправленный аналог этой функции, но саму 35 оставить в первозданном виде для совместимости! Кроме того, в ПрофПЗУ оказалась сломана функция 8 - в V2.95 она еще работала как надо.
В байт +05 описателя примонтированного псевдодиска в секторе информации о примонтированных псевдодисков я заношу #01, то есть и у меня это дубль байта +00.Цитата:
Сообщение от LW
Но я считаю возможным в будущих версиях ProfROM использовать байт +05 для других целей, в том числе и для номера MFS-раздела - для этого можно задействовать три бита, а остальные зарезервировать для чего-нибудь еше.
В чем её баги? Ну помимо порчи памяти по адресу в hl. Эта функция активно используется самим монитором для монтирования дисков, нареканий вроде не было.
А в ней какие проблемы?
- - - Добавлено - - -
Но и тут есть нюансы, запись в NVRAM весьма медленная.