;Z80 depacker for megalz V4 packed files   (C) fyrex^mhm; DESCRIPTION:;; Depacker is fully relocatable, not self-modifying,;it's length is 110 bytes starting from DEC40.;Register usage: AF,AF',BC,DE,HL. Must be CALL'ed, return is done by RET.;Provide extr
a stack location for store 2 bytes (1 word). Depacker does not;disable or enable interrupts, as well as could be interrupted at any time;(no f*cking wicked stack usage :).; USAGE:;; - put depacker anywhere you want,; - put starting address of packed block
 in HL,; - put location where you want data to be depacked in DE,;   (much like LDIR command, but without BC); - make CALL to depacker (DEC40).; - enjoy! ;); PRECAUTIONS:;; Be very careful if packed and depacked blocks coincide somewhere in memory.;Here a
re some advices:;; 1. put packed block to the highest addresses possible.;     Best if last byte of packed block has address #FFFF.;; 2. Leave some gap between ends of packed and depacked block.;     For example, last byte of depacked block at #FF00,;    
 last byte of packed block at #FFFF.;; 3. Place nonpackable data to the end of block.;; 4. Always check whether depacking occurs OK and neither corrupts depacked data;     nor hangs computer.;DEC40        LD      A,#80        EX      AF,AF'MS      LDIM0  
    LD      BC,#2FFM1      EX      AF,AF'M1X     ADD     A,A        JR      NZ,M2        LD      A,(HL)        INC     HL        RLAM2      RL      C        JR      NC,M1X        EX      AF,AF'        DJNZ    X2        LD      A,2        SRA     C        
JR      C,N1        INC     A        INC     C        JR      Z,N2        LD      BC,#33F        JR      M1X2      DJNZ    X3        SRL     C        JR      C,MS        INC     B        JR      M1X6        ADD     A,CN2        LD      BC,#4FF        JR  
    M1N1        INC     C        JR      NZ,M4        EX      AF,AF'        INC     BN5      RR      C        RET     C        RL      B        ADD     A,A        JR      NZ,N6        LD      A,(HL)        INC     HL        RLAN6      JR      NC,N5       
 EX      AF,AF'        ADD     A,B        LD      B,6        JR      M1X3        DJNZ    X4        LD      A,1        JR      M3X4      DJNZ    X5        INC     C        JR      NZ,M4        LD      BC,#51F        JR      M1X5        DJNZ    X6        LD
      B,CM4      LD      C,(HL)        INC     HLM3      DEC     B        PUSH    HL        LD      L,C        LD      H,B        ADD     HL,DE        LD      C,A        LD      B,0        LDIR        POP     HL        JR      M0END_DEC40