nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 27 Apr 2024 05:54



Reply to topic  [ 147 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10
Расширяя горизонты возможностей ВГ75 
Author Message
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
Alikberov wrote:
Shaos wrote:
Надо знакогенератор делать в ОЗУ :ebiggrin:
Ну, как в КР-04 или Пальмире. Так давно сделано.
Суть в другом: Имеем аппаратную табуляцию, что позволит обеспечить и горизонтальный скроллинг, и память буфера экономить. :ewink:

Ну горизонтальный скроллинг и так можно делать, перепрограммируя ВТ57 :roll:
Забыл уточнить: Горизонтальный скроллинг отдельных строк. :idea:

Кстати, раз уж на то пошло:
  • 80-BF - «10URGGBH» стандартные атрибуты ВГ75
  • C0-DF - «110PPPPP» выбор палитры
  • E0-E3 - «111000??» резерв?
  • E4-E5 - «1110010F» переключение параграфа знакогенератора
  • E6-E7 - «1110011?» резерв?
  • E8-EF - «11101???» резерв?
  • F0-F3 - «111100SS» управление циклами ПДП
  • F4-FF - «1111TTTT» управление табуляцией
Если чуточку поднапрячься, можно счётчик пикселей (D3 ИЕ4 в схеме РК) принудительно сбрасывать кодами (например, E0-E3) и обеспечить очень точный попиксельный скролл по горизонтали (что в тех же играх придало бы максимум плавности) всей отдельной строки.

Естественно, если табуляцию можно указывать несколько раз в строке, то выбор палитры или попиксельный скроллинг - только один раз. :roll:


25 Feb 2024 04:11
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Сейчас перерабатываю исходный код Монитора и подошёл к подпрограмме F82D по адресам FACE…FAFC. Основная цель - унифицировать подпрограмму так, чтобы приложению не нужно было самостоятельно обращаться к ВТ57 и ВГ75.
(Строго говоря, авторы РК вообще не предусмотрели никакого API для работы с периферией, из-за чего большинство программ напрямую всё программируют сами, нарушая совместимость и переносимость.)

Так, вот исходный код Монитора:
Code:
     .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
FACE -- -- -- -- -- -- -- -- -- -- -- -- -- -- E5 21
FAD0 01 C0 36 00 2B 36 4D 36 1D 36 99 36 93 23 36 27
FAE0 7E 7E E6 20 CA E1 FA 21 08 E0 36 80 2E 04 36 D0
FAF0 36 76 23 36 23 36 49 2E 08 36 A4 E1 C9
А вот мой вариант:
Code:
     .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
FACE -- -- -- -- -- -- -- -- -- -- -- -- -- -- E5 21
FAD0 XX XX 22 20 76 E1 E5 D5 2A 20 76 7E 23 57 5F 23
FAE0 7E 12 23 7E B7 FA DC FA 1A 1A A6 CA E9 FA D1 E1
FAF0 C9 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
.... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
XXXX E8 80 E4 D0 E4 76 E5 23 E5 49 C1 00 C0 4D C0 1D
XXXX C0 99 C0 93 C1 27 20 E8 A4
Где XXXX - некий адрес свободной области в ПЗУ под таблицу описания исходного режима ВТ57/ВГ75 РК.
При этом:
  • Ячейки 7620/7621 хранят адрес таблицы стандартного режима или пользовательского
  • «CALL FACE» - восстанавливают исходный режим
  • «CALL FAD6» - устанавливают пользовательский режим

Конечно, в исходном Мониторе это реализовать несколько проблематично и не имеет смысла, однако в рамках моего Монитора реализовать несколько легче, так как там имеется набор подпрограмм и для доступа к ROM-Диску.

Для остальных пользователей - подгружаемый вариант для изучения алгоритма работы.


Attachments:
File comment: Подгружаемый вариант программы "Гибкого режима видео"
FLEX-VIDEO.RKR.zip [231 Bytes]
Downloaded 20 times
07 Mar 2024 07:01
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Я тут подумал…

Раз есть i8080A и i8255A, почему бы не, хотя бы, гипотетически, разработать i8275A?

  1. Полная совместимость по всем выводам¹
  2. Полная совместимость на программном уровне
  3. Снятие ограничений на максимальную длину знакоряда в 80 знакомест - до 128
  4. Снятие ограничений на количество атрибутов в знакоряде - до 128
  5. Возможность управления режимами через ПДП-поток
  6. Внутренний буфер²
¹ - в расширенных режимах есть нюансы.
² - цикл ПДП можно включать разово программно лишь после изменения содержимого буфера. Иначе говоря, при отключении ПДП экран не пустеет, а отображает всё из внутреннего кэша (скажем, на тех же РУ6).

Так, если ВГ75 по команде Сброса 00 принимает четыре байта режима (в РК - это «4D 1D 99 93»), то можно добавить ещё байтик управления шириной/высотой «бордюра», что сильно не хватало всегда! :roll:
Обычная ВГ75 вернёт в слове статуса C001 флаг «Improper Command» бит 3 маска 08h.

С другой стороны, запрет на приём из ПДП-потока двойного кода «Стоп ПДП»…
Например: «F3 00 F3 00» - подготовка к установке нового режима…
То есть, «F3 00 F3 00 4D 1D 99 93 VH XX YY» передаст в регистры режима стандартные параметры и ещё дополнительные, где «VH» - высота и ширина «бордюра», а «XX» и «YY» - позиция курсора.
Тем самым, задав в ПДП буфер экрана 76D0…7FFF, концовка может быть следующей:
Code:
      .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
7FF4: -- -- -- -- F3 00 F3 00 4D 1D 99 93 27 VH XX YY
И программе не нужно лезть в порты, чтобы изменить позицию курсора.
Просто настраиваем ПДП на какой-либо буфер, а сам режим - задаём в самой памяти.
(Естественно, ещё нужен котрольный байт, чтобы подтвердить валидность режима в ОЗУ.)

P.S.: Есть ещё некоторые соображения предопределения режима для каждой строки отдельно, типа как в тех же Atari.
Но тогда несколько сложнее всё получится.


20 Mar 2024 12:00
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Наконец-то дошли руки до написания кода тестирования тройного знакогенератора. :roll:


Attachments:
File comment: Вариант с тремя знакогенераторами (Штатный - Апогей/Текст - Апогей/Графика)
photo_2024-03-21_10-55-28.jpg
photo_2024-03-21_10-55-28.jpg [ 88.78 KiB | Viewed 843 times ]
File comment: Вариант с тремя знакогенераторами (Штатный - Латиница - Кириллица)
photo_2024-03-21_10-55-15.jpg
photo_2024-03-21_10-55-15.jpg [ 89.02 KiB | Viewed 843 times ]
File comment: Тестирование переключателя знакогенераторов
TEST-E4E5.RKR.zip [244 Bytes]
Downloaded 12 times
21 Mar 2024 09:09
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Попытался написать предельно быстрый алгоритм горизонитальной прокрутки области 64x25.
Примерно, 821 такт на прокрутку пятидесяти символов - около 26272 тактов на экран.


Attachments:
File comment: Исходный текст
SUPERPAN.ASM.zip [491 Bytes]
Downloaded 9 times
File comment: Запускаемый пример
SUPERPAN.RKR.zip [297 Bytes]
Downloaded 10 times


Last edited by Alikberov on 01 Apr 2024 10:57, edited 2 times in total.

30 Mar 2024 13:29
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Написал процедуру прокрутки экрана с предельной производительностью.


Attachments:
File comment: Исходный текст
SUPERSCROLLAR.ASM.zip [534 Bytes]
Downloaded 11 times
File comment: Исполняемый файл
SUPERSCROLLAR.RKR.zip [320 Bytes]
Downloaded 12 times
31 Mar 2024 04:41
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Программный скролл? Через ВГ75+ВТ57 аппаратно же можно скроллить

_________________
:dj: https://mastodon.social/@Shaos


31 Mar 2024 05:54
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
Программный скролл? Через ВГ75+ВТ57 аппаратно же можно скроллить
Ну, так это да.
На программном уровне просто было любопытно посмотреть, на сколько сложно прокручивать экран без трюков с ВТ57/ВГ75 - только стек.
Получается, порядка 13 тактов на знакоместо + 10 тактов на строку: 13x64+10=842 такта на строку - 21050 тактов на 25 строк.
То есть, за секунду - 84 fps прокрутки. :roll:


31 Mar 2024 06:19
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Это быстро получается :)

_________________
:dj: https://mastodon.social/@Shaos


31 Mar 2024 12:16
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Alikberov wrote:
Написал процедуру прокрутки экрана с предельной производительностью.

Ты SUPERPAN забыл сюда прицепить :lol:
(я его чегой-то не заметил)
Чем он от SUPERSCROLLAR отличается?

_________________
:dj: https://mastodon.social/@Shaos


02 Apr 2024 09:22
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 319
Location: Tashkent
Reply with quote
Shaos wrote:
Ты SUPERPAN забыл сюда прицепить :lol:
http://www.nedopc.org/forum/viewtopic.php?f=93&t=10577&view=unread#p173116
Shaos wrote:
Чем он от SUPERSCROLLAR отличается?
Только направлением прокрутки. :mrgreen:

Можно, конечно, реверс вверх/вниз реализовать - уже нашёл способ (мысленно), но не писал ещё - нет практической необходимости.
А вот реверс влево/вправо - нельзя в один код описать. И вправо скорость несколько меньше - +1 такт на каждую пару знакомест: +40 тактов на строку.

Например, вот код, который читает данные из ROM-Диска по схеме Апогея 512 Кб и более - до 8 Мб.
Можно бегущую строку / мультик так прошить.


Attachments:
File comment: Бесконечный панорамный фильм (до 8 Мб)
PANOFILM.RKR.zip [352 Bytes]
Downloaded 9 times
03 Apr 2024 03:46
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Это хорошая идея :mrgreen:

_________________
:dj: https://mastodon.social/@Shaos


03 Apr 2024 08:50
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 147 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10

Who is online

Users browsing this forum: No registered users and 72 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.