PDP-11 совместимые/Сжатие данных

Материал из Emuverse
Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0.

(Права на описание — Emuverse, права на фрагменты кода — см. в шапке фрагмента.)

Собрание распаковщиков различных форматов.

ZX0

Декомпрессор формата ZX0 для PDP-11 от Sandro [1] [2]

; ZX0 decompressor by Alexander "Sandro" Tishin (sandro.tishin@gmail.com)
;
; Uses the "classic" bitstream
;
; r0 -- src
; r1 -- dst
;
; 86 bytes total
DZX0::	mov #100000, r3
	mov r1, r4
	dec r4
1$:	call 5$
	add r2, r4
6$:	movb (r0)+, (r1)+
	sob r2, 6$
	asl r3
	bcc 3$
4$:	call 5$
	negb r2
	swab r2
	bne 9$
	bisb (r0)+, r2
	sec
	ror r2
	ror r3
	mov r1, r4
	add r2, r4
	movb (r4)+, (r1)+
3$:	call 5$
7$:	movb (r4)+, (r1)+
	sob r2, 7$
	asl r3
	bcc 1$
	br 4$
5$:	mov #1, r2
	br 11$
12$:	ror r3
	bisb (r0)+, r3
	swab r3
	br 11$
13$:	asl r3
	rol r2
11$:	asl r3
	bcc 13$
	beq 12$
9$:	ret