Просмотр полной версии : Дизассемблер ПрофПЗУ Scorpion
Искал на форуме, ну может быть хреново искал....
Искал всети...
Не нашел...
Может быть есть у кого наработки по дизасму ПроФПЗУ Скорпиона????
Evgeny Muchkin
28.03.2022, 20:56
Не помню, чтобы кто-то дизасм делал.
Какие-то изменения внести есть желание?
частичный дизасм делали (но не на этом форуме)
в эмуле unreal ProfRom чуток подправленный (иначе не работал)
частичный дизасм делали (но не на этом форуме)
А где? доступ можно получить? и насколькоко частичный? если онли TR-DOS так это даже не стоит обуждения.
в эмуле unreal ProfRom чуток подправленный (иначе не работал)
А в в чём правки были?
- - - Добавлено - - -
Какие-то изменения внести есть желание?
Есть желание поиметь дизасм., и как мимимум научить пройфпзу рабтать с фатом. в плане монтирования TRD.
Ну ваообщенм, не факт что такое будет, но тем не менее Хоттелка это вещь серознаяюююю
я не помню что было 20 лет назад, но .............
насколько я помню Unreal вообще не эмулирует ТурбоРежим Скорпа,
а в ранних версиях ПрофРом (3.2a ? ) после старта шла проверка и если число тактов в инте не меняется при включении турбо комп зависал.
позже авторы этот момент убрали
эх, вот бы теневой монитор для экрана gmx... Помню где-то читал, что у MOA были такие планы, но работы пришлось свернуть.
Ну вообщем-то примерно так и предполагал...
Печалька...
Но зато есть занятие на ближайшие пару лет :)
Поддержка фат планируется значит?
kox, Ради этого сиё и начато.
Но учитывая трудоемкость такого занятия, и отсутствие наличия достаточного свободного времени данный процесс растянется во во времени очень прилично.
МОА писал ПрофПЗУ на форте под CP/M, так что скорее нужен дизфортер... а там важно упаковал ли он код с удалением идентификаторов форт-слов или нет... если не упаковывал, то дизфортится легко...
...научить пройфпзу рабтать с фатом. в плане монтирования TRD.
Поддержка фат планируется значит?Для того чтобы ипользовать TRD-образы дисков из FAT-раздела винчестера на Скорпионе
вовсе не обязательно делать поддержку FAT'а в Scorpion BIOS и менять ПЗУ. Достаточно будет специально написанной внешней системной программы.
Попробую донести свою мысль на следующем примере.
Пусть у нас имеется винчестер, подключенный к компьютеру Scorpion, имеющий FAT-раздел с TRD-образами дисков и раздел MFS - стандартный скорпионовский раздел с подразделом TR-DOS, названным, скажем, \mount в котором четыре псевдодиска, назовем их drv_a, drv_b, drv_c и drv_d (по числу устройств TR-DOS).
Пусть у нас имеется программа, назовем ее FAT_MOUNTER. После ее запуска с TR-DOS-устройства она выдаст нам каталог FAT-раздела винчестера, где мы выбирем TRD-файл для монтирования, - предположем мы выбрали utils.trd; далее программа запрашивает у нас имя устройства TR-DOS: A:...D:, к которому этот файл следует примонтировать, - предположем мы выбрали C:. Теперь FAT_MOUNTER копирует сектора из файла utils.trd, который в FAT-разделе, в псевдодиск \mount\drv_c, который в MFS-разделе, и монтирует последний на C:. Как известно, первый 512-и байтный сектор каждого псевдодиска не используется, FAT_MOUNTER записывает в него свои слежебные данные: информация о монтировании, имя примонтированного файла в FAT-разделе, флаг read/write, дата монтирования, контрольная сумма файла и т.п.
Происходит выход из FAT_MOUNTER'а в TR-DOS, и теперь пользователь может работать с псевдодиском C:\mount\drv_c как будто с файлом utils.trd FAT-раздела стандартными средствами TR-DOS: запускать файлы и создавать новые; может даже отмонтировать этот псевдодиск.
При следующем запуске FAT_MOUNTER восстанавливает точки монтирования (если это задано в его настройках). Если теперь, для нашего примера, в FAT_MOUNTER мы выберем размонтирование C:, произойдет обратное копирование секторов из \mount\drv_c в файл utils.trd FAT-раздела (если только он действительно изменен и не монтировался с флагом read only), а в первый сектор \mount\drv_c запишется информация, что он отмонтирован и выполнится его отмонтирование от C:.
Вот таким вот образом, создав внешнюю программу (названную здесь FAT_MOUNTER) и
появится возможность работы с TRD-образами дисков FAT-раздела винчестера на Скорпионе.
Однако, я уже писал на нашем Форуме, что не являюсь сторонником использования FAT-файловой системы на Spectrum-совместимых компьютерах в рамках системы ZX Spectrum, и вновь хочу это подтвердить. Считаю, что отличным примером взаимодействия TR-DOS с винчестером, как раз и является способ ныне имеющийся в Scorpion BIOS и не использующий FAT.
А я считаю что FATэто лучшее что можно сделать с дисками под Спектрум. И без этого ононизмом копирования образа с фат на мфс. Драгое дело что взять и написать все заново хоть как-то может очень мало кто. Сделать свою систему, со своим софтом и поддержкой старого на базе нового. Поэтому велосипеды на костылях наше все) хотя данное решение хотябы без страданий переносить образы на Скорпион.
а какие плюсы в использовании HDD по сравнению с эмулем флопа ?
Теперь FAT_MOUNTER копирует сектора из файла utils.trd, который в FAT-разделе, в псевдодиск \mount\drv_c, который в MFS-разделе, и монтирует последний на C:.
Это минимум 5 секунд ждать. А если бы просто монтировать образ на FAT, то почти мгновенно.
а какие плюсы в использовании HDD по сравнению с эмулем флопа ?
Я хотел бы послушать мнение тех, у кого есть эмуль флопа. На сколько там удобно щёлкать кнопками по меню. И какова скорость чтения. У меня нет такого, и дискетами почти не пользуюсь.
Ну и с HDD явно больше возможностей, кроме эмуляции TR-DOS. Можно с FATа музыку и видео гонять. Ну и другие ОС юзать. Да и удобнее, я думаю, чем менюшка эмулятора FDD.
PS. идея автора шикарная.
а какие плюсы в использовании HDD по сравнению с эмулем флопа ?Вероятно, эмулятор флоппи-диска предпочтительнее. С него будут работать даже те программы, где используется прямое программирование ВГ93.
С него будут работать даже те программы, где используется прямое программирование ВГ93
Но эмуль и размер "диска" выдаст не больше дискеты. Во всем свои плюсы и минусы =)
Для работы с HDD/СF, в общем-то, и FAT не нужен, если программировать номера секторов напрямую. Вставляем CF на 2 гига - получаем 2 доступных гига.
Понятно, что софт с прямым доступом к ПЗУ TR-DOS работать не будет, но Скорпионовские образы дискет, насколько знаю, тоже работают только через #3D13
Вставляем CF на 2 гига - получаем 2 доступных гига.
с которыми ни одна программа работать через #3D13 не будет
с которыми ни одна программа работать через #3D13 не будет
Это уже другой вопрос. С доступом к FAT через #3D13 тоже как-то не очень, если не переделывать ПЗУ.
А если переделывать, то можно через те же стандартные процедуры работать, но это уже не будут TR-DOS дискеты.
Да, когда ПЗУ научится работать с FAT, нужно будет и утилитку монтирования типа scboot сделать, чтобы лишний раз в монитор не лезть. А лучше в TRDN поддержку добавить.
izzx, А вы оптимист... Ну до этого еще далеко, хотя, могу сказать, что не всё так сложно как я ожидал.
Кто знает существуют эмуляторы, поддерживающие чтение портов #7FFD и #1FFD через регистры AY?
Кто знает существуют эмуляторы, поддерживающие чтение портов #7FFD и #1FFD через регистры AY? Вероятно SPM:
http://a-moa.chat.ru/SPM.htm
а в ранних версиях ПрофРом (3.2a ? ) после старта шла проверка и если число тактов в инте не меняется при включении турбо комп зависал.
позже авторы этот момент убрали
Прикольно. Нашел этот момент. Есть такая проверка, но после неё идет типа заглшуки, и этот момент тупо нивелирется.
в эмуле unreal ProfRom чуток подправленный (иначе не работал)
Ну вот сравнивал много дампов, но так и не увидел разницы. Может кто подскажет что там правили?
были сведения, что убрана проверка CRC и чтение сигналов ВГ93 из порта 1F при ресете.
были сведения, что убрана проверка CRC и чтение сигналов ВГ93 из порта 1F при ресете
Это было сделано значительно позже, Савелием, по просьбе общественности, чтобы самостоятельно менять содержимое ромдиска без плясок с бубном CRC, а чтение сигналов убрали, когда привинчивали профПЗУ на Феникс и Кай. Я во всех этих событиях непосредственно участвовал.
- - - Добавлено - - -
Ну вот сравнивал много дампов, но так и не увидел разницы. Может кто подскажет что там правили?
Ничего не правили. Любой дамп вставляй в эмуль - будет работать.
Это было сделано значительно позже, Савелием, по просьбе общественности, чтобы самостоятельно менять содержимое ромдиска без плясок с бубном CRC, а чтение сигналов убрали, когда привинчивали профПЗУ на Феникс и Кай. Я во всех этих событиях непосредственно участвовал.
Если имеется ввиду это (https://zx-pk.ru/threads/17589-tekhnicheskij-razdel-quot-scorpion-zs-1024-quot-(ot-razrabotchikov).html?p=446596#post446596), то с этим я ознакомлен.
Ничего не правили. Любой дамп вставляй в эмуль - будет работать.
Вот... В этом ответ на вопрос... Спасибо!
Любопытный момент. Чисто для информации.
Функции встроенной дисковой BIOS R8DOS, вызываемые через rst 8: db #81 начиная 20 по 33 включительно, т.е. те которые работают с файлом через буфер fcb, в том виде как оно есть, для пользователя недоступны. Т.к. регистр ix в них не передается.
Но судя по всему раз информации об этой ошибке не встречалась, этими функциями никто и не пользовался.
Кроме того нашел несколько горячих клавиш в меню монитора:
EDIT+Q - быстрый переход из любого меню(кроме отладчика) в main menu
EDIT+D - вызов меню выбора диска из любого меню(кроме отладчика)
EDIT+M - дублирует enter
Еще один любопытный факт.
В драйвере монитора реализована возможность защиты от записи для каждого из подключаемых образов.
Но возможность поднять этот флаг средствами монитора отсутствует. :(
P.S. Если кому-то интересно, могу рассказать как включать защиту образа на запись...
Нашел достаточно неприятную ошибку в функции 35 ($HDDMOUNT) R8DOS.
При завершении работы этой функции:
при входном параметре bit 4,a =1 устанавливается 4й бит по адресу #E5A5 в 8й странице монитора, а там хранится произведение head * sector активного HDD. порча этого значения может привести к нехорошим последствиям.
при входном параметре bit 4,a =0 устанавливается 4й бит по адресу в регистре hl, заданному при вызове этой функции, опять таки при включенной 8й странице. тут предсказывать последствия вообще сложно.
так что вместо этой функции предпочтительнее использовать недокументированную функцию 40(#28). Это полный аналог, но без порчи памяти.
Если кому-то интересно, могу рассказать как включать защиту образа на запись...
Интересно. В меню бы эта функция полезной была. Но за всё время почему то не было мысли, а почему нет такой возможности? Например, для архивных образов поставить бы защиту.
В дескрипторе образа диска первый байт содержит единицу(признак диска TR-DOS). установка в этом байте 5го бита в единицу даст защиту от записи на уровне драйвера.
Но есть один неприятный момент. Монтирование защищенных дисков выполняется не совсем корректно. И что бы был к нему доступ из tr-dos его нельзя монтировать на пустой дисковод. Необходимо что бы к дисководу был примонтирован диск без защиты от записи. Либо сразу после монтирования в 8й странице в ячейку #FFCC..#FFCF для дисководов A..D записать значение #E0
Монтирование защищенных дисков выполняется не совсем корректно.
Ну да ничего, скоро исправят в новых версиях ).
LW, удалось понять для чего из порта кемпстона можно считать сигналы INR/DRQ ?
удалось понять для чего из порта кемпстона можно считать сигналы INR/DRQ ?
Скорпионщики так "элегантно обошли" необходимость лазить в ПЗУ TR-DOS для чтения этих сигналов.
Хотя, глядя на схему, ощущение, что банально сэкономили на корпусах. Младший брат Ленинграда унаследовал его болезни.
кажется понял. по задумке этот порт во время работы trdos откликался на чтение из #FF,
но в итоге сохранилась возможность читать в пару старших битов сигналы с ВГшки из #1F в обычном режиме
удалось понять для чего из порта кемпстона можно считать сигналы INR/DRQ ?
Да уж. В странице с монитором (ROM2) есть процедура использующая этот метод. Сходу не понял зачем читать неиспользуемые биты кемпстона, отложил на потом. Любопытно, что вызвать эту процедуру можно через rst 8: db #8B/#8D(две точки входа). Предварительно видится связь с загрузкой конфигурационного сектора с диска.
Почему именно через порт кемпстона могу только предположить, что в простом ПЗУ в целях экономии памяти использовали этот метод, раз уж техническая возможность позволяет.
но в итоге сохранилась возможность читать в пару старших битов сигналы с ВГшки из #1F в обычном режиме
А что читается в 5й бит? Не знаю насколько точно эмулит это дело Unreal, но в нем из порта #1F читается #A0 (на реале проверить возможности пока нет).
В ПЗУ же монитора имеем такой кусок процедуры:
x02B3 rst #30
dw rom7_x155A ;подача команды чтения заголовка первого попавшегося сектора дисковода A
db #07 ;без чтения заголовка. завершается ld a,#C4: out (#1F),a:ret
rst #30
dw rom7_x0394 ;проверка подключен ли образ к дисководу
db #07
ret nz ;образ подключен
ld hl,#E005
x02BF in a,(#1F)
and h ;маска %11100000
jr z,x02BF
ret m ;7,a =1
ret pe ;7-5,a =000/011
res 5,h
inc (hl)
inc hl
ld (hl),l
ret
А что читается в 5й бит?
по схеме вход мультиплексора который идёт на 5ый бит (в режиме чтения из #1F) посажен на землю.
А можно перефразировать для тех, кто не шарит в схемотехнике?
LW, я тут пытался заменить в ром-файле шрифт скорпионовский, на что-то более читабельное. Нашел где он лежит в пзу, заменил на свой, загрузил в эмулятор, и опять увидел в теневике все тот-же шрифт.. Оно где-то в сжатом виде хранится, и разжимается? не натыкались?
по схеме вход мультиплексора который идёт на 5ый бит (в режиме чтения из #1F) посажен на землю
Это если читается #1F Кемпстона, т.е. вне ТР-ДОС. В ДОСе идет весь байт прямиком из ВГ.
А можно перефразировать для тех, кто не шарит в схемотехнике?
Из порта Кемпстона читается ноль в пятом бите (если комп не переделывали под 8-бит джой и не нажали кнопку этого бита).
Про TR-DOS описал выше =)
https://i6.imageban.ru/out/2022/05/26/6140c1f04c0aa3e2956a88c8081903ba.jpg (https://imageban.ru)
Xela, шрифт лежит в ROM4 (плоскость 1, страница 0), с адреса #059F. Да он в запакованном виде. Там же по адресу #057F находится процедура распаковки. Собственно эта процедура копирует запакованный шрифт в RAM8 с адреса #EBF5, и вызывает процедуру распаковки из rom6(плоскость 1, страница 2) по адресу #1108 (входные параметры для этой процедуры: hl=адрес куда распаковывать; hl'=адрес буфера откуда распаковывать; de'=первая свободная ячейка в буфере /de'-hl' длина запакованного блока/)
распаковывается в RAM8 #F7C0
LW, Спасибо!
ох, как сложно заморочились.. при этом он же хранится в ПЗУ в распакованном виде.
Имеете ввиду в rom3(tr-dos)? ну так он там не полный. Плюс там есть нюансы.
Вероятней всего шрифт из tr-dos используется в обычном ПЗУ не Проф.
Плюс там есть нюансы
https://i.postimg.cc/f3t8fw8h/photo-2022-04-29-01-49-23.jpg (https://postimg.cc/f3t8fw8h)
вы вот про эти два #FF которыми разбивается шрифт?
Вероятней всего шрифт из tr-dos используется в обычном ПЗУ не Проф.
попробую в обычном заменить, хотя мне казалось я начал эксперименты с 2.95б которое не проф.
вы вот про эти два #FF которыми разбивается шрифт?
именно
Имеете ввиду в rom3(tr-dos)? ну так он там не полный. Плюс там есть нюансы.
если эти два #FF расположены по адресу #xxFF то этому есть вполне разумное объяснение.
это сделано для совместимости с классической прошивкой TRDOS.
на этот адрес может направляться вектор прерываний (в режимеIM2)
когда используются загрузчики с музыкой или часами - вариантов много.
именно
если эти два #FF расположены по адресу #xxFF
все так.
я новый шрифт заливал и потом этими #FF разбавлял.
попробую в обычном заменить, хотя мне казалось я начал эксперименты с 2.95б которое не проф.
Я не утверждаю что это так. Просто в ПрофПЗУ отсылку на этот шрифт не встречал, хотя уже отдизасмил процентов 70 наверное. Поэтому и предположил, что это для обычного ПЗУ.
А вот вывод текста в ПрофПЗУ это боль, полюбому надо исправлять.
LW, я не уверен, что моих знаний хватит на то, что б корректно запаковать новый шрифт и вставить его вместо старого.. так что видимо пока со старым шрифтом.
Хотя я конечно сильно удивлен таким ходом.. сколько они там сэкономили храня этот шрифт в запакованном виде, и разворачивая его в озу? байт 100?
отладчик был взят из LaserGenius
https://spectrumcomputing.co.uk/SCRtoImage.php?SCR=/conv_scr/l/LaserGenius.scr&border=0
так что возможно и шрифт оттуда-же
сколько они там сэкономили храня этот шрифт в запакованном виде, и разворачивая его в озу? байт 100?
#4BB весит запакованный шрифт. экономия #345 байт (837 если в десятичной)
Но по большому счету согласен, учитывая что начиная со второй половины страницы #B память даже под RAMdisk не используется (т.е. при ПрофПЗУ 256k порядка 70 килобайт забито нулями), такая экономия видится сомнительной.
я не уверен, что моих знаний хватит на то, что б корректно запаковать новый шрифт
Пока еще не разбирал процедуры загрузки/сохранения ZS-снапов, но предполагаю, что там используется тот же алгоритм сжатия. Так что не все потеряно.
такая экономия видится сомнительной.
так ПрофПЗУ сделано на основе прежнего, а там всего 16к на теневик
Как раз в 2.95 версии шрифт не запакованный, и лежит в ROM tr-dos и при ресете копируется также в RAM8.
так что возможно и шрифт оттуда-же
не, у скорпиона свой:
https://i.postimg.cc/t7Yzt9w9/Snap-2022-05-27-at-10-13-11.png (https://postimg.cc/t7Yzt9w9)
в 2.95 версии шрифт не запакованный, и лежит в ROM tr-dos и при ресете копируется также в RAM8.
тогда потренируюсь с заменой шрифта на обычном, не профпзу
Возможно кому-то будет интересно.
Формат скорпионовских снапов:
Первый сектор - заголовок снапа. Следом за ним сохраненные страницы.
+#00 =#4D/#41 без компрессии/с компрессией (иное значение даст ошибку при загрузке)
+#01 =#33/#31 с восстановлением регистров AY при загрузке/без восстановления (иное значение даст ошибку при загрузке)
+#02 адрес текущей ячейки в дампе памяти отладчика (вероятно случайно затесалось сюда, не имеет принципиального значения)
+#04 регистр pc
+#06 регистр sp
+#08 регистр ix
+#0A регистр iy
+#0C регистр hl
+#0E регистр de
+#10 регистр bc
+#12 регистр hl'
+#14 регистр de'
+#16 регистр bc'
+#18 регистр af
+#1A регистр af'
+#1C флаг IFFF2
+#1D регистр r
+#1E регистр i
+#1F номер rom откуда зашли в монитор
+#20 bit 6,=1 турбо режим включен (остальные биты значения не имеют)
+#21 =#00/#01 режим прерываний im 2/im 1
+#22 цвет бордюра
+#23 содержимое регистра 7 AY
+#24 состояние порта #7FFD
+#25 состояние порта #1FFD
+#26 регистр #00 AY
+#27 регистр #01 AY
+#28 регистр #02 AY
+#29 регистр #03 AY
+#2A регистр #04 AY
+#2B регистр #05 AY
+#2C регистр #06 AY
+#2D регистр #08 AY
+#2E регистр #09 AY
+#2F регистр #0A AY
+#30 регистр #0B AY
+#31 регистр #0C AY
+#32 регистр #0D AY
+#33..+#3F не используется (=#00)
при записи без компрессии
+#40 битовая карта параграфов страниц
по 8 байт на страницу
последовательность соответствует порядку записи страниц
если бит =0 параграф пустой (не сохраняется, при загрузке забивается нулями)
при записи с запаковкой страниц
+#40 размер запакованных страниц
по 8 байт на страницу
+0 количество байт в последнем секторе страницы (=#00 - 256 байт)
+1 количество секторов занимаемых страницей
+3..+7 не используется
+#B0..+#FF не используется (=#00)
порядок сохранения страниц: для 48k режима
ram #02
ram #05
ram страница включенная при входе в монитор
порядок сохранения страниц: для 128-256k режима
ram #02
ram #05
ram страница включенная при входе в монитор
ram #00-#0F (кроме 8й, 9й и уже сохраненных)
лежит в ROM tr-dos
смещение #F219?
пытаюсь понять что я сделал не так)
https://i.postimg.cc/75bzzp66/Snap-2022-05-28-at-00-10-01.png (https://postimg.cc/75bzzp66)
в tr-dos шрифт лежит по адресу #3219 длиной #318
копируется в ram 8 с адреса #FCA0 (копируется без #FFFF)
в tr-dos шрифт лежит по адресу #3219 длиной #318
ну да... так у меня и получилось.. только у меня смещение в общем rom-файле 64кб.
ладно, буду дальше экспериментировать
Странно. Сейчас в эмуле наживую в ПЗУ tr-dos поменял изображение нолика. После "холодного" ресета в мониторе он изменился также.
Только нужен обязательно "холодный" ресет. Если экспериментируете в эмуле, перед ресетом занулите 8ю страницу. Со стрелкой влево что-то не получается сделать полный сброс.
- - - Добавлено - - -
вот тут заменил нолик по адресу #F299
77390
изменения присутствуют в меню монитора
После "холодного" ресета в мониторе он изменился также.
в моем тоже изменения "на лицо", только верхний байт во всем шрифте зануляется.. но после (или в процессе) копирования в озу.
скриншот, который в моем сообщении выше уже с новым шрифтом, и там видно, что срезается верхний байт.
Не зануляется. процедура печати пропускает первый(верхний) байт любого символа.
Любопытно, но в ПрофПЗУ печатаются все восемь байт знакоместа.
- - - Добавлено - - -
внесите такие изменения и будет печататься весь символ
#8A5B =#08
#8A02 =#9f
#8A44 =#00
и будет печататься весь символ
о, да! спасибо, получилось:
https://i.postimg.cc/kVtZwJsh/Snap-2022-05-28-at-01-23-20.png (https://postimg.cc/kVtZwJsh)
А в снапе содержимое портов 7FFD и 1FFD откуда берётся?
- - - Добавлено - - -
С одной стороны - в оригинальном скорпионе-турбо порт был заведён на AY, с другой - на новодельном скорпионе 1024 не был, но снап работал корректно.
Снап сохраняется только из монитора, а при входе в монитор определяется номер активной страницы RAM(банально установкой маркера в странице при входе и потом перебором страниц определяется номер), номер страницы ROM передается при входе в монитор, режим 48/128k(определяется возможностью включения страницы в окно памяти), номер активного экрана по переменной бейсика128. Этого вполне достаточно, разве что экран может быть неверно определен.
- - - Добавлено - - -
чтение портов #1FFD/#7FFD через регистр AY в данном случае не используется
номер страницы ROM передается при входе в монитор
А как определяется номер ROM?
Нажатие NMI подразумевает переход на адрес #66 ПЗУ tr-dos, если принудительно не включена страница монитора. Соответственно в процедуре tr-dos в этой точке входа устанавливается номер ROM. Тоже самое происходит если в момент нажатия NMI в область ROM включена страница с монитором(что вообщем то маловероятно).
Точности тут никакой, если входим в монитор через TR-DOS значит ставим ROM1(basic48k), если входим в монитор через страницу монитора значит ставим ROM0(basic128k) . Спасает одно, мало какая программа использует ПЗУ Basic128
- - - Добавлено - - -
Тут на самом деле много вопросов.
Почему бы не использовать чтение портов через регистр AY. Хотя есть в ПЗУ такая процедура, но не используется.
Почему во все мануалах авторы пишут. что сервис-монитор использует страницу 8 и частично страницу 9, хотя страница 9 не используется вообще (разве что задел на будущее, и желание внедрить MagOS в ПЗУ/об этом говорит и сохранение снапов, игнорирующее 8ю и 9ю страницы/. MagOS таки скорее всего сидит в 9й странице, просто потому что места в 8й для неё просто нет)
Опять таки наличие некоторого количества неиспользуемых процедур, скорее всего заточенных под контроллер прерываний, которого опять таки мир не увидел.
Но это все в прошлом. Надо подстраиваться под текущие реалии.
MagOS таки скорее всего сидит в 9й странице, просто потому что места в 8й для неё просто нет
не, она расположена в #0F
тады за коим чертом зарезервирована 9я страница... вопрос....
пишут, что сервис-монитор использует страницу 8 и частично страницу 9, хотя страница 9 не используется вообще
На древнем Скорпионе (ниже 2.95) в своё время проверял, очищая 9-ю страницу, и то ли после сброса, то ли после лазанья в теневике в неё какая-то фигня вносилась. Но на работу это не влияло (очистка, имею в виду). Аласм, например, по умолчанию начинает размещение текстов с 9-й страницы, и в процессе работы с компом исходник не портится, что подтверждает её неиспользование сервис-монитором.
Видимо, что-то туда писалось в ранних версиях ПЗУ.
во нашел. кусок инструкции от SMUC. Помню, было что-то про MagOS... :)
6. Дальнейшее развитие
В самом ближайшем будущем мы планируем по возможности ввести более удобный способ работы контроллера SMUC е
системе IS DOS. В дальнейшем планируется расширение функций Теневого Сервис-Монитора, связанных с поддержкой устройств,
установленных на контроллере SMUC Здесь речь надет прежде всего о поддержке HAYE-s совместимого модема. Кроме этого, ведутся
работы по русификации Теневого-Сервис Монитора. Появление быстродействующей внешний памяти — жесткого диска, а скорость
ввода данных с HDD сравнима со скоростью ввода программ из ROM-диска, позволили начать работу над созданием гипертекстовой
справочной системы по функциям Теневого Сервис Монитора и Spectrum-совместимым компьютерам в целом. Кроме этого,
планируется создание операционно независимой системы псевдомногоэадачности, что-то типа MagOS, но встроенной в 'сердце"
компьютера и поэтому работающей намного корректнее, к тому же обладающей практически неограниченной памятью.
Так что вероятнее всего 9я страница это задел на будущее от авторов. Жаль... Не удалось это реализавать...
- - - Добавлено - - -
не, она расположена в #0F
Кстати нелогично. Там вроде бы автор сотрудничал с Зоновым, вроде бы даже продал ему MagOS или права на неё. В данном контексте логичнее было бы грузить MagOS в 9ю страницу.
логичнее было бы грузить MagOS в 9ю страницу
надо пропатчить) и заодно пропатчить на предмет поддержки более 256кб РАМ..
Ну для чего вы думаете делается дизасм...
Во первых есть стойкое желание подружить ПрофПзу с FAT
а во вторых... Там есть что исправит
Ну для чего вы думаете делается дизасм...
подружить ПрофПзу с FAT
тут как бы сомнений и не было. я просто, видимо неудачно, пошутил про патчинг именно MagOS
А может удастся подружить экран GMX с теневым монитором... Чем чёрт не шутит))
логичнее было бы грузить MagOS в 9ю страницу
надо пропатчить) и заодно пропатчить на предмет поддержки более 256кб РАМ..
Не вздумайте! :D :) TR-DOS Navigator с версии 0.75 по умолчанию использует как буфер копирования 9-ю страницу и не использует 15-ю. Что сделано, то сделано. :)
я просто, видимо неудачно, пошутил про патчинг именно MagOS
:v2_dizzy_bye: :v2_tong:
marinovsoft
24.10.2022, 18:38
ПрофПЗУ же не может нормально использовать несколько разделов TR-DOS - всегда обращается только к первому?
Есть возможность это исправить не переписывая все?
ПрофПЗУ же не может нормально использовать несколько разделов TR-DOS - всегда обращается только к первому?
Вероятно вы имеете ввиду раздел MFS. Подразделов Tr-Dos в разделе MFS может быть несколько.
Есть возможность это исправить не переписывая все?
Да, тут глобальных правок не надо.
marinovsoft
24.10.2022, 19:33
Я про несколько подразделов TR-DOS в разделе MFS.
Давайте определимся с терминами.
MFT (англ. Master File Table — «Главная файловая таблица») — база данных, в которой хранится информация о содержимом тома с файловой системой NTFS. К нам она никаким боком не относится.
На винте в(в нулевом секторе) находится MBR, как раз в ней хранится информация о разделах диска, в том числе и о разделе MFS.
Разделов MFS может быть несколько, но, да, теневик обращается только к первому найденному.
marinovsoft
24.10.2022, 20:27
В общем отбой, это бут (https://zx-pk.ru/threads/13411-boot-dlya-skorpionshchikov/13411-boot-dlya-skorpionshchikov.html) не умеет, в ПрофПЗУ с этим проблем нет.
https://i.ibb.co/s6V7479/Sanyok.png (https://ibb.co/s6V7479)
На реале он глючил по другому.
Как это выглядит в trdn
https://i.ibb.co/FYCqN0C/trdn.png (https://ibb.co/FYCqN0C)
это бут (https://zx-pk.ru/threads/13411) не умеетТам где-то в глубине этой темы (про Scorpion boot) должна лежать более стабильная версия. Может она лучше...
Начал эксперименты. Пока все очень сыро. Но поддержку нескольких разделов MFS удалось добавить весьма малой кровью. Пока без переименования и удаления.
можно потестить
78072
С моим образом реального винта не работает.
https://i.ibb.co/FXS9qRs/Prof-Rom-Part-man.png (https://ibb.co/FXS9qRs)
Параметры моего образа:
https://i.ibb.co/RQ7wnmQ/Prof-Rom401-Full-Res.png (https://ibb.co/RQ7wnmQ)
https://i.ibb.co/Wf6h0Y0/Prof-Rom401-CHSLba.png (https://ibb.co/Wf6h0Y0)
https://i.ibb.co/D1LrvFR/Prof-Rom401-Glob-part.png (https://ibb.co/D1LrvFR)https://i.ibb.co/KFWxCQC/Prof-Rom401-Loc-part.png (https://ibb.co/KFWxCQC)
Пока все очень сыро.
Первые шаги.
marinovsoft
09.11.2022, 19:14
Немного потестил, тоже нарвался на ошибку и даже выяснил в каких случаях она проявляется. Если после смены ПЗУ сразу не заходить в partition manager, а попробовать примонтировать диск, то потом можно успешно зайти в partition manager.
Вот тестовый образ, где такое поведение успешно воспроизводится.
https://www.upload.ee/files/14653317/2mb.hdd__2_.7z.html
параметры для анрила CHS0=512/2/4
Также выяснил, что если байт по смещению 0405h от начала файла занулить, то работает сразу.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot