mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 00:51:36 +03:00
...
This commit is contained in:
parent
61f85bce5e
commit
44c9cac993
@ -1 +0,0 @@
|
|||||||
Ž¯â¨¬ «ìë© LZH
From : hrumer@gorny.ru
>>ˆ£®àì <20> ¢«®¢ ¢¥¤ñ⠯஥ªâ 7-zip, ®â ¥£® ¢ ª®ä¥à¥æ¨¨ ï
>>ã§ « ¯à® «£®à¨â¬ optimal lzh - ª®£¤ ¢ë¡¨à ¥âáï
>>¤¥©áâ¢¨â¥«ì® ®¯â¨¬ «ìë© á¯®á®¡ ¯®¤¡®à áâப ¯à¨ 㦥
>>áãé¥áâ¢ãî饬 ¤¥à¥¢¥ ª®¤®¢ ¤«¨ ¨ à ááâ®ï¨©.
DB>•€—“íâ®â «£®à¨â¬.
„¥à¦¨!
<0A>â®â «£®à¨â¬ ॠ«ì® 㦥 ª ¦¤®¬ã ¯ ª¥àã ᯥªâà㬥. Ÿ ¤®«-
¦¥ ¡ë« ¥£® ॠ«¨§®¢ âì ¤«ï ¢á¥å åà㬮¢,åàãá⮢ ¨ « §¥àª®¬¯ ªâ®¢
âà¨-ç¥âëॠ£®¤ § ¤. €©ï©ï© ¢ ®¡é¥¬. „«ï " ¬¥à⢮" § è¨âëå
ª®¤®¢, ª ª í⮠ᤥ« ® ¢ ¡®«ìè¨á⢥ ¯ ª¥à®¢ ᯥª¥, íâ®â
«£®à¨â¬ ¯à¨¥áñâ ®ª®«®, ¡®îáì ᪠§ âì,2-20%.<08> ¯ ª¥à å ⨯
RIP¤® ¯à¨¬¥à®1-10%.<08>â® ¢áª¨¤ªã. Š®¥ç®, ¯ ¬ï⨠¬®£® ¤®
¯ ª®¢ªã, â®à¬®§¨âì ¡ã¤¥â á¥àìñ§®, ® ¥áâì à §«¨çë¥ ¢ ਠâë
- ªã᪨ ª ª®© ¤«¨ë à §¡¨âì ä ©« ¨ ¯à®ç¥¥.„ å®âì PC ¬®¦®
¯ ª®¢ âì.
--------åàã¬--------
ˆ£®àì <20> ¢«®¢ ¯¨á « ¢ RU.COMPRESS ¢ 1999 £®¤ã.
€«£®à¨â¬ ®¯â¨¬ «ì®£® Lempel-Ziv-Huffman ª®¤¨à®¢ ¨ï
----------------------------------------------------
1)
<0A>®¨áª ᮢ¯ ¤¥¨© ¢ á«®¢ àî ®áãé¥á⢫ï¥âáï ¤«ï ª ¦¤®£® ᬥ饨ï.
<0A>ਠ¯®¨áª¥ ¤®¯®«¨â¥«ì® ᮡ¨à ¥¬ ¨ä®à¬ æ¨î ®¡ ®¯â¨¬ «ìëå (¯®
à ááâ®ï¨î) ᮢ¯ ¤¥¨ïå á ¤«¨ ¬¨ ®â2¤® ¤«¨ë ¬ ªá¨¬ «ì®£®
ᮢ¯ ¤¥¨ï.
Offsets[] = Get_Longest_And_Other_Good_Matches();
// Offsets.Size = length of longest match.
// Offsets[i] = back offset in dictionary for match with len=i.
BYTE Get_Current_Literal();
// returns current byte
2)
‚ᥣ¤ ¬®¦¥¬ ¯®áç¨â âì, ᪮«ìª® ¯à¥¤¯®«®¦¨â¥«ì® ¡¨â § ©¬ñâ
«î¡®© ¢ ਠâ (match/literal) ®á®¢¥ ¨ä®à¬ 樨 ® ¯à¥¤ë¤ãé¨å
huffman ¡«®ª å:
int Get_Match_Huffman_Price(int Length, int Offset);
// Length = length of match
// Offset = offset of match;
// Result = number of bits for coding this match;
int Get_Literal_Huffman_Price(BYTE Literal);
// Result = number of bits for coding this Literal;
3)
Câந¬ ®¯â¨¬ «ìãî ¯®á«¥¤®¢ ⥫ì®áâì ª®¤®¢ ¬®£® 室®¢
¢¯¥àñ¤.
…áâì ¡®«ì让 ¬ áᨢ a[]:
a[i] =
{
int Price;// –¥ ¯ã⨠¢ ¡¨â å,çâ®¡ë ¤®¡à âìáï ¤® i-£® ¡ ©â .
struct
{
int Prev;// <20>®§¨æ¨ï,®âªã¤ ¬ë ¯àë£ ¥¬ ¢ ⥪ãéãî(=i) ¯®§¨æ¨î
// ¤«ï Literal: Prev = i - 1
// ¤«ï Match' á ¤«¨®© Length: Prev = i - Length
int Offset;// ‘¬¥é. ¢ ¡ãä¥à¥(á«®¢ à¥) § ¤ ¢ á«ãç ¥ Œatch'
// ¤«ï § ¯¨á¨ Œatch' ®â Prev ¤® i
}
}
a)
„«ï ¢á¥å í«¥¬¥â®¢ a[] ãáâ ¢«¨¢ ¥¬ Price = ¡¥áª®¥ç®áâì.
b)
for(int i=0; i < Big_Value; i++)
{
// ‘ãé¥áâ¢ãîâ ¥ª®â®àë¥ ãá«®¢¨ï ¤®áà®ç®£® ¢ëå. ¨§ í⮣® 横«
// <20>®«ãç ¥¬ ¬ áᨢ Offsets[2..Longest_match_length] ᬥ饨© ¢
// ¡ãä¥à¥ (á«®¢ à¥) § ¤, ᬮâਠ1).
Offsets[] = Get_Longest_And_Other_Good_Matches();
for(int Len = 1; Len < Offsets[].Length; Len++)
// Len=1 means Literal
{
// Ž¯à¥¤¥«ï¥¬ æ¥ã ¢ ¡¨â å à áᬠâਢ ¥¬®£® "¯à릪 " Len
// ᨬ¢®«®¢ ¢¯¥àñ¤
if (Len == 1) // it's a literal
aPrice = Get_Literal_Huffman_Price(Get_Current_Literal());
else
aPrice = Get_Match_Huffman_Price(Len, Offsets[Len]);
// ¨ ¢ëç¨á«ï¥¬ æ¥ã ®¢®£® ª ¤¨¤ â ¢ a[i + Len].
aNewPrice = a[i].Price + aPrice;
if (aNewPrice < a[i + Len].Price )
// …᫨ ¢ë£®¤® áâ àë© ¯ãâì (áâ à ï æ¥ ¬®¦¥â ¡ëâì ¤ ¦¥
// à ¢ ¡¥áª®¥ç®áâ¨,â.¥.¢®®¡é¥ ¥éñ ¥â ¯ãâ¨) § ¬¥¨âì
// ®¢ë¬, â® ¬¥ï¥¬ a[i + Len], çâ®¡ë ® 㪠§ë¢ « i
{
a[i + Len].Price = aNewPrice;
a[i + Len].Prev = i;
a[i + Len].Offset = Offsets[Len];
}
}
}
c)
„¢¨£ ïáì ¯® a[] ®â ª®æ , ᮡ¨à ¥¬ "®¯â¨¬ «ìë¥" match/literal
¯®á«¥¤®¢ ⥫ì®á⨠¨ ª®¤¨à㥬 ¨å.
End.
--------åàã¬--------
>>‚ ®¡é¥¬, ¬®¥ ®â®è¥¨¥ ᬮâਠ¢ëè¥, ® ¢®â ¥áâì ¦¥ ¤à㣠ï
>>¨â¥à¥á ï ¢¥éì - ¯à®áâ® ¯®¤¤¥à¦ âì à ᯠª®¢ªãLZMA
>>ᯥªâà㬥. <20>à ¢¤ , ¬¥ ª ¦¥âáï, ¡ã¤¥â ¥ã¤®¡® ¨á¯®«ì§®¢ âì
>>à ᯠª®¢é¨ªLZMA¤«ï ¯à®£à ¬¬ ᯥªâà㬥.
DB><04>® ¬®¦® ¯à¨¬¥¨âì ¤«ï ¦ãà «®¢ ¨«¨ ¡®«ìè¨å á¯à ¢®ç¨ª®¢.
DB><04> ¯à¨¬¥à,Open Letters ®¤®¬ ¤¨áª¥ ;)
>>PS. <20>¥à¥ç¨â « ⢮ñ ¯¨á쬮 ¨ ¯®ï«, çâ® ¨á室¨ª¨ ⥡¥
>>¯à¨á« «¨...
DB>’ ¬ ¡¥§ ¯®««¨âàë ¥ ¢ê¥¤¥èì -1021ä ©«,3.4¬¥£ ¡ ©â
DB>¨á室¨ª®¢. Œãá®àª .
<0A>ã, ¯®««¨âà ¥ ¯à®¡«¥¬ :). ’ ¬ ¨ á ¯®««¨âன ¥ ¢ê¥¤¥èì.
’ë ¥ ¯à®¡®¢ « ¨§ãç¨âì ¯à®áâ® ¤¥ª®¤¥à, â®â, ª®â®àë© ¢ ä ©«¥
\SRC\7zip\Compress\LZMA_C\lzmadecode.c,â ¬ ¢á¥£®23ª¡ :).
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
|
|
||||||
Утилита GRFVIEW предназначена для просмотра монохромных или
|
|
||||||
цветных (мультиколорных) картинок в формате CP/M-редактора GRAF
|
|
||||||
в режиме 640x200. В самой среде CP/M данные картинки имеют рас-
|
|
||||||
ширение BLK, однако в OS TASiS оно зарезервировано за драйверами
|
|
||||||
дисковых устройств и, чтобы избежать путаницы, здесь им было
|
|
||||||
присвоено "свободное" расширение GRF - производная от названия
|
|
||||||
редактора. Поэтому, при переносе картинок из CP/M в TASiS не за-
|
|
||||||
будьте сменить расширение!
|
|
||||||
|
|
||||||
Откуда можно раздобыть GRF/BLK-файлы?
|
|
||||||
|
|
||||||
1) Нарисовать самостоятельно в графическом редакторе GRAF.
|
|
||||||
|
|
||||||
2) Сконвертировать в CP/M из исходных МОНОХРОМНЫХ(!) PCX-файлов
|
|
||||||
при помощи специальной, прилагающейся к редактору утилиты
|
|
||||||
PCXBLK.COM. Само-собой, таким способом можно получить только мо-
|
|
||||||
нохромные картинки. Но их можно вручную раскрасить все в том же
|
|
||||||
редакторе.
|
|
||||||
|
|
||||||
3) Сконвертировать в RetroX (редактор -> Import Picture -> Settings ->
|
|
||||||
ZX Clones Special -> TurboATM Multicolor Polychrome)... а поскольку сохранять
|
|
||||||
он не умеет, то сделать скриншот, обрезать картинку (ширина должна делиться
|
|
||||||
на 8, а высота на 2), сохранить в фотошопе в формате bmp 8bpp (0-й цвет
|
|
||||||
желательно принудительно задать чёрным), потом сконвертировать утилитой
|
|
||||||
RetroX to GRF.
|
|
||||||
|
|
||||||
ФОРМАТ BLK(GRF)-ФАЙЛА
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Смещение Кол-во Значение
|
|
||||||
============ ======== ============
|
|
||||||
#0000 #30(16x3) Палитра. Представляет собой 16 троек
|
|
||||||
значений GRB-цветов (именно в таком
|
|
||||||
порядке), представленных в виде сим-
|
|
||||||
волов ASCII:
|
|
||||||
|
|
||||||
"0"(#30) - цвет (G,R или B) выключен
|
|
||||||
"1"(#31) - цвет низкой интенсивности
|
|
||||||
"2"(#32) - цвет в режиме BRIGHT 0
|
|
||||||
"3"(#33) - цвет в режиме BRIGHT 1
|
|
||||||
Любое другое значение приравнивается
|
|
||||||
утилитой GRFVIEW к "3".
|
|
||||||
|
|
||||||
#0030(*) #03 Метка "GRF" - означает, что за ней
|
|
||||||
следуют два значащих байта
|
|
||||||
|
|
||||||
#0033(*) #01 Рекомендуемые атрибуты (INK & PAPER)
|
|
||||||
заднего фона, на который налагается
|
|
||||||
изображение. Актуально для картинок,
|
|
||||||
по размеру меньших 640x200.
|
|
||||||
|
|
||||||
#0034(*) #01 Рекомендуемый цвет бордюра (#00-#0F)
|
|
||||||
Может быть актуально при использова-
|
|
||||||
нии нестандартной палитры.
|
|
||||||
|
|
||||||
#0035 #4B Не используется. Может быть забито
|
|
||||||
любым мусором.
|
|
||||||
|
|
||||||
#0080(**) #01 X-координата (0-79) левого верхнего
|
|
||||||
угла выводимой картинки, измеряемая
|
|
||||||
в столбцах (1 стлб= 8 пикс= 1 байт)
|
|
||||||
|
|
||||||
#0081(**) #01 Y-координата (0-199) левого верхнего
|
|
||||||
угла выводимой картинки, измеряемая
|
|
||||||
в строчках (1 стр = 1 пиксель)
|
|
||||||
|
|
||||||
#0082 #01 WIDTH - ширина картинки в столбцах
|
|
||||||
(от 1 до 80)
|
|
||||||
|
|
||||||
#0083 #01 HIGH - высота картинки в строчках
|
|
||||||
(от 1 до 200)
|
|
||||||
|
|
||||||
#0084 WIDTH*HIGH Растр монохромного изображения.
|
|
||||||
Представляет собой последователь-
|
|
||||||
ность слева направо столбцов от
|
|
||||||
1 до x (x = WIDTH), состоящих из
|
|
||||||
y байтов каждый (y = HIGH), считая
|
|
||||||
сверху вниз.
|
|
||||||
|
|
||||||
#84+WIDTH*HIGH #nnnn Растр атрибутов. Полная аналогия
|
|
||||||
растра монохромного изображения по
|
|
||||||
структуре, с той лишь разницей, что
|
|
||||||
он прилагается в упакованном по ме-
|
|
||||||
тоду RLE виде. То есть, представляет
|
|
||||||
из себя последовательность двухбайт-
|
|
||||||
ных слов, первый байт в каждом из
|
|
||||||
которых означает количество (1-255)
|
|
||||||
последовательно идущих одинаковых
|
|
||||||
байтов атрибутов, а второй байт -
|
|
||||||
собственно, само значение атрибута.
|
|
||||||
|
|
||||||
----------------------------------
|
|
||||||
Примечания:
|
|
||||||
|
|
||||||
*) НОВОВВЕДЕНИЕ специально для утилиты GRFVIEW. В оригинале -
|
|
||||||
неиспользуемый участок. Может быть забит любым мусором.
|
|
||||||
|
|
||||||
**) Необязательные параметры X и Y картинки, особенно для утили-
|
|
||||||
ты GRFVIEW, где изображение автоматически центрируется, в соот-
|
|
||||||
ветствии со своими габаритами.
|
|
||||||
|
|
||||||
****************************************************************
|
|
||||||
2006, февраль. Тимонин Максим/NedoPC group
|
|
||||||
****************************************************************
|
|
||||||
P.S. Стартовый адрес COM-файла в TASiS - 24000DEC
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
Sprinter ZX
|
|
||||||
c:\zx\roms\SP_128.BIN
|
|
||||||
c:\zx\roms\SP__48.BIN
|
|
||||||
c:\zx\roms\SP_TRD.BIN
|
|
||||||
c:\zx\roms\SP_EXP.BIN
|
|
||||||
c:\zx\roms\SP_EXP.BIN
|
|
||||||
c:\zx\roms\SP_EXP2.BIN
|
|
||||||
/turbo /7FFD /ret-fn
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user