?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;Декомпрессор для v 3.01
  2. ;HL-откуда DE-куда
  3. ;DLPCB  DEFM "v301"
  4. DELPZ   PUSH DE
  5.         LD DE,DLPCB
  6.         LD BC,4
  7.         LDIR
  8.         POP DE
  9. xpD0    LD A,(HL)
  10.         SRL A
  11.         JR NC,xpD1
  12.         CALL xpSUB ;short copy
  13.         RRA
  14.         RL B
  15.         AND 7
  16. xpM2    JR NZ,xpNex
  17.         LD A,(HL)
  18.         INC HL
  19. xpNex   LD C,(HL)
  20.         INC HL
  21.         PUSH HL
  22.         LD H,D
  23.         LD L,E
  24.         SBC HL,BC
  25.         LD B,0
  26.         LD C,A
  27. xpM1    INC BC
  28.         INC BC
  29.         LDIR
  30.         POP HL
  31.         EX AF,AF
  32.         JR Z,xpD0
  33.         JR NZ,xpDRR
  34. xpD1    RRA
  35.         JR C,xpZ1
  36.         RRA
  37.         JR C,xpZ2
  38.         JR Z,xpDEND
  39.         INC HL
  40. xpDRR   LD B,A      ;nocompr
  41. xpDL0   LD A,(HL)
  42.         INC HL
  43.         XOR (HL)
  44.         LD (DE),A
  45.         INC DE
  46.         DJNZ xpDL0
  47.         JR xpD0
  48. xpZ2    SRL A       ;repeat
  49.         JR C,xpZ2L
  50.         LD C,A
  51.         XOR A
  52.         EX AF,AF
  53. xpZ22   INC HL
  54.         PUSH HL
  55.         LD H,D
  56.         LD L,E
  57.         DEC HL
  58.         JR xpM1
  59. xpZ2L   CALL xpSUB
  60.         RRA
  61.         RL B
  62.         LD C,(HL)
  63.         JR xpZ22
  64. xpZ1    SRL A
  65.         JR NC,xpTWO
  66.         LD C,A ;long copy
  67.         INC HL
  68.         LD A,(HL)
  69.         AND #1F
  70.         LD B,A
  71.         LD A,C
  72.         CALL xpSUB
  73.         OR A
  74.         JR xpM2
  75. xpTWO   INC A  ;два байта
  76.         LD C,A
  77.         INC HL
  78.         PUSH HL
  79.         LD H,D
  80.         LD L,E
  81.         SBC HL,BC
  82.         LD C,2
  83.         LDIR
  84.         POP HL
  85.         JR xpD0
  86. xpDEND  LD HL,DLPCB
  87.         LD C,4
  88.         LDIR
  89.         RET
  90. xpSUB   EX AF,AF
  91.         LD A,(HL)
  92.         RLCA
  93.         RLCA
  94.         RLCA
  95.         AND 7
  96.         EX AF,AF
  97.         INC HL
  98.         RET