PDA

Просмотр полной версии : УКНЦ, отключение RОM ПП и эмуляция



BlaireCas
08.02.2020, 13:18
Здраствуйте. Первая тема на форуме, но тем-не менее..

Решил тут вспомнить ассемблер DEC и сделать игрушку. Вроде все шло неплохо на эмуляторе пока в руки не попала настоящая УКНЦ.

Как-известно там можно в периферийном процессоре отключить банки ПЗУ с адресов 100000-160000 и поставить туда ОЗУ которое обычно используется под план 0 видеопамяти (чтобы не использовать регистры, а так мол в план 0 записывать).
С настоящей УКНЦ началась какая-то проблема. Она упорно не хочет считывать переключенное ОЗУ, а считывает из ПЗУ ПП. Но записать туда можно.
Делается командой в ПП
mov #161, @#177054 ; 001 110 001 (all RAM banks of plane 0)
Переключаем ПЗУ и дальше работаем вроде как с ОЗУ. И тут-то вылезла проблема у моего возможно УКНЦ. Он пишет в видеопамять по этим адресам. Команды типа MOV нормально работают. Но вот если команда использует считывание оттуда - она читает с другого места. С ПЗУ отключенного. Например BIC у меня на реальной машине показывает совсем не то что ожидалось.

Можно попросить владельцев УКНС запустить диск? Набрать там RU TEST2. Программа делает следующее: устанавливает таблицу строк 0..287 на адреса 100000...155000 линейно и в четырех частях делает операции: 1 часть - просто MOV, вторая BIS #1, (R5)+, третья COM (R5)+, четвертая MOV (R5), (R5)+.

На эмуляторе все нормально.
https://i.imgur.com/DVPl2Xg.png

На настоящей УКНЦ (завод СЭМЗ, три кварца вместе, БП 220 импульсник штатный, загрузка с стык-с2)
https://i.imgur.com/ZhvH7TA.jpg

Просто даже не знаю что подумать, мысли такие:
1) у меня дохнет УКНЦ
2) СЭМЗ был другим заводом
3) так и было задумано везде, отключение ПЗУ ПП приводит к тому что запись идет в ОЗУ, а считывание с ПЗУ, хорошая фича архитектуры О_о

Не могу загрузить сюда файл. Загрузил на сторонний хостинг http://ge.tt/4ZGW7B13 (там в течении месяца только хранится)
Файл uknc.dsk - запустить как систему RT11 и набрать там RU TEST2

(hobot может набрать RU KRK и порадоваться, но игрушка недоделана и неизвестно когда будет доделана)

S_V_B
08.02.2020, 13:44
Может так?
MOV #21,@#177054 ; Отключить ПЗУ от 100000 до 117777

BlaireCas
08.02.2020, 14:22
Может так?
MOV #21,@#177054 ; Отключить ПЗУ от 100000 до 117777

Это да, я-ж его полностью в ПП и отключаю. Дело в другом. У меня нет например УКНЦ завода Квант чтобы проверить как она себя ведет. А если такая штука повторяется на всех УКНЦ - то хорошо-бы эмуляторы немного изменить.

hobot
08.02.2020, 14:47
(hobot может набрать RU KRK и порадоваться, но игрушка недоделана и неизвестно когда будет доделана)
оформление и управление и в целом симпатично очень!
По поводу теста - живую могу помучить не раньше вечера воскресенья примерно...

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


На настоящей УКНЦ (завод СЭМЗ
у Titusa в эмуляторе 0.15G - такая же каша как на вашей живой !!!!!!!!!!!!!!!!!

Arseny
08.02.2020, 15:43
На Кванте такой же красивый "мусор".

SuperMax
08.02.2020, 16:08
проверил на 16ти цветной машине - картинка аналогичная

по поводу игрушки - я правильно понял что она сейчас замедленна специально ?

MM
08.02.2020, 17:06
Она упорно не хочет считывать переключенное ОЗУ
https://pic.maxiol.com/thumbs2/1581170516.531453226..jpg (https://pic.maxiol.com/?v=1581170516.531453226..jpg&dp=2)
Отключается ПЗУ только в адресе 100000-117777.

http://emuverse.ru/wiki/%D0%A3%D0%9A%D0%9D%D0%A6

Alex_K
08.02.2020, 17:58
BlaireCas, как выше написал MM, отключать можно только ПЗУ в диапазоне 0100000-0117777. Но подключать ОЗУ можно в диапазоне 0100000-0176777. Так как ПЗУ не реагирует на запись, то в подключенное ОЗУ можно спокойно писать командами CLR и MOV, но не CLRB и не MOVB. У процессора 1801ВМ2 есть одна особенность - для полнословных команд MOV и CLR в dst делается только цикл записи, а для байтовых цикл чтение-модификация-запись. При чтении читаться будут одновременно ПЗУ и ОЗУ, но ПЗУ значительно быстрее, и вероятнее всего что вы получите её содержимое, возможно также с наложением по ИЛИ содержимого буферного регистра контроллера ОЗУ в текущий момент. С окном 0100000-0117777 могут быть проблемы, если в разъёмы ВУ воткнуты контроллер винчестера или электронный диск, т.к. эти контроллеры активизируются при снятии сигнала CE0 и выборе нужного уровня сигнала CE3 (в зависимости от слота). Ну и в диапазоне 0177000-0177777 всегда страница ввода-вывода.

hobot
09.02.2020, 00:55
Alex_K, а какая картинка правильная - на UKNCBTL или в эмуляторе Titusа ?
Это ведь важно, надо что бы nzeemin Никита в курсе был, что расхождения такие в эмуляции обнаружены !

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

BlaireCas, возможно преждевременный баг-репорт (замечание-примечание)
по управлению: заявленные в меню 8 и 2 будут работать, только в режиме ДКЛ,
в который игра не переключает...

BlaireCas
13.02.2020, 07:54
Всем спасибо кто потестировал. Получается это не УКНЦ у меня помирает, а так и задумано.


BlaireCasПри чтении читаться будут одновременно ПЗУ и ОЗУ, но ПЗУ значительно быстрее, и вероятнее всего что вы получите её содержимое, возможно также с наложением по ИЛИ содержимого буферного регистра контроллера ОЗУ в текущий момент.
Да... Вот это проясняет ситуацию. Все верно, на реальной УКНЦ пишется в ОЗУ и читается ПЗУ. Выглядит конечно весело - пишешь в ячейку памяти одно, читаешь другое (веселая фича архитектуры). И никогда-бы не подумал что может "одновременно читаться и ОЗУ и ПЗУ". Чудеса одним словом.

Впрочем жаль что полноценно нельзя использовать адреса выше 0100000, было-бы дополнительное ОЗУ посредством жертвования плана 0 видеопамяти. Ну а так остается работать с ним через регистры что "неполноценно" (нельзя туда исполняемый код и т.д.).
Эмулятор EmuStudio кстати вроде нормально отрабатывает данный момент. А вот в Никитином эмуляторе неплохо бы данное поправить (сказать ему, как он тут появится).