User Tag List

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

Тема: Вектор Турбо+

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

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

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    что за "механизм маски записи в ОЗУ"
    "46h - порт маски записи", 12я страница Вектор Турбо.docx. На мой субъективный взгляд околоEGAшные возможности (порты 45h и 46h) в том виде, в котором они сделаны, приносят проекту больше вреда чем пользы. Другое дело, если бы они были поддержаны большим количеством ПО, но на это вряд ли можно рассчитывать.
    Последний раз редактировалось ivagor; 21.09.2022 в 07:06. Причина: исправил опечатку

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    Improver(21.09.2022)

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

  3. #2

    Регистрация
    19.09.2022
    Адрес
    г. Саров
    Сообщений
    31
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    "46h - порт маски записи", 12я страница Вектор Турбо.docx. На мой субъективный взгляд околоEGAшные возможности (порты 45h и 46h) в том виде, в котором они сделаны, приносят проекту больше вреда чем пользы. Другое дело, если бы они были поддержаны большим количеством ПО, но на это вряд ли можно рассчитывать.
    Ну вообще-то этот механизм минимум в 3 раза ускоряет вывод символов и спрайтов не кратных по ширине байту или со сдвижкой по горизонтали не кратной байту.

  4. #3

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Napoleon1 Посмотреть сообщение
    этот механизм минимум в 3 раза ускоряет вывод символов и спрайтов не кратных по ширине байту или со сдвижкой по горизонтали не кратной байту
    Можете привести пример кода?

  5. #4

    Регистрация
    19.09.2022
    Адрес
    г. Саров
    Сообщений
    31
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Можете привести пример кода?
    Как то так.
    Код:
    ; Вывод символа на экран
    ; HL - адрес символа в знакогенераторе (символ шириной 6 пикселей в младших битах)
    ; E - младший байт адреса символа на экране (позиция строки)
    ; A - позиция символа в строке
    ; Принцип отображения для 40 символов в строке:
    ; 0 символ - сдвиг 2, символ в старших битах байта
    ; 1 символ - сдвиг 4, 2 бита в этом столбце, 4 - в следующем
    ; 2 символ - сдвиг 6, 4 бита в этом столбце, 2 - в следующем
    ; 3 символ - сдвиг 0, символ в младших битах байта
    ; Дальше всё повторяется
    
    DrawSymb:
    	di
    	push hl
    	ld b,a
    	and 3ch
    	rrca
            ld c,a
    	rrca
            add a,c
    	add a,0e0h	; Выводить будем в верхнюю плоскость
    	ld d,a	; Получаем горизонтальный полуадрес левого байта из 3 байтов, где могут быть 4 символа
    	ld a,b
    	and 3	; Выделяем биты, определяющие сдвиг символа 
    	ld bc,0300h	; Маска для 0 символа
    	ld l,2		; На сколько нужно сдвинуть влево байт символа при выводе на экран
    	jr z,DrawSymb1
    	dec a
    	ld bc,0fc0fh ; Маска для 1 символа
    	ld l,4
    	jr z,DrawSymb1
    	inc d
    	dec a
    	ld bc,0f03fh ; Маска для 2 символа
    	ld l,6
    	jr z,DrawSymb1
    	inc d	; в D получается полуадрес левого байта, где будет часть или весь символ
    	ld bc,0c000h ; Маска для 3 символа
    	ld l,0
    DrawSymb1:
    	ld a,l
    	pop hl		; Восстанавливаем указатель на символ в знакогенераторе
    	or a,0c0h	; Добавляем 3 бита системных параметров
    	out (45H),a	; Включаем циклический сдвиг
    	ld a,с
    	ex af,af'	; Сохраняем маску для второго байта
    	ld a,b
    	out (46H),a	; Включаем маску для первого байта
    	ld bc,8		; Высота символа 
    	ldir		; Выводим левую часть символа
    	ex af,af'	; Восстанавливаем маску для второго байта
    	and a
    	jr z,DrawSymb2 ; Весь символ в одном байте
    	out (46H),a	; Включаем маску для второго байта
    	dec hl
    	dec e
    	ld bc,8
    	lddr		; Выводим правую часть символа
    DrawSymb2:
    	xor a
    	out (46H),a	; 
    	ld a,0e0h
    	out (45H),a	; 
    	ei
    	ret
    Последний раз редактировалось Napoleon1; 21.09.2022 в 21:06.

    Эти 2 пользователя(ей) поблагодарили Napoleon1 за это полезное сообщение:

    Improver(21.09.2022), ivagor(21.09.2022)

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

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

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

Похожие темы

  1. АТМ Турбо 1/2/2+
    от artice в разделе ATM
    Ответов: 5
    Последнее: 17.12.2025, 20:14
  2. Ответов: 17
    Последнее: 05.10.2012, 20:11
  3. Меняю Вектор/БК11М на Вектор (или куплю)
    от dk_spb в разделе Барахолка (архив)
    Ответов: 13
    Последнее: 07.01.2012, 17:31
  4. Турбо ВГ-93
    от Иван в разделе Внешние накопители
    Ответов: 1
    Последнее: 09.11.2006, 14:59

Ваши права

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