This commit is contained in:
Tolik 2024-10-25 00:46:14 +10:00
parent 61f85bce5e
commit 44c9cac993
15 changed files with 0 additions and 118 deletions

View File

@ -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ª¡ :).

View File

@ -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

View File

@ -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
;