можно ссылку на эту версию?
- - - Добавлено - - -
при входе из меню 128, такое должно наблюдаться и на родном ПЗУ 4.01
не в 100% случаев, но примерно в 15-30%
во всех, или в некоторых?
Вид для печати
fatall можно взять, например, в этой прошивке https://zx-pk.ru/threads/17589-tekhn...l=1#post446596
В 21 проблема с клавиатурой не наблюдается.
Я поставил в мониторе выбирать экран 7. А при вызове rst 8 он всё равно смотрит переменную 5b5c. Я так думаю.
izzx, Есть один нюанс, при первом переключении страницы всегда будет браться значение из #5B5C, потому как 8я страница (где лежат все переменные монитора) еще недоступна, как только настройка из 8й страницы прочитана, далее все записи в порт #7ffd идут с учетом этой настройки.
Так что да, небольшое мерцание будет.
При работе с rst 8, SMUC и экраном GMX таки стабильность хромает, по сравнение с обычным экраном. Иногда что-то куда-то вылетает. Чем именно не дружит расширенный экран с этой функцией? Вроде бы ячейки памяти никакие не меняются после вызова, прерывания не включаются. Экран теперь правильно определяется. Верно? А что ещё тогда.
Подождите следующей версии, 23я в этом плане еще немного сыровата, да и к тому же есть ошибки в системных вызовах, вылеты скорее всего из-за этого.
А вотбыл случайкакая особенность: различается логика при работе с реальными дискетами и виртуальными.
Если вставить дискету в B: и обращаться к TRDOS через 3D13, то работает. По переменку можно считывать секторы через rst 8 с раздела CPM, который примонтирован к D:.
А вот если в B: виртуальная дискетка, то после обращения к D: он типа становится по умолчанию и вызовы через 3d13 уже читают жёсткий диск. Ну я так подозреваю. В общем, уже всё идёт наперекосяк.
Это ещё в старой прошивке 5.00 так работает.
если работа идет с реальной дискетой, то работают процедуры tr-dos.
если в подключен образ, то все вызовы перенаправляются на rst 8, а там тоже есть такое понятие как текущий дисковод. вызывайте функцию #01 перед обращением к дисководу
LW, Подскажите, в профПЗУ есть код которые проверяет наличие контроллера прерываний на SMUC контроллере, можете рассказать как он его проверяет, и есть ли еще какие-нибудь процедуры для работы с ним?
есть
как-то так
Код:;#1572 определение наличия interrupt controller
x1572 ld bc,#FFBA
ld a,(xDFF0) ;состояние порта #FFBA
and #F7
out (c),a
ld (xDFF0),a
ld bc,#7EBE
ld a,#F3
out (c),a
nop
ld b,#7F
ld a,#C5
out (c),a
nop
ld a,#01
out (c),a
nop
nop
in a,(c)
or a
jr z,x15A1
cp #01
jr z,x15A5
x159D ld a,#24 ;сообщение: interrupt controller not found
scf
ret
x15A1 set 4,(iy+#1B)
x15A5 ld b,#7E
ld a,#F2
out (c),a
nop
ld b,#7F
ld a,#C5
out (c),a
nop
ld a,#FF
out (c),a
nop
nop
in a,(c)
cp #FF
jr nz,x159D
set 4,(iy+#1A)
xor a
ld a,#25 ;сообщение: interrupt controller found
ret
[свернуть]
на 4.23 gmx commander не видит подмаунчиные через смук диски и при выходе из теневика обратно в меню (станлдартное спек128) зависон, речь о версии под gmx, на обычном не пробовал
У меня GMX Comm с прошивкой 23 вообще не хочет запускаться. А HDD Comm не все диски видит, scboot не открывает разделы ).
Маунт конечно с mfs, кстати в 21 теже грабли, только не виснет при выходе из теневика в меню, а ещё слышал про 24 и вкусности :v2_dizzy_punk::v2_dizzy_punk:
- исправлены некоторые ошибки
- реализована загрузка с винчестера
первый пост обновил
Попробовал запуск CP/M через HDD boot. Работает! Только надо записывать загрузочный сектор на место 0-го, а я сначала на 1-й сектор пытался. Надо бы уточнить в хелпе, а то там сказано про "первый сектор". Можно по-разному понять.
LW, раньше, в первом сообщении, в архиве ProfRom.zip, был файл !newR8DOS.txt с описанием новых вызовов RST8. Почему он сейчас не прилагается? Появились ли новые вызовы?
Grand, Да, появились. Рабочее описание добавил в первый пост.
Я попробовал ROM-файл ProfRomGMX.rom (версия 101 от 4.4.2023) на эмуляторе UnrealSpeccy (V0.37.9, эмулирующая Scorpion GMX). Этот ROM работает как-то нестабильно: в меню "128" самопроизвольно сбрасывается в 48 BASIC.
Попробовал в тестовом TRDN примонтировать диск (процедуру подсчета CRC вызываю по адресу #0000 из ROM23) - это заканчивается зависанием с цветными квадратами на экране.
Хочу спросить: что где не так работает? :)
Возьмите посвежее версию в первом посте. Возможно в той версии есть какие-то ошибки, честно говоря не помню уже.
ROM переключаете штатной процедурой из рам 8? или прямой записью в порт? Так-то это должна быть #17 страница, т.е если пишите в порт, то писать надо %t101sm00
t - turbo
s - screen
m - magic
Попытка добавить поддержку загрузчиков #3D2F
Кому не сложно, потестируйте прошивку на реале, в плане работы загрузчиков через 3d2f. Как с реальной дискеты так и с примонтированного образа.
Исправил работу с реальными дискетами. перезалил.
PS2 ускорил работу с реальным дисководом. перезалил.
Вложение 78944
Версия ROM'а из первого поста действительно стала стабильно работать на эмуляторе Scorpion'а GMX. Я смог произвести отладку TRDN. Жаль, что у меня нет реального Scorpion GMX...Цитата:
Сообщение от LW
Оказалась ошибка в TRDN в процедуре определения версии монитора. :D Тестовая версия TRDN с поддержкой Scorpion GMXЦитата:
Сообщение от Grand
выложена здесь.
Ну да, она и есть: 23=#17.Цитата:
Сообщение от LW
Переключаю прямой записью в порт. Так это выглядит на Scorpion GMX.
А что там за штатная процедура в RAM8? И как все-таки правильнее переключать?Код:R37CRC LD DE,HDDBUF
;DE-круглый адрес вида #xx00, куда считан сектор данных о примонтированных дисках.
DI
LD A,#D0
CALL L01PR
PUSH DE
LD BC,508
R7CRC LD IX,#0000;адрес процедуры подсчета CRC в ROM#17.
;В версии 100 это адрес #21E5.
CALL R7R
POP DE
INC D
LD E,#FC
LD A,L
LD (DE),A ;Заносим СКС.
INC DE
LD A,H
LD (DE),A
LD A,#C0
L01PR JP L01GMX ;Переключаем ROM'ы.
LD BC,#1FFD ;Это используется на "обычном" Scorpion'е.
LD A,2 ;
OUT (C),A ;
LD A,(#10C) ;
XOR A ;
OUT (C),A ;L01PR+14
RET
L01GMX LD BC,#7EFD
JR L01PR+14
R7R PUSH IX
JP #3D31
LW, обратил внимания, что версия 101 под меню "128" пишет "1992-2023 Scorpion ZS 256". Надо бы написать, например, "Scorpion GMX", чтобы не было путаницы.
ну да. привычка уже воспринимать такие числа в шестнадцатеричном виде.
поправлю со временем
нет, процедуру из RAM 8 лучше не использовать, вероятнее всего адресация у неё изменится со временем.
для включения любого ROM, можно использовать следующую конструкцию:
в данном случае вам нужна банка за номером 7Код:ld bc,#7FFD
ld a,#10
out (c),a
ld b,#DF ;это нужно только
xor a ;для
out (c),a ;версии GMX
ld b,#1F
ld a,#12
out (c),a ;включим ram 8 и rom 2(monitor)
rst #30
dw adrproc ;адрес процедуры в вызываемой банке
db bank ;номер банки
....
дальнейший код (включена банка, активная при вызове)
rst #30 это как раз механизм вызова процедур из любой банки, при любой (кроме basic48/basic128/tr-dos) активной банке
и меняться он точно не будет
актуально как для ZS 256, так и для GMX
регистры и флаги она не портит
но и есть минус. область памяти #C000-#FFFF недоступна. вернее, при работе процедуры, там будет 8я страница, которую портить нехорошо
а вообще надо, наверное, добавить в системные вызовы вызов процедуры подсчета CRC...
- команда SPECTRUM в бейсике 128 выдает верное сообщение
- GMX: переделано определение конфигурации (страница, тип и номер экрана, бордюр) на прямое чтение портов
- GMX: настройки монитора перенесены в страницу #78
- GMX: заработали пункты меню S. Set up -> X. GMX -> N. Port I/O и I. Interrupts
В основном изменения коснулись версии для GMX.
Определение текущей конфигурации при входе в монитор теперь выполняется исключительно чтением из портов вплоть до бордюра.
Теперь из теневика можно заблокировать доп. порты гмх и установить пентагоновский инт
Настройки теневого монитора переехали в #78 страницу и при заблокированных портах гмх она теперь находится вне зоны доступной памяти.
первый пост обновил
Ну не совсем вслепую. Первичный этап конечно проходит на эмуляторе, на эту проверку просто ставится заглушка. А финальное тестирование разумеется на реалах, за что спасибо неравнодушным людям.
Больше сложностей доставляет поддержка GMX, слишком мало документации, и многие моменты приходится проверять исключительно на реалах.
v4(5).xx.29
- GMX: отлажена работа монитора при заблокированных портах GMX
- GMX: решена проблема работы со 2й страницей памяти подключенной в 3е окно
- откорректирован алгоритм "эмуляции" ВГ93 (#3D2F)
- восстановлена работоспособность программы ADS
- навигатор: исправлена ошибка отмонтирования образа
- навигатор: исправлена ошибка вывода каталога дискеты/образа при количестве файлов более 31
- навигатор: в список устройств добавлена лента
- навигатор: в корневой каталог FAT32 добавлена ссылка на родительский каталог
- отладчик: команда отладчика "?" показывает символы в диапазоне #80..#FF, если их отображение включено командой OPTion
- отладчик: исправлена ошибка вывода из буфера последних введенных пограничных(первой и последней) команд (стрелка вниз/вверх)
- исправлена ошибка при выводе каталога содержащего 128 файлов
- поддержана печать названия примонтированного файла на русском языке
первый пост обновил
кому не сложно, надо кое-что проверить на скорпионе без гмх, но с профпзу
test1 и test2 - запустить каждый, нажать магик, и посмотреть какое число будет после выхода из теневика
test3 - нажать магик, будет вход в теневик или нет, если да какое число будет после выхода из теневика
Вложение 79194
kolobokru, благодарю
небольшая обнова
- 3D2F: исправлена ошибка в "эмуляции" #3D2F приводящяя к некорректной работе некоторых программ (z-player не находил SMUC)
- 3D2F: исправлена ошибка при запуске sna/spg/hobeta файлов из навигатора/монитора
- GMX: исправлена ошибка с определением турбо режима
- GMX: при блокированных портах gmx, при входе в монитор/вызове rst #08 по умолчанию включается инт пентагона, при выходе из монтора инт устанавливается согласно настройкам
- GMX: настройки инта и блокировки портов сохраняются в NVRAM
- GMX: при "тёплом" ресете режим турбо сохраняется
- GMX: после ресета, надпись внизу экрана информирует о настройках INT, блокировки портов GMX и доступной памяти
- исправлена работа функции #24 R8DOS в части чтения из .scl
- добавлен пункт меню S. Set up -> M. Monitor -> M. Mute AY/TS rst 8 включение/выключение гашения звука при вызове rst 8 (в основном для работы с винчестером)
- при нажатии NMI в меню монитора вызывается навигатор
первый пост обновил
LW, у меня не получается вызвать функцию подсчета CRC области памяти.Цитата:
Сообщение от LW
Процедура
дает зависание с артефактами на экране.Код:ORG 32768
LD HL,49152
LD DE,16384
LD C,50
RST 8
DEFB #81
RET
Использовался UnrealSpeccy 0.39.0 в режиме эмуляции ZS Scorpion + Profrom и новый ROM-файл ProfRom.rom v4.xx.30.
Тоже самое происходит и на UnrealSpeccy с эмуляцией Scorpion GMX и с соответствующим ROM-файлом.