Вектор-06Ц/Сжатие данных
Собрание распаковщиков различных форматов.
ZX0 / ZX1 / ZX2
https://github.com/ivagorRetrocomp/DeZX
Быстрый упаковщик для ZX0: https://github.com/emmanuel-marty/salvador
ZX7 mini
https://github.com/svofski/bazis-bbstro/tree/master/zx7mini
ZX7
https://zx-pk.ru/threads/9532-vektor-06ts-sredstva-razrabotki.html?p=983364&viewfull=1#post983364
; ----------------------------------------------------------------------------- ; ZX7 decoder by Einar Saukas, Antonio Villena & Metalbrain ; ----------------------------------------------------------------------------- ; Parameters: ; HL: source address (compressed data) ; DE: destination address (decompressing) ; ----------------------------------------------------------------------------- ; 8080 version - Ivan Gorodetsky, 2018 ; 104 bytes - single-use ; 109 bytes - reusable dzx7_standard: ;следующие две строки не нужны при одноразовом использовании распаковщика ; mvi a,80h ; sta dzx7s_next_bit+1 dzx7s_copy_byte_loop: mov a,m stax d inx h inx d dzx7s_main_loop: call dzx7s_next_bit jnc dzx7s_copy_byte_loop ; next bit indicates either literal or sequence ; determine number of bits used for length (Elias gamma coding) push d lxi b,0 mov d,b dzx7s_len_size_loop: inr d call dzx7s_next_bit jnc dzx7s_len_size_loop ; determine length dzx7s_len_value_loop: cnc dzx7s_next_bit mov a,c\ ral\ mov c,a mov a,b\ ral\ mov b,a jc dzx7s_exit dcr d jnz dzx7s_len_value_loop inx b ; determine offset mov a,m\ stc\ ral\ mov e,a inx h jnc dzx7s_offset_end mvi d,10h dzx7s_rld_next_bit: call dzx7s_next_bit mov a,d\ ral\ mov d,a jnc dzx7s_rld_next_bit mvi a,1\ add d\ rar\ mov d,a dzx7s_offset_end: mov a,e\ rar\ mov e,a ; copy previous sequence xthl xchg mov a,e\ sbb l\ mov l,a mov a,d\ sbb h\ mov h,a push psw ldir: mov a,m stax d inx h inx d dcx b mov a,b ora c jnz ldir pop psw dzx7s_exit: pop h jnc dzx7s_main_loop dzx7s_next_bit: mvi a,80h add a sta dzx7s_next_bit+1 rnz mov a,m inx h ral sta dzx7s_next_bit+1 ret .end
UCL NRV2d
https://github.com/usr38259/nrv2d-i80