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