Blob Blame History Raw
From d38417b347323ba73d2af5106316720f038e95fa Mon Sep 17 00:00:00 2001
From: Piotr Fusik <fox@scene.pl>
Date: Tue, 5 Nov 2019 20:44:21 +0100
Subject: [PATCH 090/170] Optimize sign extension.

---
 libsrc/runtime/imul8x8r16.s | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/libsrc/runtime/imul8x8r16.s b/libsrc/runtime/imul8x8r16.s
index fe939f66..fe08c855 100644
--- a/libsrc/runtime/imul8x8r16.s
+++ b/libsrc/runtime/imul8x8r16.s
@@ -24,13 +24,17 @@ imul8x8r16:
         sta     ptr3
 
 imul8x8r16m:
+; Extend sign of Left-Hand Side
+        lda     #$7f
+        cmp     ptr3
+        adc     #$80
+        sta     ptr3+1
+
+; Clear .XY accumulator
+        ldy     #<$0000
         ldx     #>$0000
-        bit     ptr3
-        bpl     @L7
-        dex
-@L7:    stx     ptr3+1          ; Extend sign of Left-Hand Side
-        ldy     #<$0000         ; Clear .XY accumulator
-        ldx     #>$0000
+
+; Check the multiplier sign.
         lda     ptr1
         bpl     PosStart
 
-- 
2.26.0