From 3fa9e0fa12ff534c340e85c4ba7567435fbf834b Mon Sep 17 00:00:00 2001 From: "Peter Helcmanovsky (Ped)" Date: Thu, 15 Sep 2022 01:25:57 +0200 Subject: [PATCH] z80_unpacker: optimisations: 0B, -13T in decode_bit (stays 177B) --- z80_unpacker/unpack.asm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/z80_unpacker/unpack.asm b/z80_unpacker/unpack.asm index a779c23..6dc9097 100644 --- a/z80_unpacker/unpack.asm +++ b/z80_unpacker/unpack.asm @@ -12,7 +12,7 @@ ;; upkr.unpack ;; IN: IX = packed data, DE' (shadow DE) = destination ;; OUT: IX = after packed data -;; modifies: all registers except IY, requires 14 bytes of stack space +;; modifies: all registers except IY, requires 10 bytes of stack space ;; OPT push reset --syntax=abf @@ -206,7 +206,6 @@ decode_bit: cp l ; CF = bit = prob-1 < (upkr_state & 255) <=> prob <= (upkr_state & 255) inc a ; ** adjust state - push af push bc ld c,l ; C = (upkr_state & 255); (preserving the value) push af @@ -243,7 +242,8 @@ decode_bit: add a,e ; A = prob_offset + prob - ((prob + 8) >> 4) pop bc ld (bc),a ; update probs[context_index] - pop af ; restore resulting CF = bit + add a,d ; bit=0: A = 23..249, D = 240 -> CF=1 || bit=1: D=0 -> CF=0 + ccf ; resulting CF = bit restored pop de ret