User Tag List

Показано с 1 по 10 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Не выдержала душа поэта... с утреца всё перелопатил.

    Первоначальный вариант теста давал не совсем корректный результат, т.к. во время тестирования быстродействия алгоритма вывода было ещё много накладных вычислений перед выводом каждого спрайта. в основном это вычисление адреса спрайта, который нужно вывести на экран, т.к. фактически сразу выводились показания счётчика.
    Переписал само тестирование. Сейчас кроме вывода спрайта в цикле минимум, вот пример:

    Скрытый текст

    Код:
    Jerri_c:
    	lxi	d,a_test_spr	; адрес спрайта на экране
    	lxi	b,tab_spr0	; адрес спрайта
    	push	h		 ; сохранить счетчик
    ;
    	call	drop24		; вывод спрайта
    ;
    	pop	h	 восстановить счетчик
    	inx	h	; увеличение счетчика выводов спрайта на экран
    ;
    	lda	StopFlag	 ; читаем флаг остановки
    	ora	a	; проверка флага
    	jnz	Jerri_c
    [свернуть]


    И результат немного поменялся:
    Оригинальный вариант алгоритма Jerri - 1380h
    Вариант Jerri, с заранее вычисленными адресами битпланов, и полностью развёрнутый (без циклов) - 1603h

    Мой оригинальный алгоритм - 151Eh
    Мой с заранее вычисленными адресами битпланов - 15B2h

    Алгоритм metamorpho, совсем не использующий стек - 0С0Сh
    Алгоритм metamorpho, совсем не использующий стек и с обычным прерыванием в которои нет защиты стека - 0С0Eh

    Во вложении сам тест и его исходник.
    Пытаяс понять как работает твоя реализация прерываний нашел один избыточный кусочек кода как мне кажется:

    Код:
    StInt:
    	xthl		; обмен hl <-> ((sp))
    	shld	im_ret+1	; сохраним адрес возврата из прерывания
    	pop	h
    	shld	im_hl+1		; сохраним значение HL при выхове прерывания
    	push	psw
    	lxi	h,2	;\ вычисляем указатель стека
    	dad	sp	;/
    	shld	im_sp+1	; сохраним указатель стека
    	pop	psw
    	push	b	;восстановим данные испорченные стеком
    	
    	lxi	sp,im_stek	; временный указатель стека для прерываний
    	push	PSW
    	push	b
    	push	d
    кажется что тут избыточно порталкивание PSW в стек и обратно. Как мне кажется его можно убрать, и заодним убрать смешение SP на 2 в команде DAD

    Код:
    StInt:
    	xthl		; обмен hl <-> ((sp))
    	shld	im_ret+1	; сохраним адрес возврата из прерывания
    	pop	h
    	shld	im_hl+1		; сохраним значение HL при выхове прерывания
    	lxi	h,0	;\ вычисляем указатель стека
    	dad	sp	;/
    	shld	im_sp+1	; сохраним указатель стека
    	pop	psw
    	push	b	;восстановим данные испорченные стеком
    	
    	lxi	sp,im_stek	; временный указатель стека для прерываний
    	push	b
    	push	d
    Поправь меня пожалуйста если ошибаюсь

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

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Они содержатся не в моём коде.
    Судя по переписке
    https://zx-pk.ru/threads/31954-pishu...=1#post1075237
    Я сам не знал что это такое, чтобы заменить чем-то соответствующим для Вектора.
    Мнемоника команд кода в котором они были, очень похожа на мнемонику для Z80.

    Поисковик дал такую ссылки:
    https://zx-pk.ru/threads/447-sjasmpl...l=1#post903843
    https://zx-pk.ru/threads/447-sjasmpl...l=1#post904360
    http://zxpress.ru/article.php?id=14690
    Действительно ошибся. Спасибо за ссылки.

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

  3. #2

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Пытаяс понять как работает твоя реализация прерываний нашел один избыточный кусочек кода как мне кажется:

    Скрытый текст


    Код:
    StInt:
    	xthl		; обмен hl <-> ((sp))
    	shld	im_ret+1	; сохраним адрес возврата из прерывания
    	pop	h
    	shld	im_hl+1		; сохраним значение HL при выхове прерывания
    	push	psw
    	lxi	h,2	;\ вычисляем указатель стека
    	dad	sp	;/
    	shld	im_sp+1	; сохраним указатель стека
    	pop	psw
    	push	b	;восстановим данные испорченные стеком
    	
    	lxi	sp,im_stek	; временный указатель стека для прерываний
    	push	PSW
    	push	b
    	push	d
    [свернуть]

    кажется что тут избыточно порталкивание PSW в стек и обратно. Как мне кажется его можно убрать, и заодним убрать смешение SP на 2 в команде DAD
    ...
    Поправь меня пожалуйста если ошибаюсь
    ...
    По бумажкам, которые у меня есть, команда "DAD rp" влияет на флаг "CY".
    Возможно его пытался защитить от изменения на время выполнения операции "DAD SP".

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

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

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

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

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