nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 29 Apr 2024 00:03



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

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
Shaos wrote:
В пределах одной строки? Ну обычный текст где всё в кучу так без обработки не покажешь - надо либо специально текст готовить для такого вывода, расставляя E4/E5, либо на лету обрабатывать на предмет где надо контекст переключить будут вставляться пробелы с переключениями шрифтов типа на входе "Радио-86RK", а отобразится "Радио-86 RK" и т.д. Вобщем полезность сомнительная по-моему...
На практике, практически нигде не встречается дикое сочетание кириллицы и латиницы в одном слове.
А вот "Радио-86RK" можно отобразить и как "Радио 86RK" тоже.
Да, текст нужно будет предварительно обработать и где надо - вставить E4 (ASCII) или E5 (KOI-8).
Текст при этом станет красивее.
(В эмуляторе я этот трюк тоже проверил, но скриншот не сохранился.)

Для полноценного отображения документального текста эти "псевдо-атрибуты" - просто находка в каком-то смысле.
(В играх можно смешивать и тайлы: выбор из 256 тайлов - тоже хорошая перспектива)


21 Jan 2024 02:04
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Я подумаю на этот счёт

И всё же - откуда взялась эта схема как будто бы из журнала Радио, а на самом деле нет?

Кто автор?

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


21 Jan 2024 02:13
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
Shaos wrote:
Я подумаю на этот счёт

И всё же - откуда взялась эта схема как будто бы из журнала Радио, а на самом деле нет?

Кто автор?
"Автор" - MS-Paint, но только после многочасовых рукоплесканий мышкой. :D
(Конечно, без многодневных споров с Barsik'ом дело не обошлось и схема необходима была как иллюстрация самой идеи.)

P.S.: На своём КР-03 проверить пока руки не доходят...


21 Jan 2024 02:29
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Понятно :ewink:

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


21 Jan 2024 02:50
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Shaos wrote:
На zx-pk.ru мне пояснили, что тут цвет фона ещё заводится, который сохраняется в триггерах и задаётся он с помощью битов LA0, LA1 и LTEN, которые изначально были предназначены для отображения псевдографики - вот что про это написано в книжке "Домашний компьютер":

Image

и как можно видеть управлять этими битами из программы не так уж и просто, например есть псевдографика, где LA0 принимает значение 1 во всю высь знакоместа, но вот для LA1 или LTEN такого нет (LTEN вообще подсвечивается либо как курсор внизу знакоместа, либо как часть псевдографики в середине знакоместа) - значит придётся не по одному, а иногда и по 2 псевдографических символа подряд выводить, чтобы сбросить триггер во всех строках знакоместа. Оно работает примерно так:
- LA1=0 LA0=1 и HLG=1 сбрасывает все три триггера в 0;
- LA1=1 LA0=0 устанавливает триггер R фона в 1;
- LA1=1 LA0=1 устанавливает триггер G фона в 1 (одновременно в 1 они могут быть только в средней линии символа псевдографики);
- LA1=0 LA0=1 и LTEN устанавливает триггер B фона в 1 (вот это по моим понятиям работать НЕ будет - см. выше почему).

Решил я обратиться к первоисточнику (благо у меня имеется интеловский толмуд с описанием всего-всего-всего тех времён) - и таки да, в нашем переводе есть ошибки - не указана 1 для VSP в третьем случае кода 0011 и не указана 1 для LTEN во втором случае кода 1010 плюс тут озвучены все остальные коды (хоть они и бесполезные) :)

Attachment:
8275-pseudogr.jpg
8275-pseudogr.jpg [ 164.88 KiB | Viewed 743 times ]

Тут горизонтальная линия через всё знакоместа называется "Underline", т.е. подчёркивание - выходит это курсор? Получается уровень курсора надо будет поднять до середины, чтобы оно таки заработало? Это же жутко неудобно...

А вот суть схемы вроде бы передана верно (но некоторые гейты другие - типа вместо NOR у наших стоит NAND и NOT после инверсии LA0 и LA1, что то же самое и NAND-ы вместо OR-ов на формирователе строчки псевдографики из кусочков):

Attachment:
8275-pseudogr-hardware.jpg
8275-pseudogr-hardware.jpg [ 79.01 KiB | Viewed 743 times ]

Вообще наверное можно попроще это сделать - например знакогенератор можно отрезать запретив ему /OE и псевдографику также через буфер можно подавать...

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


21 Jan 2024 03:06
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Shaos wrote:
Я подумаю на этот счёт

Можно сделать так - у меня будет всё также 2 шрифта программно подменяемых в 2-килобайтном ОЗУ знаков/тайлов и активный шрифт всё также будет устанавливаться битом C1 с клавиатурной ВВ55, однако LA0 можно будет задействовать для переключения с основного шрифта на альтернативный и обратно в пределах экрана (по кадровому синхроимпульсу можно сбрасывать этот выбор возвращаясь в изначально выбранный) - команда #F5 может включать альтернативный шрифт, а #F4 - основной (например если изначально был установлен шрифт 0, то после #F5 установится шрифт 1, а после #F4 - опять 0, но если был установлен шрифт 1, то после #F5 установится шрифт 0, а после #F4 - снова 1). Кроме того LA0 может ещё и сбрасывать залипание "полутоновых" фонов (при использовании основного шрифта многократное применение #F4 не будет менять шрифт, но может быть использовано для чего-то ещё - в данном случае для сброса выбранного цвета фона) - так мы убъём всех зайцев одним выстрелом :lol:

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


21 Jan 2024 04:04
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
Shaos wrote:
Shaos wrote:
Я подумаю на этот счёт

Можно сделать так - у меня будет всё также 2 шрифта программно подменяемых в 2-килобайтном ОЗУ и активный шрифт всё также будет устанавливаться битом C1 с клавиатурной ВВ55, однако LA0 можно будет задействовать для переключения с основного шрифта на альтернативный и обратно в пределах экрана (по кадровому синхроимпульсу можно сбрасывать этот выбор возвращаясь в изначально выбранный) - команда #F5 может включать альтернативный шрифт, а #F4 - основной (например если изначально был установлен шрифт 0, то после #F5 установится шрифт 1, а после #F4 - опять 0, но если был установлен шрифт 1, то после #F5 установится шрифт 0, а после #F4 - снова 1). Кроме того LA0 может ещё и сбрасывать залипание "полутоновых" фонов (при использовании основного шрифта многократное применение #F4 не будет менять шрифт, но может быть использовано для чего-то ещё - в данном случае для сброса выбранного цвета фона) - так мы убъём всех зайцев одним выстрелом :lol:
Из "личных концептуальных размышлений" на тему, как бы я на макетке развёл бы схему РК...
  1. Удаляется D14 совсем, вместо которой ставится панелька под РФ4 (или под РУ8/РУ10)
  2. Микросхема D20 переносится на плату клавиатуры вместе с D21, что уменьшит число проводов к плате клавиатуры до 16. Правда, придётся добавить буфер, чтобы ВМ80 до ВВ55 мог "достучаться". Соответственного, разъём магнитофона перемещается на клавиатуру
  3. Микросхемы ПЗУ (Монитора и Знакогенератора) заменяются на РФ4
  4. К ВГ75 добавляется ТМ2 для поддержки трёх знакогенераторов
  5. Атрибуты цвета и инверсии - опционально
  6. Добавляется "аппаратная поддержка табуляции"
Собственно, пункт с "аппаратной поддержкой табуляции" тоже не менее любопытен, но схематических эскизов пока не имеет.
Из справочника, так как коды F4-FF ВГ75 не рекомендуется использовать, есть мысль при чтении ПДП вместо них в ВГ75 отправлять 00 (или 1F - тоже "пробел") логической комбинаторикой, но при этом загружать младший ниббл в счётчик для частичного подавления циклов ПДП.
То есть, например, если ВТ57 читает из памяти код F6, комбинаторика передаёт в ВГ75 код 00 (или 1F) и загружает в ИЕ7 код 6. Теперь, при каждом запросе от ВГ75 к ВТ57 логика у ИЕ7 подавляет запрос ПДП, а на ВГ75 искусственно выдаёт 00 (или 1F) до тех пор, пока ИЕ7 декрементом не обнулится. Что позволит кодом F6 пропустить 6 символов.
Иначе говоря, вместо восьми пробелов в начале каждой строки буфера экрана ставим один код F8 и получаем 8 пробельных символов (противоположность коду F1).


21 Jan 2024 04:52
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
В следующей моей РК-шке клава будет прям на материнке :)

А так-то надо свой SRAM128K дособирать и там навесиком прицепить тайлы без полутонов (пока из ПЗУ)

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


21 Jan 2024 05:07
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Shaos wrote:
P.P.S. Вот ещё чего у себя откопал - непомню откуда взял:

Image

P.P.P.S. По названию файла через яндекс нашёл первоисточник - это Rokl опубликовал (автор РК-шки на 8085) в 2011 году:
https://zx-pk.ru/threads/13148-radio-rk-86-kompyuter-s-protsessorom-1821vm85.html?p=375381&viewfull=1#post375381

P.P.P.P.S. На zx-pk.ru мне пояснили, что тут цвет фона ещё заводится, который сохраняется в триггерах и задаётся он с помощью битов LA0, LA1 и LTEN, которые изначально были предназначены для отображения псевдографики - вот что про это написано в книжке "Домашний компьютер":

Image

и как можно видеть управлять этими битами из программы не так уж и просто, например есть псевдографика, где LA0 принимает значение 1 во всю высь знакоместа, но вот для LA1 или LTEN такого нет (LTEN вообще подсвечивается либо как курсор внизу знакоместа, либо как часть псевдографики в середине знакоместа) - значит придётся не по одному, а иногда и по 2 псевдографических символа подряд выводить, чтобы сбросить триггер во всех строках знакоместа. Оно работает примерно так:
- LA1=0 LA0=1 и HLG=1 сбрасывает все три триггера в 0;
- LA1=1 LA0=0 устанавливает триггер R фона в 1;
- LA1=1 LA0=1 устанавливает триггер G фона в 1 (одновременно в 1 они могут быть только в средней линии символа псевдографики);
- LA1=0 LA0=1 и LTEN=1 устанавливает триггер B фона в 1 (вот это по моим понятиям работать НЕ будет - см. выше почему).

P.P.P.P.P.S. Хотя возможно тут суть в том, что LA1 и LTEN могут выдавать 1 на уровне курсора (не одновременно), что будет включать раскрашивание вниз! Получается это не часть строки раскрашивает, а блок экрана во всю ширь с какой-то строки вниз пока не отключат - однако всё равно LA0=1 и LTEN=1 одновременно случиться не могут - значит для установки триггера B надо взять не LA0 из ВГ75, а скажем задержанное в регистре значение из предыдущего символа...

Если пробовать раскрашивать фоны с помощью LA0, LA1 и LTEN, то скорее всего придётся защёлкивать LA0 на триггере, чтобы использовать предыдущее значение в логике (назовём его LA0*):
LA0*=0 LA0=0 LA1=0 - нормальная работа системы (классический РК86, где LTEN принимает значение 1 в момент вывода курсора);
LA0*=0 LA0=1 LA1=0 - у меня будет переключать шрифт (в зависимости от состояния HGL) и останавливать "залипание" полутоновых фонов, а также гасит все триггеры фоновых цветов (по идее их можно совместить с полутоновыми);
LA0*=0 LA0=0 LA1=1 - включает красный триггер в последней строке знакоместа;
LA0*=0 LA0=1 LA1=1 - включает зелёный триггер в последней строке знакоместа;
LA0*=1 LA0=0 LA1=0 LTEN=0 - нормальная работа системы после кода, сбросившего все триггеры;
LA0*=1 LA0=0 LA1=0 LTEN=1 - включает синий триггер в последней строке знакоместа (в предыдущем знакоместе LA0=1 сбросил все триггеры поэтому синюю составляющую надо применять первой);
LA0*=1 LA0=1 LA1=0 - ??? (в предыдущем знакоместе LA0=1 сбросил все триггеры);
LA0*=1 LA0=0 LA1=1 - ??? (в предыдущем знакоместе LA0=1 сбросил все триггеры);
LA0*=1 LA0=1 LA1=1 - ??? (в предыдущем знакоместе LA0=1 сбросил все триггеры);
Последние 3 варианта можно под какие-то специальные способы раскраски фона отдать - типа шахматкой, в полосочку и т.д.

И по кадровому синхроимпульсу эти триггеры фонов уже сбрасываются (чтобы заливка не перебиралась на начало следующего кадра).

P.S. Либо можно отказаться от LTEN вовсе т.к. он также используется для подсветки курсора (подведя курсор к таким кодам можно сломать расцветку, по ошибке включив синюю заливку) - под включение синего триггера можно отдать LA0*=1 LA0=1 LA1=1, а две оставшиеся комбинации можно использовать для заливки шахматкой или скажем прореженной шахматкой...

P.P.S. Кстати LTEN ещё можно атрибутом подчёркивания включить! т.е. так наверное будет работать :)

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


21 Jan 2024 18:53
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
Shaos wrote:
Если пробовать раскрашивать фоны с помощью LA0, LA1 и LTEN, то скорее всего придётся защёлкивать LA0 на триггере, чтобы использовать предыдущее значение в логике (назовём его LA0*):
LA0*=0 LA0=0 LA1=0 - нормальная работа системы (классический РК86, где LTEN принимает значение 1 в момент вывода курсора);
LA0*=0 LA0=1 LA1=0 - у меня будет переключать шрифт (в зависимости от состояния HGL) и останавливать "залипание" полутоновых фонов, а также гасит все триггеры фоновых цветов (по идее их можно совместить с полутоновыми);
А каким образом будет переключаться шрифт в Вашей схеме?
И сколько символов в наборе будет доступно?


23 Jan 2024 06:42
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Я вот так планирую:
Shaos wrote:
Shaos wrote:
Я подумаю на этот счёт

Можно сделать так - у меня будет всё также 2 шрифта программно подменяемых в 2-килобайтном ОЗУ знаков/тайлов и активный шрифт всё также будет устанавливаться битом C1 с клавиатурной ВВ55, однако LA0 можно будет задействовать для переключения с основного шрифта на альтернативный и обратно в пределах экрана (по кадровому синхроимпульсу можно сбрасывать этот выбор возвращаясь в изначально выбранный) - команда #F5 может включать альтернативный шрифт, а #F4 - основной (например если изначально был установлен шрифт 0, то после #F5 установится шрифт 1, а после #F4 - опять 0, но если был установлен шрифт 1, то после #F5 установится шрифт 0, а после #F4 - снова 1). Кроме того LA0 может ещё и сбрасывать залипание "полутоновых" фонов (при использовании основного шрифта многократное применение #F4 не будет менять шрифт, но может быть использовано для чего-то ещё - в данном случае для сброса выбранного цвета фона) - так мы убъём всех зайцев одним выстрелом :lol:
Вот только триггеры наверное придётся делать разные - отдельно будут триггеры на глобальный фон и отдельно - триггеры на локальный...

P.S. Хотя о чём это я? Я же собираюсь останавливать и глобальные, и локальные фоны одной и той же командой с LA0=1 - значит триггеры одни и те же и для одного, и для другого.

P.P.S. Кстати - знакоместо с LA0=1 будет выглядеть как чёрная дырка - наверное надо приделать логику, чтобы в течение этой дырки локальный фон бы продолжался как ни в чём не бывало и обрывался бы в конце этого знакоместа - тогда будет плавненько.

P.P.P.S. Не - не будет E4 как чёрная дырка выглядеть - она будет выглядеть как Д с подчёркиванием (если верить эмулятору Emu80) т.к. там сигнал гашения VSP не выдаётся (а E5 будет выглядеть как Е с подчёркиванием да ещё из-за H=1 оно будет раскрашивать предыдущий символ в красный цвет по Толкалину либо в жёлтый по Акименко) - так что придётся своё гашение по LA0 городить аппаратно (самое простое это по ИЛИ объединить VSP и LA0 и пустить далее в схему как VSP) и выход HGLT придётся обнулять при ненулевом LA0, чтобы подкрашивания небыло...

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


23 Jan 2024 10:23
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Я вот сегодня ещё раз внимательно подумал и представил как будет прописываться шрифт в знакогенератор - 2К ОЗУ отключится от ВГ75 и сдвигового регистра и подключится к шине ВМ80 (либо битом в байте управления, либо по факту записи в адресное пространство E800...EFFF) - в результате экран будет показывать черноту (на самом деле думаю будет виден курсор и вообще любые знакоместа, где атрибут U равен 1 - по идее этого должно быть достаточно, чтобы показывать прогресс бар). А вот если поставить второе 2К ОЗУ, то их можно чередовать, чтобы картинка на экране не пропадала - как раз через C1 клавиатурной ВВ55, а вот уже внутри выбранного ОЗУ можно по E4/E5 переключать половинки! Правда корпусов мелкой логики это займёт неприлично много...

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


23 Jan 2024 19:54
Profile WWW
Novelist

Joined: 15 Sep 2014 22:32
Posts: 29
Location: Пермь
Reply with quote
а может косвенно записывать? на шину данных озу регистр с Z-выходом, а адрес записи задавать аппаратным курсором ВГ75, за кадр - одну ячейку можно записать, 2048/50= 40 сек, долговато получается.


23 Jan 2024 22:40
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22621
Location: Silicon Valley
Reply with quote
Думаю начну с одной микросхемы ОЗУ 2КБ и буду писать туда прям как есть - байт за байтом. От ВГ75 отрезать и подключать к шине данных буду по сигналу /WR OR /CS_E800 - всё равно запись данных на окончании строба /WR происходит. Процесс заливки на экране буду отображать подчёркиваниями, которые мимо регистра сдвига выводятся, хотя надо прикинуть - временно отрубать видео или пока не залью весь шрифт? Заливка одного байта командой MOV M,A занимает 7 тактов из которых сама запись займёт от силы 2 - это полторы плашки знакоместа? И потом обрамление цикла с INX и передачей управления с проверкой на конец цикла - ещё порядка 20 знакомест? Наверное нестрашно - по экрану просто будет бегать чёрный снег, занимающий 10% площади экрана или меньше :)

Шрифт будет поджатый алгоритмом SHAFF0 - надо прикинуть размер (напомню, что у нас половина 8-килобайтного ПЗУ пустая, но всё равно непожатый шрифт туда класть как-то расточительно).

P.S. Склеил оригинальный шрифт РК и первую половинку шрифта Dinobyte как и планировал и прошёлся по ним своим SHAFF-ом:

Code:
$ shaff fonts.bin

SHAFF v1.2 (C) 2013,2017 A.A.Shabarshin <me@shaos.net>

Opening input file 'fonts.bin'
Original file size: 2048 bytes (SNA=N)
Opening output file 'fonts.binFF'
Chosen method: SHAFF0
Minimal length to detect: 4 bytes
Prefix byte for references: 0xFF
Total number of blocks to encode: 1
Size of the last block: 2048

Block 1:
Current offset 12
Reading 2048 bytes...
Autocorrelation...
Greedy algorithm...
14 13 12 11 11 11 11 11 11 11 11 11 11 10 10 9 9 9 9 9 9 9 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Number of matches: 218
Writing data to the file...
Number of references = 212
Number of literals = 859
Compression: 81% (2048 -> 1662)

Literal balance: 0 vs 859
Rarest literals: F4 E9 DA
You may get 101 bytes less (6%) if set rarest byte as a prefix (option -xF4)

Compressed file size: 1674 bytes (81%)
Working time: 0m07s
Good bye!

и пересжал с одним из самых редких байтов в качестве ключевого:

Code:
$ shaff -xE9 fonts.bin

SHAFF v1.2 (C) 2013,2017 A.A.Shabarshin <me@shaos.net>

Opening input file 'fonts.bin'
Original file size: 2048 bytes (SNA=N)
Opening output file 'fonts.binFF'
Chosen method: SHAFF0
Minimal length to detect: 4 bytes
Prefix byte for references: 0xE9
Total number of blocks to encode: 1
Size of the last block: 2048

Block 1:
Current offset 12
Reading 2048 bytes...
Autocorrelation...
Greedy algorithm...
14 13 12 11 11 11 11 11 11 11 11 11 11 10 10 9 9 9 9 9 9 9 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Number of matches: 218
Writing data to the file...
Number of references = 193
Number of literals = 935
Compression: 76% (2048 -> 1561)

Literal balance: 0 vs 935
Rarest literals: F4 E9 DA

Compressed file size: 1573 bytes (76%)
Working time: 0m06s
Good bye!

Получилось 1573 байта или 76% от оригинала.

SHAFF1 конечно получше сжимает, но его распаковщика для 8080 у меня ещё нету :)

Code:
$ shaff -1 fonts.bin

SHAFF v1.2 (C) 2013,2017 A.A.Shabarshin <me@shaos.net>

Opening input file 'fonts.bin'
Original file size: 2048 bytes (SNA=N)
Opening output file 'fonts.binFF'
Chosen method: SHAFF1
Minimal length to detect: 2 bytes
Total number of blocks to encode: 1
Size of the last block: 2048

Block 1:
Current offset 12
Reading 2048 bytes...
Autocorrelation...
Greedy algorithm...
14 13 12 11 11 11 11 11 11 11 11 11 11 10 10 9 9 9 9 9 9 9 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Number of matches: 427
Writing data to the file...
Number of references = 452
Number of literals = 307
Compression: 55% (2048 -> 1136)

Literal balance: 0 vs 307
Rarest literals: F4 E9 DA

Compressed file size: 1148 bytes (56%)
Working time: 0m12s
Good bye!
И для разнообразия сжал инвертированный шрифт (SHAFF1 может сжимать лучше инвертированные данные, если в оригинале было много байт со значениями >=128):
Code:
$ shaff -1 fontsi.bin

SHAFF v1.2 (C) 2013,2017 A.A.Shabarshin <me@shaos.net>

Opening input file 'fontsi.bin'
Original file size: 2048 bytes (SNA=N)
Opening output file 'fontsi.binFF'
Chosen method: SHAFF1
Minimal length to detect: 2 bytes
Total number of blocks to encode: 1
Size of the last block: 2048

Block 1:
Current offset 12
Reading 2048 bytes...
Autocorrelation...
Greedy algorithm...
14 13 12 11 11 11 11 11 11 11 11 11 11 10 10 9 9 9 9 9 9 9 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Number of matches: 427
Writing data to the file...
Number of references = 435
Number of literals = 340
Compression: 53% (2048 -> 1096)

Literal balance: 340 vs 0
Rarest literals: FF FE FD

Compressed file size: 1108 bytes (54%)
Working time: 0m12s
Good bye!

Для сравнения ещё сжал LZ4, ZX0, ZX7, MegaLZ, Hrum и Hrust:

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


P.P.S. Надо попробовать ещё раскрашенные шрифты посжимать:

Image

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


23 Jan 2024 22:52
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
Shaos wrote:
P.P.P.S. Не - не будет E4 как чёрная дырка выглядеть - она будет выглядеть как Д с подчёркиванием (если верить эмулятору Emu80) т.к. там сигнал гашения VSP не выдаётся (а E5 будет выглядеть как Е с подчёркиванием да ещё из-за H=1 оно будет раскрашивать предыдущий символ в красный цвет по Толкалину либо в жёлтый по Акименко)
Именно потому я и элементом ИЛИ сигналы VSP и LA0 объединил, чтобы подавить знакогенератор и коды E4/E5 не отображались: Получается "пробел".


24 Jan 2024 03:34
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 265 posts ]  Go to page Previous  1 ... 9, 10, 11, 12, 13, 14, 15 ... 18  Next

Who is online

Users browsing this forum: Shaos and 60 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.