ZXNet эхоконференция «code.zx»


тема: Hеточность в описании заголовка архива HRIP



от: Ivan Roshin
кому: All
дата: 25 Apr 2003
Hello, All! В файле HRIP_DOC.WRD из комплекта поставки HRIP 1.05 содержится следующее: === cut === Архив начиается следующим заголовком: IDARCH DB "HRi" ; индентификатор IDALL DB 0 ; количество файлов в архиве (используется в ; Hrip'е при дополнении архива, что-бы не ; было больше 255 файлов SMESH DB 0 ; см. далее (BYTE) LAST DW 0 ; см. далее (SECS) CAT DB 0 ; 1 - каталог присутствует в архиве ; 0 - каталога отсутствует Следующая формула показывает, как можно определить конец архива (в байтах от начала архива): END_ARCH=[LAST]*256-(256-[SMESH]) bytes Расположение каталога, если таков присутствует, можно определитсь по этой формуле: START_CAT=[LAST]*256 bytes То есть каталог находится на последнем секторе после архива. Как можно понять из двух перечисленных формул - между концом архива и началом каталога есть свободное место <256 байт. Вот здесь и проявляется "заточка" под Tr-Dos. Такая простая реализация сделана для того, чтобы каждый желающий мог открыть архив с каталогом (тем более, что каталог почти похож на Tr-Dos'овский). === cut === В действительности формула для вычисления END_ARCH (т.е. длины архива в байтах, без учёта каталога) должна выглядеть так: END_ARCH=[LAST]*256-(256-[SMESH]) bytes, если SMESH>0; END_ARCH=[LAST]*256 bytes, если SMESH=0. Или так: END_ARCH=[LAST-1]*256+[SMESH]) bytes, если SMESH>0; END_ARCH=[LAST]*256 bytes, если SMESH=0. Без ветвления формула может быть записана так: END_ARCH=[LAST]*256-((256-[SMESH]) mod 256) bytes. Вычисление END_ARCH на ассемблере (получаем результат в HL:A): LD HL,(LAST) LD A,(SMESH) AND A JR Z,$+3 DEC HL Вычисление END_ARCH-1 может быть короче и быстрее: LD HL,(LAST) LD A,(SMESH) DEC HL DEC A С уважением, Иван Рощин.

от: Maxim Shelepov
кому: Ivan Roshin
дата: 22 Jul 2003
Привет, Ivan ! 25 Апреля 2003 года ты писал к All: ───────═════ Hачало файла F.txt ─ Личные письма ко мне (2:5002/81.8) ───────────────────── MY_MAIL (81.LOCAL) ─ Сооб : 50 из 90 Rcv От : Kirill Trofimov 2:5002/81.14 Пн 23 Июн 03 22:39 Кому : Maxim Shelepov Пн 23 Июн 03 22:55 Тема : hrip ─────────────────────────────────────────────────────────────────────────────── Copied from area 81.LOCAL by ParToss 1.06.15/W32 alpha Пpиветствую, Maxim! 21 Июня 2003 22:56, Maxim Shelepov писал Kirill Trofimov: MS> END_ARCH=[LAST]*256-(256-[SMESH]) bytes, если SMESH>0; MS> END_ARCH=[LAST]*256 bytes, если SMESH=0. MS> END_ARCH=[LAST-1]*256+[SMESH]) bytes, если SMESH>0; MS> END_ARCH=[LAST]*256 bytes, если SMESH=0. 256 в байте = 0 :) sinn'delirium tremens'freedom -+- Violet Cancer ───────═════ Конец файла F.txt ..:: freedom://delirium_tremens/~tiden ::..




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Печатается с продолж. - Сто рассказов о Чукче (26-50).
Новинки - программа для оптимизации сканированых картинок Scan Screen Optimizer.
Ликбез - ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS 5.04 (5.03)
Мультсериал - NETROBOT защитник SpbZxNet...
Достоинства критики - вот тут-то мы и прокатили ММА.

В этот день...   8 мая