<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://cpcwiki.de/index.php?action=history&amp;feed=atom&amp;title=Exomizer</id>
		<title>Exomizer - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://cpcwiki.de/index.php?action=history&amp;feed=atom&amp;title=Exomizer"/>
		<link rel="alternate" type="text/html" href="https://cpcwiki.de/index.php?title=Exomizer&amp;action=history"/>
		<updated>2026-04-15T21:10:32Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in Deutsches CPCWiki</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>https://cpcwiki.de/index.php?title=Exomizer&amp;diff=28&amp;oldid=prev</id>
		<title>Shining: Die Seite wurde neu angelegt: „Bei Exomizer handelt es sich um einen effizienten Packer für den auch entsprechende Entpacker auf dem CPC existieren.  ====Entpacker-Code für SDAS====  &lt;…“</title>
		<link rel="alternate" type="text/html" href="https://cpcwiki.de/index.php?title=Exomizer&amp;diff=28&amp;oldid=prev"/>
				<updated>2016-10-26T19:30:46Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Bei Exomizer handelt es sich um einen effizienten Packer für den auch entsprechende Entpacker auf dem CPC existieren.  ====Entpacker-Code für &lt;a href=&quot;/index.php?title=SDAS&quot; title=&quot;SDAS&quot;&gt;SDAS&lt;/a&gt;====  &amp;lt;…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Bei Exomizer handelt es sich um einen effizienten Packer für den auch entsprechende Entpacker auf dem CPC existieren.&lt;br /&gt;
&lt;br /&gt;
====Entpacker-Code für [[SDAS]]====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; ******************************************************&lt;br /&gt;
; **       Librería de rutinas SDCC para Amstrad CPC  **&lt;br /&gt;
; **       Raúl Simarro (Artaburu)    -   2009, 2012  **&lt;br /&gt;
; ******************************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;*************************************&lt;br /&gt;
; UNEXO&lt;br /&gt;
;*************************************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Exomizer 2 Z80 decoder&lt;br /&gt;
; by Metalbrain&lt;br /&gt;
;&lt;br /&gt;
; optimized by Antonio Villena&lt;br /&gt;
;&lt;br /&gt;
; compression algorithm by Magnus Lind&lt;br /&gt;
&lt;br /&gt;
;input: 	hl=compressed data start&lt;br /&gt;
;		de=uncompressed destination start&lt;br /&gt;
;&lt;br /&gt;
;		you may change exo_mapbasebits to point to any free buffer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.globl _cpc_UnExo&lt;br /&gt;
&lt;br /&gt;
_cpc_UnExo::&lt;br /&gt;
&lt;br /&gt;
;	POP AF&lt;br /&gt;
;	POP HL	;DESTINATION ADDRESS&lt;br /&gt;
;	POP DE	;SPRITE DATA	&lt;br /&gt;
;	PUSH AF&lt;br /&gt;
	&lt;br /&gt;
	LD IX,#2&lt;br /&gt;
	ADD IX,SP&lt;br /&gt;
	LD e,2 (IX)&lt;br /&gt;
	LD d,3 (IX)	;DESTINO&lt;br /&gt;
   	LD l,0 (IX)&lt;br /&gt;
	LD h,1 (IX)	;TEXTO ORIGEN&lt;br /&gt;
		&lt;br /&gt;
	;di&lt;br /&gt;
	;call deexo&lt;br /&gt;
	;ei&lt;br /&gt;
	;ret&lt;br /&gt;
&lt;br /&gt;
deexo:          ld      iy, #exo_mapbasebits+11&lt;br /&gt;
                ld      a, (hl)&lt;br /&gt;
                inc     hl&lt;br /&gt;
                ld      b, #52&lt;br /&gt;
                push    de&lt;br /&gt;
                cp      a&lt;br /&gt;
exo_initbits:   ld      c, #16&lt;br /&gt;
                jr      nz, exo_get4bits&lt;br /&gt;
				.db #0xdd&lt;br /&gt;
				.db #0x69&lt;br /&gt;
				&lt;br /&gt;
                ;ld      ixl, c&lt;br /&gt;
                ld      de, #1           ;DE=b2&lt;br /&gt;
exo_get4bits:   call    exo_getbit      ;get one bit&lt;br /&gt;
                rl      c&lt;br /&gt;
                jr      nc, exo_get4bits&lt;br /&gt;
                inc     c&lt;br /&gt;
                push    hl&lt;br /&gt;
                ld      hl, #1&lt;br /&gt;
                ld      41(iy), c      ;bits[i]=b1 (and opcode 41 == add hl,hl)&lt;br /&gt;
exo_setbit:     dec     c&lt;br /&gt;
                jr      nz, exo_setbit-1 ;jump to add hl,hl instruction&lt;br /&gt;
                ld      -11(iy), e&lt;br /&gt;
                ld      93(iy), d      ;base[i]=b2&lt;br /&gt;
                add     hl, de&lt;br /&gt;
                ex      de, hl&lt;br /&gt;
                inc     iy&lt;br /&gt;
                pop     hl&lt;br /&gt;
                ;dec     ixl&lt;br /&gt;
				.db #0xdd&lt;br /&gt;
				.db #0x2d&lt;br /&gt;
				&lt;br /&gt;
                djnz    exo_initbits&lt;br /&gt;
                pop     de&lt;br /&gt;
                jr      exo_mainloop&lt;br /&gt;
exo_literalrun: ld      e, c            ;DE=1&lt;br /&gt;
exo_getbits:    dec     b&lt;br /&gt;
                ret     z&lt;br /&gt;
exo_getbits1:   call    exo_getbit&lt;br /&gt;
                rl      e&lt;br /&gt;
                rl      d&lt;br /&gt;
                jr      nc, exo_getbits&lt;br /&gt;
                ld      b, d&lt;br /&gt;
                ld      c, e&lt;br /&gt;
                pop     de&lt;br /&gt;
exo_literalcopy:ldir&lt;br /&gt;
exo_mainloop:   inc     c&lt;br /&gt;
                call    exo_getbit      ;literal?&lt;br /&gt;
                jr      c, exo_literalcopy&lt;br /&gt;
                ld      c, #239&lt;br /&gt;
exo_getindex:   call    exo_getbit&lt;br /&gt;
                inc     c&lt;br /&gt;
                jr      nc,exo_getindex&lt;br /&gt;
                ret     z&lt;br /&gt;
                push    de&lt;br /&gt;
                ld      d, b&lt;br /&gt;
                jp      p, exo_literalrun&lt;br /&gt;
                ld      iy, #exo_mapbasebits-229&lt;br /&gt;
                call    exo_getpair&lt;br /&gt;
                push    de&lt;br /&gt;
                rlc     d&lt;br /&gt;
                jr      nz, exo_dontgo&lt;br /&gt;
                dec     e&lt;br /&gt;
                ld      bc, #512+32      ;2 bits, 48 offset&lt;br /&gt;
                jr      z, exo_goforit&lt;br /&gt;
                dec     e               ;2?&lt;br /&gt;
exo_dontgo:     ld      bc, #1024+16     ;4 bits, 32 offset&lt;br /&gt;
                jr      z, exo_goforit&lt;br /&gt;
                ld      de, #0&lt;br /&gt;
                ld      c, d            ;16 offset&lt;br /&gt;
exo_goforit:    call    exo_getbits1&lt;br /&gt;
                ld      iy, #exo_mapbasebits+27&lt;br /&gt;
                add     iy, de&lt;br /&gt;
                call    exo_getpair&lt;br /&gt;
                pop     bc&lt;br /&gt;
                ex      (sp), hl&lt;br /&gt;
                push    hl&lt;br /&gt;
                sbc     hl, de&lt;br /&gt;
                pop     de&lt;br /&gt;
                ldir&lt;br /&gt;
                pop     hl&lt;br /&gt;
                jr      exo_mainloop    ;Next!&lt;br /&gt;
&lt;br /&gt;
exo_getpair:    add     iy, bc&lt;br /&gt;
                ld      e, d&lt;br /&gt;
                ld      b, 41(iy)&lt;br /&gt;
                call    exo_getbits&lt;br /&gt;
                ex      de, hl&lt;br /&gt;
                ld      c, -11(iy)&lt;br /&gt;
                ld      b, 93(iy)&lt;br /&gt;
                add     hl, bc          ;Always clear C flag&lt;br /&gt;
                ex      de, hl&lt;br /&gt;
                ret&lt;br /&gt;
&lt;br /&gt;
exo_getbit:     srl     a&lt;br /&gt;
                ret     nz&lt;br /&gt;
                ld      a, (hl)&lt;br /&gt;
                inc     hl&lt;br /&gt;
                rra&lt;br /&gt;
                ret&lt;br /&gt;
                                 &lt;br /&gt;
exo_mapbasebits:.ds    156             ;tables for bits, baseL, baseH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====C-Code für [[SDCC]] zum Aufruf des Entpackers====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void cpc_UnExo(const char *quelle, unsigned int ziel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
quelle: Zeigt auf die gepackten Daten&lt;br /&gt;
ziel: Wohin soll entpackt werden&lt;br /&gt;
&lt;br /&gt;
[[Category:C]] [[Category:Programmierung]] [[Category:Packer]] [[Category:CrossDev]] [[Category:SDCC]]&lt;/div&gt;</summary>
		<author><name>Shining</name></author>	</entry>

	</feed>