nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 08 May 2024 00:16



Reply to topic  [ 265 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15, 16, 17, 18  Next
Радио-86РК на SRAM 128K Alpha (2014) & Beta (2024) 
Author Message
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 326
Location: Tashkent
Reply with quote
Shaos wrote:
Ну тумблеры это для настройки окружения для старых программ, которые не знают на чём они запущены :)
Причём никто не мешает уже запустив программу начать щёлкать тумблерами, чтобы подобрать правильные цвета ;)
Потом можно тумблеры превратить в кнопки, управляющие установкой-сбросом триггеров, которые можно также программно устанавливать-сбрасывать - новые программы могут все эти ручные настройки сбросить во что нужно при старте - либо сделать возможным программно сброситься в основной режим работы нового компа (скажем сделать основным режим Апогея с регистром и серым 8Dh, что немного не по апогеевски, но очень уж не хочется терять восьмую комбинацию).
Кстати, имеется ещё одно предложение..
На оригинальной клавиатуре МС-7007 красная клавиша "Стоп" и серая "Сброс" - не так, как у КР-03. Это натолкнуло на некоторые додумки...

Использовать на Сброс кнопку двойного нажатия (можно, конечно, использовать и две отдельно - вопрос концептуальной эстетики), чтобы "реальный Сброс" производился при "сильном" нажатии. Тогда как при "лёгком" срабатывало бы нечто подобное "аппаратному прерыванию" (как Magic Button в ZX-Spectrum на NMI).
Так как в схеме РК отсутствует (и не нужен) ВН59, на уровне логики можно "искусственно" выработать код FD (недокументированный CALL из серии CD/DD/ED/FD) три раза, что спровоцирует "CALL FDFD" без самого прерывания (счётчик PC следует потом подправить) с передачей управления в некую "оболочку" (полезно иметь несколько ПЗУ или одно побольше, где вместе с Монитором будет некая "оболочка" в "теневой плоскости" ПЗУ, включаемой лишь по "мягкому Сбросу", где можно разместить всё хозяйство (контроль знакогенераторов, атрибутов и т.п.) с современным приятным интерфейсом (как BIOS) без всяческих "тумблеров" и "рубильников"... :roll:
Shaos wrote:
По поводу трёх шрифтов - три шрифта всё таки много. Хотелось бы, чтобы с начала кадра оно не всегда с одного и того же набора стартовала, а с того, который программно выбран и далее переключать между двумя шрифтами через E4/E5, чтобы если подряд идут несколько E4, то шрифт бы оставался основным, но факт наличия E4 использовался бы для других целей - в моём случае для сброса цвета фона.
Лучше "больше", чем "меньше" (640 Кб хватит всем!)... :no:


25 Jan 2024 04:05
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
По идее Толкалин и Акименко - это рудименты прошлого - так сказать промежуточные этапы на пути к варианту Апогея :)
Однако у людей они есть и люди пишут под них программы, поэтому их надобно поддержать :roll:
Другой вопрос надо ли их настраивать через биос-сетап? Не думаю - т.к. например факт необходимости включить Акименко или Толкалина вместо цветов Апогея (а также что нам нужен серый-на-чёрном вместо чёрный-на-чёрном, чтобы игра выглядела как в эмуляторе) может выясниться уже лишь после запуска игры - и тут тумблеры становятся незаменимым инструментом в руках пользователя ;)

Alikberov wrote:
Лучше "больше", чем "меньше" (640 Кб хватит всем!)... :no:
"Лучше меньше, да лучше" :lol:

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


25 Jan 2024 04:23
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 326
Location: Tashkent
Reply with quote
Shaos wrote:
факт необходимости включить Акименко или Толкалина вместо цветов Апогея (а также что нам нужен серый-на-чёрном вместо чёрный-на-чёрном, чтобы игра выглядела как в эмуляторе) может выясниться уже лишь после запуска игры - и тут тумблеры становятся незаменимым инструментом в руках пользователя ;)
О чём я и говорю: Подобие Magic Button для РК, когда программа прерывается и через интерфейс "теневого ПЗУ" ставим/убираем галочки и меняем конфигурацию, после чего выполнение программ продолжается.
(И никаким рубильниками украшать схему РК не нужно! :wink: )


25 Jan 2024 04:31
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Это слишком сложно :)

К тому же magic как пишут лажала часто - приводила к порче диска, ребуту и потере прогресса в игре 8)

А тумблеры лажать не могут :)

P.S. Кстати для magic button надо NMI (немаскируемое прерывание), которое есть на Z80 или 8085, но нет на 8080 (и вообще в схеме РК через выход запрещения-разрешения прерываний звук играется)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


25 Jan 2024 04:37
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Shaos wrote:
Можно перенести переключение фонтов/палитр с С1 клавиатурной ВВ55 в регистр, где совместить этот бит с тремя битами акцентов - и это всё совместить с битами выбора страницы памяти (до 4 битов могут выбирать 512 КБ) по адресу #F000, а клавиатурные C0 (мафон), С1 и С2 отдать под 3-битный звук :)
На зхпк мне Ведущий_специалист предлагает режим цветности Толкалин-Акименко-Апогей не только вручную устанавливать, но и программно - это 2 бита и они в #F000 уже не влезут.
Соответственно надо их отдельно заводить, и логично, что переключение шрифтов/палитр и акценты надо выносить туда же - придётся добавлять новый регистр #F001?
Кстати а имело бы смысл акценты делать разными для разных палитр? Или это уже слишком заморочено получается? Хотя наверное это всё надо перенести на потом...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


26 Jan 2024 10:18
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Shaos wrote:
Shaos wrote:
Подумал тут, а что если добавить акцентов нашим локальным цветам? ;)

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

Пока решил без фоновых полутонов попробовать:

Attachment:
accents.png
accents.png [ 52.42 KiB | Viewed 878 times ]

Теперь тут только 20 цветов:
Code:
     16 000000
      2 0000FF
      2 00AAAA
      4 00AAFF
      2 00FF00
      4 00FFAA
      2 00FFFF
      2 AA00AA
      4 AA00FF
      2 AAAA00
      2 AAAAFF
      4 AAFF00
      2 AAFFAA
      2 FF0000
      4 FF00AA
      2 FF00FF
      4 FFAA00
      2 FFAAAA
      2 FFFF00
     16 FFFFFF

Новая программа под спойлером:

 rk-color3-accents.c
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BLACKBACK

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++)
   {
#ifdef BLACKBACK
      if(j==6) break;
#endif
      strcpy(str,"000");
      fprintf(f,"<tr>\n");
      for(i=0;i<10;i++)
      {
         if(i==0)
         {
           if(j==0) fprintf(f," <td>&nbsp;");
           else if(j==1) fprintf(f," <td rowspan=4>Foreground");
           else if(j==5)
#ifdef BLACKBACK
                fprintf(f," <td>Background");
#else
                fprintf(f," <td rowspan=4>Background");
#endif
         }
         else if(i==1)
         {
           if(j==0) fprintf(f," <td>Accent-->");
           else
           {
#ifdef BLACKBACK
              if(j==5) fprintf(f," <td align=right>Attr XX",ii++);
              else
#endif
              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
              }
#ifdef BLACKBACK
              if(j==5) l=0;
#endif
              if(jj<25) fprintf(f," <td bgcolor=#%6.6X align=right>*",l);
              else fprintf(f," <td bgcolor=#%6.6X>&nbsp;",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;
}

В порту F000 можно оставить только переключение страниц ОЗУ, как сейчас.
В новом порту F001 будет 3 акцента RGB и 1 бит переключения шрифтов и палитр (а в будущем будут ещё 2 бита выбора способа обычной РК-раскраски наряду с тумблером).

Команды E4 и E5 будут переключать в основной шрифт и в альтернативный соответственно (вместе с палитрой) - также надо будет сделать трюк как сделал Alikberov - складывать VSP с LA0 по OR и далее использовать это как гашение (чтобы E4 не показывался как Д с подчёркиванием, а E5 - как E с подчёркиванием).

Цветной фон можно будет сделать путём включения цвета по Апогею с инверсией - в этом случае фон окрасится в выбранный цвет (это может быть даже серый AAAAAA), а чёрный цвет символов будет перебит цветами тайла - тут у нас как бы получаются тайлы с прозрачностью - или это слишком сложно? А вообще локальные цвета из тайла будут иметь больший приоритет, чем глобальные цвета так что без инверсии РК-шные цвета раскраски будут перебиты цветами из тайла и тайл будет нарисован на чёрном фоне.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


26 Jan 2024 21:54
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Вот такая схема тайлов с 2 палитрами и 8 акцентами получается (без полутоновых заливок):

Attachment:
rk-color3a.png
rk-color3a.png [ 21.41 KiB | Viewed 861 times ]

По копусам выходит 8:
Code:
 4 x XOR  -> 1
12 x AND  -> 3
 8 x NAND -> 2
 7 x OR   -> 2

Плюс ещё надо будет корпуса 3 на согласование с обычной схемой цветности РК (которая сама по себе будучи универсальной весит 10 корпусов), чтобы сделать возможным просвечивание фона сквозь тайлы либо сделать тайлы всегда на чёрном фоне - это будет чуть полегче...


Attachments:
rk-color-new3.zip [2.08 KiB]
Downloaded 23 times

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
27 Jan 2024 00:24
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Вот вроде с полутоновыми заливками получилось:

Attachment:
rk-color4.png
rk-color4.png [ 24.56 KiB | Viewed 842 times ]

Выходит порядка 10 корпусов:
Code:
 4 x NOT  -> 1
 4 x XOR  -> 1
 4 x NAND -> 1
11 x AND  -> 3
 6 x AND3 -> 2
 7 x OR   -> 2


Attachments:
rk-color-new4.zip [2.37 KiB]
Downloaded 21 times

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
27 Jan 2024 04:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Возвращаю обратно полутоновые заливки:

Attachment:
accents.png
accents.png [ 68.12 KiB | Viewed 982 times ]

И это снова 23 цвета:
Code:
     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
(без AAAAAA, AAFFFF, FFAAFF и FFFFAA)

И вот программа, которая генерирует такой HTML файл:

 rk-color4-accents.c
Code:
#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>&nbsp;");
           else if(j==1) fprintf(f," <td rowspan=4 align=center>Foreground<br>color<br>over black");
           else if(j==5) fprintf(f," <td rowspan=4 align=center>Special case<br>(all ones)");
         }
         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>&nbsp;",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. Теперь можно рисовать вот такие цветные шрифты :)


Attachments:
color-tiles.jpg
color-tiles.jpg [ 28.08 KiB | Viewed 979 times ]

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973
27 Jan 2024 04:57
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 326
Location: Tashkent
Reply with quote
Кстати, здесь редактор знакогенератора с поддержкой "светового пера" (в эмуляторе мышкой легко рисовать символы).
(Делал специально для опытов.)

К сожалению, исходник временно утерян: Код довольно компактен.
(В эмуляторе я в режиме реального времени все цвета видел.)


27 Jan 2024 10:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
А он редактирует прямо знакогенератор дырками по 4 байта?

Надо будет приспособить под моё железо :)

И чтобы обе половинки мог редактировать ;)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


27 Jan 2024 14:10
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 326
Location: Tashkent
Reply with quote
Shaos wrote:
А он редактирует прямо знакогенератор дырками по 4 байта?

Надо будет приспособить под моё железо :)

И чтобы обе половинки мог редактировать ;)
Нет, данный вариант - публичный (для EEPROM-программаторов) и просто редактирует символы в ОЗУ.
Тот (что работал с "дырками") - промежуточный вариант сугубо для внутренних нужд (работал через MOV-префиксы те самые).

Этот код - очень компактный и интерфейс спартанский.
Хотя, можно там добавить реакцию на клавишу, чтобы из ОЗУ переносить данные в память знакогенератора. Но по причинам "компактности" я ничего не добавлял.
(Типа, на АР2 вместо выхода в Монитор повесить адрес на свой код, который и будет знакогенератор перезаписывать.)


27 Jan 2024 15:01
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
Shaos wrote:
Вот вроде с полутоновыми заливками получилось:



Выходит порядка 10 корпусов:
Code:
 4 x NOT  -> 1
 4 x XOR  -> 1
 4 x NAND -> 1
11 x AND  -> 3
 6 x AND3 -> 2
 7 x OR   -> 2
Получается так:

  • тайлы без полутонов - 3 корпуса
  • тайлы с полутноами - 7 корпусов
  • тайлы без полутонов, но с акцентами - 8 корпусов
  • тайлы с полутонами и с акцентами - 10 корпусов (?)

P.S. Надо чтоли уже закончить софтину, которая будет брать логисимовский дизайн и строить из него топологию печатной платы с мелкой логикой ТТЛ :lol:

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


27 Jan 2024 18:30
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
Shaos wrote:
Шрифт будет поджатый алгоритмом SHAFF0 - надо прикинуть размер (напомню, что у нас половина 8-килобайтного ПЗУ пустая, но всё равно непожатый шрифт туда класть как-то расточительно).


мне интересно посмотреть на код распаковщика шрифта, сжатого твоим алгоритмом, а самое главное -- сколько времени он будет распаковывать? проведи измерения.
я также сделал сжатие шрифтов и в первой своей реализации использовал честный алгоритм Хаффмана. но когда я увидел с какой скоростью он у меня распаковывает шрифты, слегка расстроился. переосмыслил алгоритм и сделал максимально упрощенный алгоритм на основе того же Хаффмана и теперь распаковка 4 килобайтного шрифта (4 шрифта по 1к) происходит почти незаметно на глаз.
некоторые данные моего способа сжатия: шрифт в 2 килобайта (два шрифта, один для латинских букв, второй для русских в обоих регистрах, первые 64 символа у них идентичные) шириной 6 пикселов сжимается в 1201 байт плюс 43 байта алфавит. тоже самое для шрифта шириной 8 пикселов -- сжатые данные 1314 байта плюс 63 байта алфавит.

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


27 Jan 2024 20:40
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22685
Location: Silicon Valley
Reply with quote
По степени сжатия я там приводил размеры:
Code:
-rw-r--r-- 1 shaos shaos 2048 Jan 23 21:48 fonts.bin
-rw-r--r-- 1 shaos shaos 1573 Jan 23 21:52 fonts.bff <<<<<<<<<<<< SHAFF0
-rw-r--r-- 1 shaos shaos 1501 Jan 23 21:48 fonts.bin.lz4
-rw-r--r-- 1 shaos shaos 1148 Jan 23 21:53 fonts.binFF <<<<<<<<<< SHAFF1
-rw-r--r-- 1 shaos shaos 1108 Jan 23 22:08 fontsi.binFF <<<<<<<<< SHAFF1 (inverted)
-rw-r--r-- 1 shaos shaos 1064 Jan 23 22:13 fonts.bin.zx7
-rw-r--r-- 1 shaos shaos 1056 Jan 23 21:56 fonts.bin.hrm
-rw-r--r-- 1 shaos shaos 1054 Jan 23 21:56 fonts.bin.mlz
-rw-r--r-- 1 shaos shaos 1021 Jan 23 21:56 fonts.bin.hst
-rw-r--r-- 1 shaos shaos 1019 Jan 23 22:13 fonts.bin.zx0
По скорости SHAFF0 должен быть относительно быстрым ибо он байт-ориентированный, а не бит-ориентированный как SHAFF1 - на Z80 я написал для SHAFF0 два депакера - простой (перемещаемый) и навороченный, который можно настраивать ключиками, чтоб он был турбо и супертурбо :)
http://www.nedopc.org/forum/viewtopic.php?p=159961#p159961
Скорости там были такие (на примере LD-библиотекаря написанного в кодах Z80 и в сравниении с LDIR, т.е. инструкцией Z80 для копирования блоков памяти):
Code:
49t/byte (2.33*LDIR) - распаковка непакуемых данных перемещаемым депакером (104 байта)
48t/byte (2.30*LDIR) - распаковка LD перемещаемым депакером (104 байта)
40t/byte (1.89*LDIR) - распаковка LD турбо депакером (241 байт)
39t/byte (1.86*LDIR) - распаковка LD полнотурбированным депакером (398 байт)
35t/byte (1.66*LDIR) - распаковка непакуемых данных турбо депакерами (241 и 398 байтов)
(а вот SHAFF1 на Z80 декодил тот же LD со скоростью 470.5 тактов на байт или 22.4*LDIR, что в 12 раз медленнее, чем SHAFF0 - см. тут)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


27 Jan 2024 22:29
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 265 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15, 16, 17, 18  Next

Who is online

Users browsing this forum: Bing [Bot] and 5 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.