1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-10 19:29:45 +00:00

Made the zlib's inflatemem()'s source file use enhanced instructions for all 65SC02-compatible CPUs (not only the 65C02).

This commit is contained in:
Greg King 2016-07-10 04:11:07 -04:00
parent 48448e6bbb
commit c2945bf1ff

View File

@ -9,6 +9,8 @@
.import incsp2 .import incsp2
.importzp sp, sreg, ptr1, ptr2, ptr3, ptr4, tmp1 .importzp sp, sreg, ptr1, ptr2, ptr3, ptr4, tmp1
.macpack cpu
; -------------------------------------------------------------------------- ; --------------------------------------------------------------------------
; ;
; Constants ; Constants
@ -75,7 +77,7 @@ _inflatemem:
sta inputPointer sta inputPointer
stx inputPointer+1 stx inputPointer+1
; outputPointer = dest ; outputPointer = dest
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
lda (sp) lda (sp)
ldy #1 ldy #1
.else .else
@ -106,7 +108,7 @@ inflatemem_1:
; return outputPointer - dest; ; return outputPointer - dest;
lda outputPointer lda outputPointer
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
sbc (sp) ; C flag is set sbc (sp) ; C flag is set
ldy #1 ldy #1
.else .else
@ -156,14 +158,14 @@ inflateCopyBlock:
moveBlock: moveBlock:
ldy moveBlock_len ldy moveBlock_len
beq moveBlock_1 beq moveBlock_1
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
.else .else
ldy #0 ldy #0
.endif .endif
inc moveBlock_len+1 inc moveBlock_len+1
moveBlock_1: moveBlock_1:
lda (0,x) lda (0,x)
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
sta (outputPointer) sta (outputPointer)
.else .else
sta (outputPointer),y sta (outputPointer),y
@ -176,7 +178,7 @@ moveBlock_2:
bne moveBlock_3 bne moveBlock_3
inc outputPointer+1 inc outputPointer+1
moveBlock_3: moveBlock_3:
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
dey dey
.else .else
dec moveBlock_len dec moveBlock_len
@ -312,7 +314,7 @@ inflateCodes_1:
jsr fetchPrimaryCode jsr fetchPrimaryCode
bcs inflateCodes_2 bcs inflateCodes_2
; Literal code ; Literal code
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
sta (outputPointer) sta (outputPointer)
.else .else
ldy #0 ldy #0
@ -512,7 +514,7 @@ getValue:
getBits: getBits:
cpx #0 cpx #0
beq getBits_ret beq getBits_ret
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
stz getBits_tmp stz getBits_tmp
dec getBits_tmp dec getBits_tmp
.else .else
@ -542,7 +544,7 @@ getBit:
lsr getBit_hold lsr getBit_hold
bne getBit_ret bne getBit_ret
pha pha
.ifpc02 .if (.cpu & CPU_ISET_65SC02)
lda (inputPointer) lda (inputPointer)
.else .else
sty getBit_hold sty getBit_hold
@ -554,7 +556,7 @@ getBit:
bne getBit_1 bne getBit_1
inc inputPointer+1 inc inputPointer+1
getBit_1: getBit_1:
ror a ; C flag is set ror a ; (C flag was set)
sta getBit_hold sta getBit_hold
pla pla
getBit_ret: getBit_ret:
@ -668,6 +670,3 @@ bitsPointer_h:
; Sorted codes. ; Sorted codes.
sortedCodes: sortedCodes:
.res 256+1+29+30+2 .res 256+1+29+30+2