PDA

Просмотр полной версии : Дизассемблер ПрофПЗУ Scorpion



LW
28.03.2022, 20:30
Искал на форуме, ну может быть хреново искал....
Искал всети...
Не нашел...
Может быть есть у кого наработки по дизасму ПроФПЗУ Скорпиона????

Evgeny Muchkin
28.03.2022, 20:56
Не помню, чтобы кто-то дизасм делал.

Какие-то изменения внести есть желание?

goodboy
28.03.2022, 21:11
частичный дизасм делали (но не на этом форуме)
в эмуле unreal ProfRom чуток подправленный (иначе не работал)

LW
28.03.2022, 21:45
частичный дизасм делали (но не на этом форуме)
А где? доступ можно получить? и насколькоко частичный? если онли TR-DOS так это даже не стоит обуждения.

в эмуле unreal ProfRom чуток подправленный (иначе не работал)
А в в чём правки были?

- - - Добавлено - - -


Какие-то изменения внести есть желание?
Есть желание поиметь дизасм., и как мимимум научить пройфпзу рабтать с фатом. в плане монтирования TRD.
Ну ваообщенм, не факт что такое будет, но тем не менее Хоттелка это вещь серознаяюююю

goodboy
29.03.2022, 10:59
я не помню что было 20 лет назад, но .............
насколько я помню Unreal вообще не эмулирует ТурбоРежим Скорпа,
а в ранних версиях ПрофРом (3.2a ? ) после старта шла проверка и если число тактов в инте не меняется при включении турбо комп зависал.
позже авторы этот момент убрали

drbars
29.03.2022, 11:05
эх, вот бы теневой монитор для экрана gmx... Помню где-то читал, что у MOA были такие планы, но работы пришлось свернуть.

LW
31.03.2022, 19:02
Ну вообщем-то примерно так и предполагал...
Печалька...
Но зато есть занятие на ближайшие пару лет :)

kox
31.03.2022, 19:34
Поддержка фат планируется значит?

LW
31.03.2022, 20:10
kox, Ради этого сиё и начато.
Но учитывая трудоемкость такого занятия, и отсутствие наличия достаточного свободного времени данный процесс растянется во во времени очень прилично.

krotan
31.03.2022, 22:28
МОА писал ПрофПЗУ на форте под CP/M, так что скорее нужен дизфортер... а там важно упаковал ли он код с удалением идентификаторов форт-слов или нет... если не упаковывал, то дизфортится легко...

Grand
02.04.2022, 13:19
...научить пройфпзу рабтать с фатом. в плане монтирования 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.

Kulich
02.04.2022, 14:27
А я считаю что FATэто лучшее что можно сделать с дисками под Спектрум. И без этого ононизмом копирования образа с фат на мфс. Драгое дело что взять и написать все заново хоть как-то может очень мало кто. Сделать свою систему, со своим софтом и поддержкой старого на базе нового. Поэтому велосипеды на костылях наше все) хотя данное решение хотябы без страданий переносить образы на Скорпион.

goodboy
02.04.2022, 14:43
а какие плюсы в использовании HDD по сравнению с эмулем флопа ?

izzx
03.04.2022, 21:27
Теперь FAT_MOUNTER копирует сектора из файла utils.trd, который в FAT-разделе, в псевдодиск \mount\drv_c, который в MFS-разделе, и монтирует последний на C:.
Это минимум 5 секунд ждать. А если бы просто монтировать образ на FAT, то почти мгновенно.



а какие плюсы в использовании HDD по сравнению с эмулем флопа ?
Я хотел бы послушать мнение тех, у кого есть эмуль флопа. На сколько там удобно щёлкать кнопками по меню. И какова скорость чтения. У меня нет такого, и дискетами почти не пользуюсь.
Ну и с HDD явно больше возможностей, кроме эмуляции TR-DOS. Можно с FATа музыку и видео гонять. Ну и другие ОС юзать. Да и удобнее, я думаю, чем менюшка эмулятора FDD.

PS. идея автора шикарная.

Grand
04.04.2022, 12:15
а какие плюсы в использовании HDD по сравнению с эмулем флопа ?Вероятно, эмулятор флоппи-диска предпочтительнее. С него будут работать даже те программы, где используется прямое программирование ВГ93.

reddie
04.04.2022, 13:57
С него будут работать даже те программы, где используется прямое программирование ВГ93
Но эмуль и размер "диска" выдаст не больше дискеты. Во всем свои плюсы и минусы =)
Для работы с HDD/СF, в общем-то, и FAT не нужен, если программировать номера секторов напрямую. Вставляем CF на 2 гига - получаем 2 доступных гига.
Понятно, что софт с прямым доступом к ПЗУ TR-DOS работать не будет, но Скорпионовские образы дискет, насколько знаю, тоже работают только через #3D13

LW
04.04.2022, 14:09
Вставляем CF на 2 гига - получаем 2 доступных гига.
с которыми ни одна программа работать через #3D13 не будет

reddie
04.04.2022, 14:21
с которыми ни одна программа работать через #3D13 не будет
Это уже другой вопрос. С доступом к FAT через #3D13 тоже как-то не очень, если не переделывать ПЗУ.
А если переделывать, то можно через те же стандартные процедуры работать, но это уже не будут TR-DOS дискеты.

izzx
04.04.2022, 18:14
Да, когда ПЗУ научится работать с FAT, нужно будет и утилитку монтирования типа scboot сделать, чтобы лишний раз в монитор не лезть. А лучше в TRDN поддержку добавить.

LW
04.04.2022, 18:59
izzx, А вы оптимист... Ну до этого еще далеко, хотя, могу сказать, что не всё так сложно как я ожидал.

LW
06.04.2022, 20:42
Кто знает существуют эмуляторы, поддерживающие чтение портов #7FFD и #1FFD через регистры AY?

krotan
06.04.2022, 22:03
Кто знает существуют эмуляторы, поддерживающие чтение портов #7FFD и #1FFD через регистры AY? Вероятно SPM:
http://a-moa.chat.ru/SPM.htm

LW
08.04.2022, 20:54
а в ранних версиях ПрофРом (3.2a ? ) после старта шла проверка и если число тактов в инте не меняется при включении турбо комп зависал.
позже авторы этот момент убрали
Прикольно. Нашел этот момент. Есть такая проверка, но после неё идет типа заглшуки, и этот момент тупо нивелирется.

в эмуле unreal ProfRom чуток подправленный (иначе не работал)
Ну вот сравнивал много дампов, но так и не увидел разницы. Может кто подскажет что там правили?

Gutten
10.04.2022, 14:35
были сведения, что убрана проверка CRC и чтение сигналов ВГ93 из порта 1F при ресете.

Ewgeny7
11.04.2022, 17:12
были сведения, что убрана проверка CRC и чтение сигналов ВГ93 из порта 1F при ресете
Это было сделано значительно позже, Савелием, по просьбе общественности, чтобы самостоятельно менять содержимое ромдиска без плясок с бубном CRC, а чтение сигналов убрали, когда привинчивали профПЗУ на Феникс и Кай. Я во всех этих событиях непосредственно участвовал.

- - - Добавлено - - -


Ну вот сравнивал много дампов, но так и не увидел разницы. Может кто подскажет что там правили?
Ничего не правили. Любой дамп вставляй в эмуль - будет работать.

LW
11.04.2022, 20:11
Это было сделано значительно позже, Савелием, по просьбе общественности, чтобы самостоятельно менять содержимое ромдиска без плясок с бубном CRC, а чтение сигналов убрали, когда привинчивали профПЗУ на Феникс и Кай. Я во всех этих событиях непосредственно участвовал.
Если имеется ввиду это (https://zx-pk.ru/threads/17589-tekhnicheskij-razdel-quot-scorpion-zs-1024-quot-(ot-razrabotchikov).html?p=446596#post446596), то с этим я ознакомлен.

Ничего не правили. Любой дамп вставляй в эмуль - будет работать.
Вот... В этом ответ на вопрос... Спасибо!

LW
20.04.2022, 10:48
Любопытный момент. Чисто для информации.
Функции встроенной дисковой BIOS R8DOS, вызываемые через rst 8: db #81 начиная 20 по 33 включительно, т.е. те которые работают с файлом через буфер fcb, в том виде как оно есть, для пользователя недоступны. Т.к. регистр ix в них не передается.
Но судя по всему раз информации об этой ошибке не встречалась, этими функциями никто и не пользовался.

Кроме того нашел несколько горячих клавиш в меню монитора:
EDIT+Q - быстрый переход из любого меню(кроме отладчика) в main menu
EDIT+D - вызов меню выбора диска из любого меню(кроме отладчика)
EDIT+M - дублирует enter

LW
22.04.2022, 16:41
Еще один любопытный факт.
В драйвере монитора реализована возможность защиты от записи для каждого из подключаемых образов.
Но возможность поднять этот флаг средствами монитора отсутствует. :(

P.S. Если кому-то интересно, могу рассказать как включать защиту образа на запись...

LW
23.04.2022, 10:17
Нашел достаточно неприятную ошибку в функции 35 ($HDDMOUNT) R8DOS.
При завершении работы этой функции:
при входном параметре bit 4,a =1 устанавливается 4й бит по адресу #E5A5 в 8й странице монитора, а там хранится произведение head * sector активного HDD. порча этого значения может привести к нехорошим последствиям.
при входном параметре bit 4,a =0 устанавливается 4й бит по адресу в регистре hl, заданному при вызове этой функции, опять таки при включенной 8й странице. тут предсказывать последствия вообще сложно.

так что вместо этой функции предпочтительнее использовать недокументированную функцию 40(#28). Это полный аналог, но без порчи памяти.

izzx
23.04.2022, 14:06
Если кому-то интересно, могу рассказать как включать защиту образа на запись...
Интересно. В меню бы эта функция полезной была. Но за всё время почему то не было мысли, а почему нет такой возможности? Например, для архивных образов поставить бы защиту.

LW
23.04.2022, 15:21
В дескрипторе образа диска первый байт содержит единицу(признак диска TR-DOS). установка в этом байте 5го бита в единицу даст защиту от записи на уровне драйвера.
Но есть один неприятный момент. Монтирование защищенных дисков выполняется не совсем корректно. И что бы был к нему доступ из tr-dos его нельзя монтировать на пустой дисковод. Необходимо что бы к дисководу был примонтирован диск без защиты от записи. Либо сразу после монтирования в 8й странице в ячейку #FFCC..#FFCF для дисководов A..D записать значение #E0

izzx
23.04.2022, 17:25
Монтирование защищенных дисков выполняется не совсем корректно.
Ну да ничего, скоро исправят в новых версиях ).

goodboy
25.05.2022, 16:19
LW, удалось понять для чего из порта кемпстона можно считать сигналы INR/DRQ ?

reddie
25.05.2022, 16:47
удалось понять для чего из порта кемпстона можно считать сигналы INR/DRQ ?
Скорпионщики так "элегантно обошли" необходимость лазить в ПЗУ TR-DOS для чтения этих сигналов.
Хотя, глядя на схему, ощущение, что банально сэкономили на корпусах. Младший брат Ленинграда унаследовал его болезни.

goodboy
25.05.2022, 17:24
кажется понял. по задумке этот порт во время работы trdos откликался на чтение из #FF,
но в итоге сохранилась возможность читать в пару старших битов сигналы с ВГшки из #1F в обычном режиме

LW
25.05.2022, 18:54
удалось понять для чего из порта кемпстона можно считать сигналы INR/DRQ ?
Да уж. В странице с монитором (ROM2) есть процедура использующая этот метод. Сходу не понял зачем читать неиспользуемые биты кемпстона, отложил на потом. Любопытно, что вызвать эту процедуру можно через rst 8: db #8B/#8D(две точки входа). Предварительно видится связь с загрузкой конфигурационного сектора с диска.
Почему именно через порт кемпстона могу только предположить, что в простом ПЗУ в целях экономии памяти использовали этот метод, раз уж техническая возможность позволяет.

LW
26.05.2022, 13:13
но в итоге сохранилась возможность читать в пару старших битов сигналы с ВГшки из #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

goodboy
26.05.2022, 14:45
А что читается в 5й бит?
по схеме вход мультиплексора который идёт на 5ый бит (в режиме чтения из #1F) посажен на землю.

LW
26.05.2022, 15:18
А можно перефразировать для тех, кто не шарит в схемотехнике?

Xela
26.05.2022, 15:52
LW, я тут пытался заменить в ром-файле шрифт скорпионовский, на что-то более читабельное. Нашел где он лежит в пзу, заменил на свой, загрузил в эмулятор, и опять увидел в теневике все тот-же шрифт.. Оно где-то в сжатом виде хранится, и разжимается? не натыкались?

reddie
26.05.2022, 16:13
по схеме вход мультиплексора который идёт на 5ый бит (в режиме чтения из #1F) посажен на землю
Это если читается #1F Кемпстона, т.е. вне ТР-ДОС. В ДОСе идет весь байт прямиком из ВГ.


А можно перефразировать для тех, кто не шарит в схемотехнике?
Из порта Кемпстона читается ноль в пятом бите (если комп не переделывали под 8-бит джой и не нажали кнопку этого бита).
Про TR-DOS описал выше =)

https://i6.imageban.ru/out/2022/05/26/6140c1f04c0aa3e2956a88c8081903ba.jpg (https://imageban.ru)

LW
26.05.2022, 16:26
Xela, шрифт лежит в ROM4 (плоскость 1, страница 0), с адреса #059F. Да он в запакованном виде. Там же по адресу #057F находится процедура распаковки. Собственно эта процедура копирует запакованный шрифт в RAM8 с адреса #EBF5, и вызывает процедуру распаковки из rom6(плоскость 1, страница 2) по адресу #1108 (входные параметры для этой процедуры: hl=адрес куда распаковывать; hl'=адрес буфера откуда распаковывать; de'=первая свободная ячейка в буфере /de'-hl' длина запакованного блока/)

распаковывается в RAM8 #F7C0

Xela
26.05.2022, 16:33
LW, Спасибо!

ох, как сложно заморочились.. при этом он же хранится в ПЗУ в распакованном виде.

LW
26.05.2022, 16:41
Имеете ввиду в rom3(tr-dos)? ну так он там не полный. Плюс там есть нюансы.
Вероятней всего шрифт из tr-dos используется в обычном ПЗУ не Проф.

Xela
26.05.2022, 16:53
Плюс там есть нюансы
https://i.postimg.cc/f3t8fw8h/photo-2022-04-29-01-49-23.jpg (https://postimg.cc/f3t8fw8h)

вы вот про эти два #FF которыми разбивается шрифт?


Вероятней всего шрифт из tr-dos используется в обычном ПЗУ не Проф.
попробую в обычном заменить, хотя мне казалось я начал эксперименты с 2.95б которое не проф.

LW
26.05.2022, 17:17
вы вот про эти два #FF которыми разбивается шрифт?
именно

goodboy
26.05.2022, 17:42
Имеете ввиду в rom3(tr-dos)? ну так он там не полный. Плюс там есть нюансы.
если эти два #FF расположены по адресу #xxFF то этому есть вполне разумное объяснение.
это сделано для совместимости с классической прошивкой TRDOS.
на этот адрес может направляться вектор прерываний (в режимеIM2)
когда используются загрузчики с музыкой или часами - вариантов много.

Xela
26.05.2022, 19:13
именно


если эти два #FF расположены по адресу #xxFF
все так.

я новый шрифт заливал и потом этими #FF разбавлял.

LW
26.05.2022, 20:15
попробую в обычном заменить, хотя мне казалось я начал эксперименты с 2.95б которое не проф.
Я не утверждаю что это так. Просто в ПрофПЗУ отсылку на этот шрифт не встречал, хотя уже отдизасмил процентов 70 наверное. Поэтому и предположил, что это для обычного ПЗУ.
А вот вывод текста в ПрофПЗУ это боль, полюбому надо исправлять.

Xela
26.05.2022, 20:49
LW, я не уверен, что моих знаний хватит на то, что б корректно запаковать новый шрифт и вставить его вместо старого.. так что видимо пока со старым шрифтом.
Хотя я конечно сильно удивлен таким ходом.. сколько они там сэкономили храня этот шрифт в запакованном виде, и разворачивая его в озу? байт 100?

goodboy
26.05.2022, 21:18
отладчик был взят из LaserGenius
https://spectrumcomputing.co.uk/SCRtoImage.php?SCR=/conv_scr/l/LaserGenius.scr&border=0
так что возможно и шрифт оттуда-же

LW
26.05.2022, 21:45
сколько они там сэкономили храня этот шрифт в запакованном виде, и разворачивая его в озу? байт 100?
#4BB весит запакованный шрифт. экономия #345 байт (837 если в десятичной)
Но по большому счету согласен, учитывая что начиная со второй половины страницы #B память даже под RAMdisk не используется (т.е. при ПрофПЗУ 256k порядка 70 килобайт забито нулями), такая экономия видится сомнительной.

я не уверен, что моих знаний хватит на то, что б корректно запаковать новый шрифт
Пока еще не разбирал процедуры загрузки/сохранения ZS-снапов, но предполагаю, что там используется тот же алгоритм сжатия. Так что не все потеряно.

goodboy
26.05.2022, 22:20
такая экономия видится сомнительной.
так ПрофПЗУ сделано на основе прежнего, а там всего 16к на теневик

LW
27.05.2022, 08:01
Как раз в 2.95 версии шрифт не запакованный, и лежит в ROM tr-dos и при ресете копируется также в RAM8.

Xela
27.05.2022, 10:16
так что возможно и шрифт оттуда-же
не, у скорпиона свой:

https://i.postimg.cc/t7Yzt9w9/Snap-2022-05-27-at-10-13-11.png (https://postimg.cc/t7Yzt9w9)


в 2.95 версии шрифт не запакованный, и лежит в ROM tr-dos и при ресете копируется также в RAM8.
тогда потренируюсь с заменой шрифта на обычном, не профпзу

LW
27.05.2022, 23:59
Возможно кому-то будет интересно.
Формат скорпионовских снапов:



Первый сектор - заголовок снапа. Следом за ним сохраненные страницы.

+#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й и уже сохраненных)

Xela
28.05.2022, 00:11
лежит в ROM tr-dos
смещение #F219?

пытаюсь понять что я сделал не так)

https://i.postimg.cc/75bzzp66/Snap-2022-05-28-at-00-10-01.png (https://postimg.cc/75bzzp66)

LW
28.05.2022, 00:17
в tr-dos шрифт лежит по адресу #3219 длиной #318
копируется в ram 8 с адреса #FCA0 (копируется без #FFFF)

Xela
28.05.2022, 00:25
в tr-dos шрифт лежит по адресу #3219 длиной #318
ну да... так у меня и получилось.. только у меня смещение в общем rom-файле 64кб.

ладно, буду дальше экспериментировать

LW
28.05.2022, 00:44
Странно. Сейчас в эмуле наживую в ПЗУ tr-dos поменял изображение нолика. После "холодного" ресета в мониторе он изменился также.
Только нужен обязательно "холодный" ресет. Если экспериментируете в эмуле, перед ресетом занулите 8ю страницу. Со стрелкой влево что-то не получается сделать полный сброс.

- - - Добавлено - - -

вот тут заменил нолик по адресу #F299
77390
изменения присутствуют в меню монитора

Xela
28.05.2022, 00:49
После "холодного" ресета в мониторе он изменился также.
в моем тоже изменения "на лицо", только верхний байт во всем шрифте зануляется.. но после (или в процессе) копирования в озу.
скриншот, который в моем сообщении выше уже с новым шрифтом, и там видно, что срезается верхний байт.

LW
28.05.2022, 01:12
Не зануляется. процедура печати пропускает первый(верхний) байт любого символа.
Любопытно, но в ПрофПЗУ печатаются все восемь байт знакоместа.

- - - Добавлено - - -

внесите такие изменения и будет печататься весь символ
#8A5B =#08
#8A02 =#9f
#8A44 =#00

Xela
28.05.2022, 01:24
и будет печататься весь символ
о, да! спасибо, получилось:

https://i.postimg.cc/kVtZwJsh/Snap-2022-05-28-at-01-23-20.png (https://postimg.cc/kVtZwJsh)

Gutten
28.05.2022, 01:36
А в снапе содержимое портов 7FFD и 1FFD откуда берётся?

- - - Добавлено - - -

С одной стороны - в оригинальном скорпионе-турбо порт был заведён на AY, с другой - на новодельном скорпионе 1024 не был, но снап работал корректно.

LW
28.05.2022, 01:49
Снап сохраняется только из монитора, а при входе в монитор определяется номер активной страницы RAM(банально установкой маркера в странице при входе и потом перебором страниц определяется номер), номер страницы ROM передается при входе в монитор, режим 48/128k(определяется возможностью включения страницы в окно памяти), номер активного экрана по переменной бейсика128. Этого вполне достаточно, разве что экран может быть неверно определен.

- - - Добавлено - - -

чтение портов #1FFD/#7FFD через регистр AY в данном случае не используется

izzx
28.05.2022, 19:46
номер страницы ROM передается при входе в монитор
А как определяется номер ROM?

LW
28.05.2022, 20:54
Нажатие 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й для неё просто нет)
Опять таки наличие некоторого количества неиспользуемых процедур, скорее всего заточенных под контроллер прерываний, которого опять таки мир не увидел.
Но это все в прошлом. Надо подстраиваться под текущие реалии.

goodboy
28.05.2022, 21:15
MagOS таки скорее всего сидит в 9й странице, просто потому что места в 8й для неё просто нет
не, она расположена в #0F

LW
28.05.2022, 21:17
тады за коим чертом зарезервирована 9я страница... вопрос....

reddie
28.05.2022, 21:19
пишут, что сервис-монитор использует страницу 8 и частично страницу 9, хотя страница 9 не используется вообще
На древнем Скорпионе (ниже 2.95) в своё время проверял, очищая 9-ю страницу, и то ли после сброса, то ли после лазанья в теневике в неё какая-то фигня вносилась. Но на работу это не влияло (очистка, имею в виду). Аласм, например, по умолчанию начинает размещение текстов с 9-й страницы, и в процессе работы с компом исходник не портится, что подтверждает её неиспользование сервис-монитором.
Видимо, что-то туда писалось в ранних версиях ПЗУ.

LW
28.05.2022, 21:34
во нашел. кусок инструкции от SMUC. Помню, было что-то про MagOS... :)


6. Дальнейшее развитие
В самом ближайшем будущем мы планируем по возможности ввести более удобный способ работы контроллера SMUC е
системе IS DOS. В дальнейшем планируется расширение функций Теневого Сервис-Монитора, связанных с поддержкой устройств,
установленных на контроллере SMUC Здесь речь надет прежде всего о поддержке HAYE-s совместимого модема. Кроме этого, ведутся
работы по русификации Теневого-Сервис Монитора. Появление быстродействующей внешний памяти — жесткого диска, а скорость
ввода данных с HDD сравнима со скоростью ввода программ из ROM-диска, позволили начать работу над созданием гипертекстовой
справочной системы по функциям Теневого Сервис Монитора и Spectrum-совместимым компьютерам в целом. Кроме этого,
планируется создание операционно независимой системы псевдомногоэадачности, что-то типа MagOS, но встроенной в 'сердце"
компьютера и поэтому работающей намного корректнее, к тому же обладающей практически неограниченной памятью.

Так что вероятнее всего 9я страница это задел на будущее от авторов. Жаль... Не удалось это реализавать...

- - - Добавлено - - -


не, она расположена в #0F
Кстати нелогично. Там вроде бы автор сотрудничал с Зоновым, вроде бы даже продал ему MagOS или права на неё. В данном контексте логичнее было бы грузить MagOS в 9ю страницу.

Xela
28.05.2022, 21:42
логичнее было бы грузить MagOS в 9ю страницу
надо пропатчить) и заодно пропатчить на предмет поддержки более 256кб РАМ..

LW
29.05.2022, 00:03
Ну для чего вы думаете делается дизасм...
Во первых есть стойкое желание подружить ПрофПзу с FAT
а во вторых... Там есть что исправит

Xela
29.05.2022, 00:20
Ну для чего вы думаете делается дизасм...

подружить ПрофПзу с FAT

тут как бы сомнений и не было. я просто, видимо неудачно, пошутил про патчинг именно MagOS

drbars
29.05.2022, 06:59
А может удастся подружить экран GMX с теневым монитором... Чем чёрт не шутит))

Grand
29.05.2022, 09:01
логичнее было бы грузить 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 - всегда обращается только к первому?
Есть возможность это исправить не переписывая все?

LW
24.10.2022, 19:27
ПрофПЗУ же не может нормально использовать несколько разделов TR-DOS - всегда обращается только к первому?
Вероятно вы имеете ввиду раздел MFS. Подразделов Tr-Dos в разделе MFS может быть несколько.

Есть возможность это исправить не переписывая все?
Да, тут глобальных правок не надо.

marinovsoft
24.10.2022, 19:33
Я про несколько подразделов TR-DOS в разделе MFS.

LW
24.10.2022, 19:43
Давайте определимся с терминами.
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)

Grand
25.10.2022, 13:00
это бут (https://zx-pk.ru/threads/13411) не умеетТам где-то в глубине этой темы (про Scorpion boot) должна лежать более стабильная версия. Может она лучше...

LW
08.11.2022, 21:56
Начал эксперименты. Пока все очень сыро. Но поддержку нескольких разделов MFS удалось добавить весьма малой кровью. Пока без переименования и удаления.
можно потестить
78072

AndXor
09.11.2022, 03:02
С моим образом реального винта не работает.
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)

LW
09.11.2022, 18:39
Пока все очень сыро.
Первые шаги.

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 от начала файла занулить, то работает сразу.