User Tag List

Показано с 1 по 10 из 562

Тема: DSDOS для ПРК "Орион-128"

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,234
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    989
    Поблагодарили
    641 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    Arrow

    barsik, изначально так и было задумано (идентификатор в старших битах), но при программировании алгоритма выяснилось, что проще и быстрее "разматывать" именно такой "бутерброд", который сделан в финальной версии.
    Помимо старшего бита D7, также нужно анализировать и предыдущий - D6, после чего оба этих бита нужно отбрасывать (обнулять) дабы получить значение счётчика. В варианте кодирования идентификатора в младших битах мы убиваем трёх зайцев: анализ каждого бита одной командой ЦПУ (ротация битов через флаг <C>) + параллельно их обнуление и после анализа биты счётчика автоматом оказываются на нужных позициях.

    Пример участка кода распаковки:

    Код:
    XRA A ; <C>=0
    MOV B,A ; [B]=0
    
    LOOP:
    CALL GetBYTE
    ;<C>=0
    RAR
    JC UnpackSame
    
    ; серия разных
    ;<C>=0
    RAR
    JNC UnpackDiff1
    ; серия разных 64..16384
    MOV B,A
    CALL GetBYTE
    
    UnpackDiff1:
    MOV C,A
    
    UnpackDiff2:
    CALL GetBYTE
    MOV M,A
    ; адрес следующего байта на экране
    CALL NextScreenADDR
    RZ; конец алгоритма
    
    UnpackDiff3:
    DCX B
    MOV A,B
    ORA C
    JNZ UnpackDiff2
    JMP LOOP
    
    UnpackSame:
    ; серия одинаковых
    CMC; <C>=0
    RAR
    JNC UnpackSame1
    ; серия одинаковых 64..16384
    MOV B,A
    CALL GetBYTE
    
    UnpackSame1:
    MOV C,A
    CALL GetBYTE
    STA UnpackSame2+1
    
    UnpackSame2:
    MVI M,0
    ; адрес следующего байта на экране
    CALL NextScreenADDR
    RZ; конец алгоритма
    
    UnpackSame3:
    DCX B
    MOV A,B
    ORA C
    JNZ UnpackSame2
    JMP LOOP
    Последний раз редактировалось Denn; 16.02.2018 в 12:27. Причина: добавлен пример алгоритма распаковки
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. продам платы "Орион-128"
    от AHTuXPuCT в разделе Барахолка (архив)
    Ответов: 70
    Последнее: 19.06.2012, 20:39
  3. Платы ром-диска "Орион-128"
    от AL.EX в разделе Барахолка (архив)
    Ответов: 45
    Последнее: 10.06.2012, 12:54
  4. Куплю плату "Орион-ПРО"
    от АлександрПП в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 15.05.2011, 20:48
  5. Ответов: 0
    Последнее: 15.08.2010, 14:38

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •