Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Перестали работать тестовые программы btime, minfo, ulatest3.

  1. #1
    Member
    Регистрация
    08.05.2016
    Адрес
    г. Южа, Ивановская обл.
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Перестали работать тестовые программы btime, minfo, ulatest3.

    Перестали работать тестовые программы btime, minfo, ulatest3 на клоне Спектр Калужский вариант 48, хотя месяц назад работали. Другие программы и игры работают без изменений и глюков. В чём может быть дело? Эти три теста после старта ресетятся. Может не туда пишу куда надо, но вопрос касается софта в некоторой степени.

    Прогнал другие тесты, вроде всё как было раньше.
    TEST430 1
    Нажмите на изображение для увеличения. 

Название:	TEST430 1.jpg 
Просмотров:	359 
Размер:	84.6 Кб 
ID:	59994

    https://yadi.sk/i/tw65kKE33FEyZ8

    TEST430 2
    Нажмите на изображение для увеличения. 

Название:	TEST430 2.jpg 
Просмотров:	310 
Размер:	40.1 Кб 
ID:	59985

    https://yadi.sk/i/7CS-jHnZ3FEypb

    TEST430 3
    Нажмите на изображение для увеличения. 

Название:	TEST430 3.jpg 
Просмотров:	299 
Размер:	38.3 Кб 
ID:	59986

    https://yadi.sk/i/kbF0JoUQ3FEyuC

    A48MT
    Нажмите на изображение для увеличения. 

Название:	A48MT.jpg 
Просмотров:	311 
Размер:	32.7 Кб 
ID:	59987

    https://yadi.sk/i/rezETPpl3FEz2E

    IntTest
    Нажмите на изображение для увеличения. 

Название:	IntTest.jpg 
Просмотров:	384 
Размер:	45.6 Кб 
ID:	59989

    https://yadi.sk/i/TNU-phhM3FEzE4

    PD
    Нажмите на изображение для увеличения. 

Название:	PD.jpg 
Просмотров:	336 
Размер:	89.0 Кб 
ID:	59991

    https://yadi.sk/i/A1vAaXw23FEzSV

    PLATFORM
    Нажмите на изображение для увеличения. 

Название:	PLATFORM.jpg 
Просмотров:	302 
Размер:	30.8 Кб 
ID:	59992

    https://yadi.sk/i/AQgRDJUF3FEzXc

    TactsTest
    Нажмите на изображение для увеличения. 

Название:	TactsTest.jpg 
Просмотров:	280 
Размер:	58.0 Кб 
ID:	59993

    https://yadi.sk/i/aHe1nm2M3FF2cD

    mctest2
    Нажмите на изображение для увеличения. 

Название:	mctest2.jpg 
Просмотров:	299 
Размер:	87.3 Кб 
ID:	59990

    https://yadi.sk/i/B6amLep33FF2hz


    Попробовал методом тыка заставить работать btime.
    Лист из дебагера
    Нажмите на изображение для увеличения. 

Название:	btime.jpg 
Просмотров:	339 
Размер:	62.7 Кб 
ID:	59988

    https://yadi.sk/i/YyKaMJ-T3FF3CL
    Переправил все rst 0 на nop в коде программы. Она заработала. Потом по одному вернул rst o на место. Таким образом нашёл 2 rst 0 которые рестартят программу.Их выделил зелёным. Может кто из програмистов скажет что не так в программе (в смысле с компом) , почему программа переходит к этим зелёным командам?
    Скажу честно я не силён в программировании, ну так по мелочи, и не понял предназначения выделеных красным учасков кода. Похоже на какие то ловушки для чего то. Для чего rst 0? И на первый взгляд программа до них не доходит. Но если поменять хоть один halt выделеный красным на nop, то программа не работает(ресетится). Значит программа доходит до halt, но почему не выполняется rst 0 следующий за ней? Прошерстил литературу по поводу Halt и rst 0 - ничего необычного что бы делали эти две команды в месте не нашёл. Далее тупик.
    Последний раз редактировалось апро; 08.03.2017 в 04:03.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,770
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,178
    Поблагодарили
    774 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    возможно `поплыл` кондёр в RC цепочке которая отвечает за длительность сигнала int

    rst#0 это вообще-то программный сброс компа.
    после нажатия на кнопку reset код начинается выполняться с адреса #0000 (то есть из ПЗУ),
    также и после rst#0

    в твоём примере что-то выполняется в подпрограмме на im2

  4. #3
    Member
    Регистрация
    08.05.2016
    Адрес
    г. Южа, Ивановская обл.
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С конденсатором уже поиграл, схему выработки int изменил, точку снятия тоесть по времени немного раньше и немного позже тоже изменил но без результатно.
    В пзу зашита прошивка турбо 90. Поэтому команда rst#0 не приводит к стиранию бейсик программы и машинного кода в памяти. Только по этому я безконечно долго могу проводить эксперименты с ресетами пока не испортится содержимое памяти.
    Трассировка программы показывает что перед переходом по im 2 создаётся таблица вектора перехода по адресу FDDO-FE00 чтобы исключить помехи на шине данных в момент выборки вектора прерывания. Адрес перехода таблицы при любых значениях вектора равен FEFE. Проверил, с таблицей всё в порядке. По адресу FEFE расположена программа возврата из прерывания. Последний адрес записаный в стёк перед IM 2 имеет значение C0A5. Программа возврата увеличивает регистр стёка после IM 2 на 2 и возвращает по адресу C0A5. А там расположена засада INC HL, JP COA5 которая должна зациклить комп. Это моя логика происходяшего процесса но она ошибочна, так как на самом деле этого не поисходит. В реальном времени происходит как то по другому. Трасировщик или дебагер не может нормально выполнить команду IM 2 в пошаговом режиме - происходит порча данных и на реале и на виртуалке. Так что и тут засада. Могу сказать только что, автор такого тут нарамудил, что мне разобрать не по силам. Даже имея исходники https://yadi.sk/d/7-oaIq9w3FJTq9я не понимаю как это работает.

  5. #4
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Возможно, плавает длительность кадра - время в тактах между прерываниями. В оригинальном спеке она вроде как завязана на кадровую развертку, а как на этом клоне - не знаю. По задумке автора, до команд RST0 процессор доходить нигде не должен - до них должно произойти прерывание, которое обходит их инкрементом SP, т.е. возврат из прерывания происходит на заранее загнанный в стек адрес.

  6. #5
    Member
    Регистрация
    08.05.2016
    Адрес
    г. Южа, Ивановская обл.
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Длительность кадра задана жёстко как в балтике и ленинграде счётчиками. И что до RST 0 доходить не должно я тоже понимаю , но доходит в двух случаях. А вот что это за случаи я понять не могу. Процессор поменял без результатно. Есть идея поменять пзу и озу. ради экперимента. Но это несколько напрягает.
    Последний раз редактировалось апро; 09.03.2017 в 00:56.

  7. #6
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Похоже, если раньше работало, а сейчас не работает, изменились условия торможения процессора - возможно, торможение стало меняться от кадра к кадру, соответственно, длительность кадра для процессора тоже меняется. Программы в начале работы вычисляют длительность кадра, в расчете, что она будет постоянной, а она меняется, слетают вычисленные программные задержки, и выполняется RST0. Вряд ли дело в проце, ПЗУ или ОЗУ, возможно, дело в той части схемы, которая тормозит процессор.

  8. #7
    Member
    Регистрация
    08.05.2016
    Адрес
    г. Южа, Ивановская обл.
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    То есть проверить формирование сигнала WAIT ? Попробую пробежать по всем сигналам , может выловлю что небудь.
    Последний раз редактировалось апро; 09.03.2017 в 01:45.

  9. #8
    Member
    Регистрация
    08.05.2016
    Адрес
    г. Южа, Ивановская обл.
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проверил счётчики.
    Формирование всех сигналов.
    Длительность кадров.
    Длительность синхоимпульсов. ССИ = 10 мкс, КСИ = 256 мкс Ну тут есть отличия от тв стандарта, но в каждом кадре всё одинаково.
    Поиграл длительностью INT от24 до 40 и более.
    Заменил пзу и озу.
    Проверил WAIT, ничего подозрительного в формировании не заметил кроме того что он формируется из MREQ, M1, WRBUF , а в ленинграде участвует ешё RD.
    В итоге всё без изменений. Я уже начинаю думать, а не приснилось ли мне случаем, что они работали.
    Может ещё советы будут что проверить?
    А вообще эти тесты на всех клонах должны идти или есть какие то ограничения?
    Последний раз редактировалось апро; 17.03.2017 в 15:04.

  10. #9
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проверил на эмуле ZXMAK2 под моделью Ленинград-1 - сбрасываются.

  11. #10
    Member
    Регистрация
    08.05.2016
    Адрес
    г. Южа, Ивановская обл.
    Сообщений
    33
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот в этой теме есть полезная информация http://zx-pk.ru/threads/21212-tajmin...8-)/page2.html. Проведя эксперименты с эмулятором ZXMAK2 пришёл к выводу, что все клоны имеющие соотношение takt/int = 65184/1 и количество линий в кадре 291 с этими програмками не работают и похоже мне всё же приснилось, что они работали. Может какое-то влияние оказывает торможение памяти.
    Остаётся не понятным код программы - что происходит когда отрабатывают 69888 тактов? Почему не доходит до rst 0? Тут какая то хитрость. Если тактов меньше и int приходит раньше, то доходт до rst 0.

    код
    Код:
    ALIGNINT:
    	ld de, _align
    	push de
    	ld de, _try
    	push de
    	im 2
    	halt
    	rst 0		; the interrupt handler never returns (it pops the last value off the stack) Обработчик прерывания никогда не возвращается (он выталкивает последнее значение из стека)
    _try			; 46T+
    	push de		; 57T+
    
    	ld bc,32677	; 67T+
    	call DELAY	; 32744T+
    	ld bc,(FRAMET)	; 32764T+
    
    	call DELAY	; 69884T+
    	nop		; 69888T+ - the idea seems to be that if we run for exactly FRAME tacts, we are perfectly aligned Идея состоит в том, что если Мы бежим точно за тактами FRAME, Мы идеально выровнены
    	pop de
    	rst 0		; really crazy way to handle timing errors (e.g. it crashes on Scorpion due to unaccounted M1 delays)  Действительно сумасшедший способ обработки временных ошибок (Например, он терпит крушение на Scorpion из-за неучтенных задержек M1)
    
    _align			; 55T
    	inc de
    	halt
    	rst 0
    Последний раз редактировалось апро; 31.03.2017 в 01:00.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Программы для Феникса умеющие работать с kempston Mouse
    от VETER в разделе Программирование
    Ответов: 5
    Последнее: 11.01.2015, 21:47
  2. Ответов: 55
    Последнее: 25.08.2013, 23:24
  3. W29EE011-не желает работать
    от Ranson в разделе Память
    Ответов: 5
    Последнее: 07.12.2010, 22:41
  4. Композитик отказывается работать
    от REMR в разделе Ленинград
    Ответов: 8
    Последнее: 13.01.2010, 20:54
  5. Как работать с CF?
    от Максагор в разделе Внешние накопители
    Ответов: 3
    Последнее: 05.03.2007, 12:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •