Радио-86РК на SRAM 128K Alpha (2014) & Beta (2024)

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:
Shaos wrote:P.P.P.S. Не - не будет E4 как чёрная дырка выглядеть - она будет выглядеть как Д с подчёркиванием (если верить эмулятору Emu80) т.к. там сигнал гашения VSP не выдаётся (а E5 будет выглядеть как Е с подчёркиванием да ещё из-за H=1 оно будет раскрашивать предыдущий символ в красный цвет по Толкалину либо в жёлтый по Акименко)
Именно потому я и элементом ИЛИ сигналы VSP и LA0 объединил, чтобы подавить знакогенератор и коды E4/E5 не отображались: Получается "пробел".
Причём получается "чёрный" пробел, а я хочу чтобы он "подкрашенный" был ;)
Чтобы "залипшие" фоновые подсветки заканчивались не перед этим знакоместом, а в конце этого знакоместа...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:
Alikberov wrote:
Shaos wrote:P.P.P.S. Не - не будет E4 как чёрная дырка выглядеть - она будет выглядеть как Д с подчёркиванием (если верить эмулятору Emu80) т.к. там сигнал гашения VSP не выдаётся (а E5 будет выглядеть как Е с подчёркиванием да ещё из-за H=1 оно будет раскрашивать предыдущий символ в красный цвет по Толкалину либо в жёлтый по Акименко)
Именно потому я и элементом ИЛИ сигналы VSP и LA0 объединил, чтобы подавить знакогенератор и коды E4/E5 не отображались: Получается "пробел".
Причём получается "чёрный" пробел, а я хочу чтобы он "подкрашенный" был ;)
Чтобы "залипшие" фоновые подсветки заканчивались не перед этим знакоместом, а в конце этого знакоместа...
Кажется, в Апогее так и сделано: Там нет проблем с окраской предыдущих знакомест, так как атрибуты защёлкиваются в регистре синхронно.
Потому и "подкрашенный пробел" получить легко, если той схемой Апогея воспользоваться.
(Эмулятор Emu80 слегка лукавит, как сам автор признался: Окрашивает предыдущее знакоместо целиком, а в "железе" - всего пиксель попадает. А мерцание - тоже отключает предыдущий символ, что на своём КР-03 я не наблюдал.)
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

А это чего такое на скриншоте происходит? Что за символы слева и справа от таблицы?
Alikberov wrote:Кажется, в Апогее так и сделано: Там нет проблем с окраской предыдущих знакомест, так как атрибуты защёлкиваются в регистре синхронно.
Потому и "подкрашенный пробел" получить легко, если той схемой Апогея воспользоваться.
(Эмулятор Emu80 слегка лукавит, как сам автор признался: Окрашивает предыдущее знакоместо целиком, а в "железе" - всего пиксель попадает. А мерцание - тоже отключает предыдущий символ, что на своём КР-03 я не наблюдал.)
Не - в железе (если без регистра) не один пиксел попадает, а один пиксел НЕ окрашивается (т.е. предыдущий символ окрашивается в новый атрибут не целиком, а на 5/6=83%) - вот скришот с Пальмиры (где нет регистра), что сделал Pyk и опубликовал на зхпк:
rkcolor.jpg
Вот крупнее:
rkcolor-x3.jpg
т.е. это и есть "левый пиксель обычно не затрагивается"
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:А это чего такое на скриншоте происходит? Что за символы слева и справа от таблицы?
Слева и справа - коды E4 и E5 соответственно (проверял, не "плывёт" ли экран).

А так как в моём КР-03 в панельке знакогенератора (да и в схеме из руководства по эксплуатации) обнаружил РФ5 вместо РФ1. Аккуратно перезал ножку A10 и перемычкой подал её на ВГ75, чтобы проверить, что там по 0400-07FF...
Shaos wrote:Не - в железе (если без регистра) не один пиксел попадает, а один пиксел НЕ окрашивается (т.е. предыдущий символ окрашивается в новый атрибут не целиком, а на 5/6=83%) - вот скришот с Пальмиры (где нет регистра), что сделал Pyk и опубликовал на зхпк
Любопытно! Мне об этом не говорили. :roll:
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:
Shaos wrote:А это чего такое на скриншоте происходит? Что за символы слева и справа от таблицы?
Слева и справа - коды E4 и E5 соответственно (проверял, не "плывёт" ли экран).
Понятно - значит эмуль правильно показывает :)
Alikberov wrote:А так как в моём КР-03 в панельке знакогенератора (да и в схеме из руководства по эксплуатации) обнаружил РФ5 вместо РФ1. Аккуратно перезал ножку A10 и перемычкой подал её на ВГ75, чтобы проверить, что там по 0400-07FF...
О - так ты можешь туда чего-то записать :)

А куда у него A10 подключен? На землю?

У меня КР-03 кстати тоже есть, но он фиговенько работает: http://www.nedopc.org/forum/viewtopic.php?f=93&t=17793
Alikberov wrote:
Shaos wrote:Не - в железе (если без регистра) не один пиксел попадает, а один пиксел НЕ окрашивается (т.е. предыдущий символ окрашивается в новый атрибут не целиком, а на 5/6=83%) - вот скришот с Пальмиры (где нет регистра), что сделал Pyk и опубликовал на зхпк
Любопытно! Мне об этом не говорили. :roll:
Ну вроде это как раз то, что он тебе сказал на том скриншоте :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:О - так ты можешь туда чего-то записать :)
Не могу: Программатора нет.
К тому же - там "зебра" из 00/FF (видно по снимку экрана)...
Видимо, кто прошивал, никак не обнулил ОЗУ и мусор прошился в ПЗУ (все 2 Кб, а не 1 Кб): Придётся всю ПЗУ стирать!
Shaos wrote:А куда у него A10 подключен? На землю?
По-моему, на VSP сидел - нужно в схему заглянуть...
(Вывод 19 спаян был с выводом 20: Перерезал и пересадил на 36 ВГ75.)
Shaos wrote:Ну вроде это как раз то, что он тебе сказал на том скриншоте :)
До Пальмиры руки не доходят даже в эмуляторе: Всё свободное время отдаю под разработку ПО на РК.

Но, на сколько я помню (ещё на КР-03 не проверил), атрибуты мерцания на соседнее знакоместо не распространяются, как в Emu80 (скриншоты ниже).
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:
Shaos wrote:О - так ты можешь туда чего-то записать :)
Не могу: Программатора нет.
К тому же - там "зебра" из 00/FF (видно по снимку экрана)...
Видимо, кто прошивал, никак не обнулил ОЗУ и мусор прошился в ПЗУ (все 2 Кб, а не 1 Кб): Придётся всю ПЗУ стирать!
Shaos wrote:А куда у него A10 подключен? На землю?
По-моему, на VSP сидел - нужно в схему заглянуть...
(Вывод 19 спаян был с выводом 20: Перерезал и пересадил на 36 ВГ75.)
Понятно - 20 это /OE:
Screenshot from 2024-01-24 09-14-28.png
Можно попробовать достать совпадающий по ногам EEPROM, который можно при +5 запрограммировать ну или в любом случае программатор нужен - взять китайский Tl866ii например
Alikberov wrote:
Shaos wrote:Ну вроде это как раз то, что он тебе сказал на том скриншоте :)
До Пальмиры руки не доходят даже в эмуляторе: Всё свободное время отдаю под разработку ПО на РК.
По цветам она работает как Толкалин без регистра - так что можно использовать как "эталон" :)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:Но, на сколько я помню (ещё на КР-03 не проверил), атрибуты мерцания на соседнее знакоместо не распространяются, как в Emu80 (скриншоты ниже).
А там RVV заведён? Без него мерцания не будет
А если заведён (через XOR), то будет не только мерцание, но и инверсия :)
Надо достать Апогеи и поглядеть - у меня есть оба - и чёрно-белый (с инверсией и мерцанием без регистра), и цветной (с регистром) - эмуль так показывает разницу между ними:
apogey1.png
apogey2.png
(и тут видно, что на цветном есть режим чёрным-по-чёрному)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:Можно попробовать достать совпадающий по ногам EEPROM, который можно при +5 запрограммировать ну или в любом случае программатор нужен - взять китайский Tl866ii например
Пока обошёлся покупкой К537РУ8 - они по выводам практически полностью попадают. Нужно лишь с цепью "автономного питания" разобраться...
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

У китайского программатора могут быть проблемы с советскими микрухами - лучше взять буржуйские
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Подумал тут, а что если добавить акцентов нашим локальным цветам? ;)

Например завести 3-битный регистр, куда игровая программа может записать битики акцентирующие нулевые цветовые составляющие полутонами, если они есть в соответствующих позициях цветов переднего плана (не фоновых) - аппаратно это должно быть суперпросто реализовать. Теперь мы можем получить 8 разных наборов цветов под каждую палитру (акцент 000 означает неизменнённые цвета):
Screenshot from 2024-01-24 20-09-48.png
(палитра 1 получилась победнее, чем палитра 0, но тем не менее - хотя наверное можно попробовать не добавлять акценты в палитре 1, а вычитать)

P.S. Это всё с оглядкой на подключение к TFT по новой схеме от alexcp, разве что биты интенсивности I будут разные для разных цветов т.е. потенциально это 3^3=27 разных цветов (т.к. интенсивного чёрного у нас нету) из которых мы берём 3 плюс белый для переднего плана и только полутона для заднего).

P.P.S. А не поменять ли задние цвета между палитрами? Тогда появится возможность делать текстовый редактор аля нортон жёлтым по синему :mrgreen:
Хотя это не для текста - это для тайлов, которые для игр...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:P.P.S. А не поменять ли задние цвета между палитрами? Тогда появится возможность делать текстовый редактор аля нортон жёлтым по синему :mrgreen:
Хотя это не для текста - это для тайлов, которые для игр...
Как раз для это и нужны три набора фонта:
  1. Включаемый по HRTC "родной" для полной совместивости с РК-программами
  2. Включаемый по E4 ASCII для CP/M приложений и редакторов
  3. Включаемый по E5 КОИ-8R для CP/M приложений и редакторов с псевдографикой
Причём, ИМХО, желательно фонты по E4/E5 ещё переключать через ВВ55, чтобы в том же "Принце Персии" заменять КОИ-8 на тайлы для построения уровня и отображения героя. :wink:
(Чем меньше "тумблеров" для управления "хозяйством" (цветность, фонты и т.п.), тем лучше (сейчас не XIX век): можно на РК аналог BIOS сделать с выбором настроек.)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Ну тумблеры это для настройки окружения для старых программ, которые не знают на чём они запущены :)
Причём никто не мешает уже запустив программу начать щёлкать тумблерами, чтобы подобрать правильные цвета ;)
Потом можно тумблеры превратить в кнопки, управляющие установкой-сбросом триггеров, которые можно также программно устанавливать-сбрасывать - новые программы могут все эти ручные настройки сбросить во что нужно при старте - либо сделать возможным программно сброситься в основной режим работы нового компа (скажем сделать основным режим Апогея с регистром и серым 8Dh, что немного не по апогеевски, но очень уж не хочется терять восьмую комбинацию).

По поводу трёх шрифтов - три шрифта всё таки много. Хотелось бы, чтобы с начала кадра оно не всегда с одного и того же набора стартовала, а с того, который программно выбран и далее переключать между двумя шрифтами через E4/E5, чтобы если подряд идут несколько E4, то шрифт бы оставался основным, но факт наличия E4 использовался бы для других целей - в моём случае для сброса цвета фона. По-моему так всё очень красиво ложится в логичное и непротиворечивое русло с архитектурной точки зрения. А для дальнейшей совместимости с РК-программами (и монитором) всегда можно просто перезагрузить машину - соблюдать совместимость в каждом кадре совсем ненужно :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Shaos wrote:Подумал тут, а что если добавить акцентов нашим локальным цветам? ;)

Например завести 3-битный регистр, куда игровая программа может записать битики акцентирующие нулевые цветовые составляющие полутонами, если они есть в соответствующих позициях цветов переднего плана (не фоновых) - аппаратно это должно быть суперпросто реализовать. Теперь мы можем получить 8 разных наборов цветов под каждую палитру (акцент 000 означает неизменнённые цвета):
...
(палитра 1 получилась победнее, чем палитра 0, но тем не менее - хотя наверное можно попробовать не добавлять акценты в палитре 1, а вычитать)
Сделал вычитание акцентов в случае палитры 1 - теперь повеселее :)
accents.png
Кроме того в палитре 1 пометил звёздочкой те цвета, которые также присутствуют в палитре 0.

Ещё одной интересной особенностью палитры 1 является то, что при акценте 111 цвета переднего плана совпадают с цветами фона.

Всего тут у нас получилось 23 разных цвета (номер в каждой строке это количество раз сколько данный цвет встретился во всех палитрах со всеми акцентами):

Code: Select all

     16 000000
      8 0000AA
      2 0000FF
      8 00AA00
     10 00AAAA
      4 00AAFF
      2 00FF00
      4 00FFAA
      2 00FFFF
      8 AA0000
     10 AA00AA
      4 AA00FF
     10 AAAA00
      2 AAAAFF
      4 AAFF00
      2 AAFFAA
      2 FF0000
      4 FF00AA
      2 FF00FF
      4 FFAA00
      2 FFAAAA
      2 FFFF00
     16 FFFFFF
По идее тут могло бы быть 3^3=27 цветов, однако 4 цвета выпали: AAAAAA, AAFFFF, FFAAFF и FFFFAA.

Сишная программа для генерации вышеприведённых таблиц в виде HTML - под спойлером:

 rk-color3-accents.c

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

long cols[9]={0x0000FF,0x00FF00,0xFF0000,0xFFFFFF,0x0000AA,0x00AA00,0xAA0000,0x000000};

int main()
{
 char str[8],sta[8][8];
 int i,j,k,ii,jj;
 long l,ll[25];
 FILE *f;
 f = fopen("accents.htm","wt");
 if(f==NULL) return -1;
 ll[24] = 0xFFFFFF;
 fprintf(f,"<HTML><BODY BGCOLOR=#FFFFFF>\n");
 fprintf(f,"<h1>Colors of RK-tiles with accents</h1>\n");
 for(k=0;k<2;k++)
 {
   fprintf(f,"<h2>Palette %i</h2>\n",k);
   ii = 0;
   fprintf(f,"<table border=1 cellpadding=5>\n");
   for(j=0;j<9;j++)
   {
      strcpy(str,"000");
      fprintf(f,"<tr>\n");
      for(i=0;i<10;i++)
      {
         if(i==0)
         {
           if(j==0) fprintf(f," <td> ");
           else if(j==1) fprintf(f," <td rowspan=4>Foreground");
           else if(j==5) fprintf(f," <td rowspan=4>Background");
         }
         else if(i==1)
         {
           if(j==0) fprintf(f," <td>Accent-->");
           else
           {
              fprintf(f," <td align=right>Attr %02d",ii++);
              if(ii==2) ii=10;
              if(ii==12) ii=0;
           }
         }
         else // i>=2
         {
           if(j==0)
           {
              fprintf(f," <td>%s",str);
              strcpy(sta[i-2],str);
              if(++str[2]=='2')
              {
                 str[2] = '0';
                 if(++str[1]=='2')
                 {
                    str[1] = '0';
                    str[0]++;
                 }
              }
           }
           else
           {
              jj = 25;
              l = cols[j-1];
              if(k)
              {
                if(l==0xFF0000) l=0x00FFFF;
                else if(l==0x00FF00) l=0xFF00FF;
                else if(l==0x0000FF) l=0xFFFF00;
                else if(l==0xAA0000) l=0x00AAAA;
                else if(l==0x00AA00) l=0xAA00AA;
                else if(l==0x0000AA) l=0xAAAA00;
                if(j<4) // subtract accents for palette 1
                {
                  if(sta[i-2][0]=='1'&&(l&0xFF0000)){l&=0x00FFFF;l|=0xAA0000;}
                  if(sta[i-2][1]=='1'&&(l&0x00FF00)){l&=0xFF00FF;l|=0x00AA00;}
                  if(sta[i-2][2]=='1'&&(l&0x0000FF)){l&=0xFFFF00;l|=0x0000AA;}
                }
                // compare colors with palette 0
                for(jj=0;jj<25;jj++) if(ll[jj]==l) break;
              }
              else if(j<4) // add accents for palette 0
              {
                if(sta[i-2][0]=='1'&&!(l&0xFF0000)) l|=0xAA0000;
                if(sta[i-2][1]=='1'&&!(l&0x00FF00)) l|=0x00AA00;
                if(sta[i-2][2]=='1'&&!(l&0x0000FF)) l|=0x0000AA;
                ll[((j-1)<<3)+i-2] = l; // store colors from paletter 0
              }
              if(jj<25) fprintf(f," <td bgcolor=#%6.6X align=right>*",l);
              else fprintf(f," <td bgcolor=#%6.6X> ",l);
           }
         }
         fprintf(f,"</td>\n");
      }
      fprintf(f,"</tr>\n");
   }
   fprintf(f,"</table>\n");
 }
 fprintf(f,"<p>* Color is present in palette 0 as well.</b>\n");
 fprintf(f,"</BODY></HTML>\n");
 return 0;
}

P.S. Если что, я также попробовал XOR вместо добавления акцента в палитре 0 и вычитания акцента в палитре 1 - не понравилось т.к. получилось слишком много повторений в пределах одной и той же комбинации палитры и акцента и в итоге всё уходило в серый цвет...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Можно перенести переключение фонтов/палитр с С1 клавиатурной ВВ55 в регистр, где совместить этот бит с тремя битами акцентов - и это всё совместить с битами выбора страницы памяти (до 4 битов могут выбирать 512 КБ) по адресу #F000, а клавиатурные C0 (мафон), С1 и С2 отдать под 3-битный звук :)
Я тут за главного - если что шлите мыло на me собака shaos точка net