]> git.sur5r.net Git - cc65/commitdiff
Save a few bytes
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 5 Jan 2005 20:05:27 +0000 (20:05 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 5 Jan 2005 20:05:27 +0000 (20:05 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3344 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/free.s

index fe119d9ed9a2fd81ebf2f6b279420da82b7d8e4c..8cf354b62b16e85b7a6cacd0fc7902a3c61ebf87 100644 (file)
@@ -75,19 +75,16 @@ _free:      sta     ptr2
 ; Is the argument NULL? If so, bail out.
 
        ora     ptr2+1                  ; Is the argument NULL?
-               bne     @L0                     ; Jump if no
+               bne     @L1                     ; Jump if no
         rts                             ; Bail out if yes
 
 ; There's a pointer below the user space that points to the real start of the
-; raw block. The first word of the raw block is the total size of the block.
-; Remember the block size in ptr1.
-
-@L0:    lda    ptr2
-       sub     #2
-       sta     ptr2
-       bcs     @L1
-       dec     ptr2+1
-@L1:           ldy     #1
+; raw block. We will decrement the high pointer byte and use an offset of 254
+; to save some code. The first word of the raw block is the total size of the
+; block. Remember the block size in ptr1.
+
+@L1:    dec     ptr2+1                  ; Decrement high pointer byte
+       ldy     #$FF
         lda     (ptr2),y                ; High byte of real block address
         tax
         dey