Added "popptr1" which is of common use to save some bytes.

This commit is contained in:
IrgendwerA8
2018-05-20 15:30:18 +02:00
parent 3a6430b13d
commit c95ed4b8b5
35 changed files with 113 additions and 151 deletions

View File

@@ -5,7 +5,7 @@
; ;
.export _getdevicedir .export _getdevicedir
.import popax, popa .import popptr1, popa
.include "zeropage.inc" .include "zeropage.inc"
.include "errno.inc" .include "errno.inc"
@@ -17,9 +17,7 @@ _getdevicedir:
stx ptr2+1 stx ptr2+1
; Save buf ; Save buf
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
; Set buf ; Set buf
sta mliparam + MLI::ON_LINE::DATA_BUFFER sta mliparam + MLI::ON_LINE::DATA_BUFFER

View File

@@ -8,7 +8,7 @@
.constructor initiobuf .constructor initiobuf
.export iobuf_alloc, iobuf_free .export iobuf_alloc, iobuf_free
.import __STARTUP_RUN__ .import __STARTUP_RUN__
.import incsp2, popax .import incsp2, popptr1
.include "zeropage.inc" .include "zeropage.inc"
.include "errno.inc" .include "errno.inc"
@@ -41,9 +41,7 @@ initiobuf:
iobuf_alloc: iobuf_alloc:
; Get and save "memptr" ; Get and save "memptr"
jsr incsp2 jsr incsp2
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
; Search table for free entry ; Search table for free entry
ldx #$00 ldx #$00

View File

@@ -5,7 +5,7 @@
; ;
.export _lseek .export _lseek
.import popax .import popax, popptr1
.include "zeropage.inc" .include "zeropage.inc"
.include "errno.inc" .include "errno.inc"
@@ -18,9 +18,7 @@ _lseek:
stx tmp2 stx tmp2
; Get and save offset ; Get and save offset
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
jsr popax jsr popax
sta ptr2 sta ptr2

View File

@@ -3,7 +3,7 @@
; ;
.export rwprolog, rwcommon, rwepilog .export rwprolog, rwcommon, rwepilog
.import popax .import popax, popptr1
.include "zeropage.inc" .include "zeropage.inc"
.include "errno.inc" .include "errno.inc"
@@ -17,9 +17,7 @@ rwprolog:
stx ptr2+1 stx ptr2+1
; Get and save buf ; Get and save buf
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
; Get and process fd ; Get and process fd
jsr popax jsr popax

View File

@@ -17,16 +17,14 @@
.export _dio_log_to_phys .export _dio_log_to_phys
.include "atari.inc" .include "atari.inc"
.importzp ptr1,ptr2,ptr3 .importzp ptr1,ptr2,ptr3
.import popax,__oserror .import popax, popptr1, __oserror
.proc _dio_log_to_phys .proc _dio_log_to_phys
sta ptr2 sta ptr2
stx ptr2+1 ; pointer to output structure stx ptr2+1 ; pointer to output structure
jsr popax jsr popptr1 ; save pointer to input data
sta ptr1
stx ptr1+1 ; save pointer to input data
jsr popax jsr popax
sta ptr3 sta ptr3

View File

@@ -16,7 +16,7 @@
.export __sio_call .export __sio_call
.include "atari.inc" .include "atari.inc"
.import popa,popax .import popa, popax, popptr1
.import sectsizetab,__oserror .import sectsizetab,__oserror
.importzp ptr1 .importzp ptr1
@@ -31,9 +31,7 @@
sta DAUX1 ; set sector # sta DAUX1 ; set sector #
stx DAUX2 stx DAUX2
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
ldy #sst_flag ldy #sst_flag
lda (ptr1),y lda (ptr1),y

View File

@@ -9,7 +9,7 @@
.export _read .export _read
.constructor initstdin .constructor initstdin
.import popax .import popax, popptr1
.importzp ptr1, ptr2, ptr3 .importzp ptr1, ptr2, ptr3
.forceimport disable_caps .forceimport disable_caps
@@ -26,9 +26,7 @@
eor #$FF eor #$FF
sta ptr2+1 ; Remember -count-1 sta ptr2+1 ; Remember -count-1
jsr popax ; get buf jsr popptr1 ; get buf
sta ptr1
stx ptr1+1
jsr popax ; get fd and discard jsr popax ; get fd and discard
L1: inc ptr2 L1: inc ptr2

View File

@@ -7,7 +7,7 @@
; ;
.export _write .export _write
.import popax .import popax, popptr1
.importzp ptr1, ptr2, ptr3, tmp1 .importzp ptr1, ptr2, ptr3, tmp1
.include "atmos.inc" .include "atmos.inc"
@@ -23,9 +23,7 @@
eor #$FF eor #$FF
sta ptr2+1 ; Remember -count-1 sta ptr2+1 ; Remember -count-1
jsr popax ; get buf jsr popptr1 ; get buf
sta ptr1
stx ptr1+1
jsr popax ; get fd and discard jsr popax ; get fd and discard
L1: inc ptr2 L1: inc ptr2
bne L2 bne L2

View File

@@ -6,16 +6,14 @@
.export _cbm_k_save .export _cbm_k_save
.import SAVE .import SAVE
.import popax .import popptr1
.importzp ptr1, tmp1 .importzp ptr1, tmp1
_cbm_k_save: _cbm_k_save:
sta tmp1 ; store end address sta tmp1 ; store end address
stx tmp1+1 stx tmp1+1
jsr popax ; pop start address jsr popptr1 ; pop start address
sta ptr1
stx ptr1+1
lda #ptr1 lda #ptr1
ldx tmp1 ldx tmp1
ldy tmp1+1 ldy tmp1+1

View File

@@ -9,7 +9,7 @@
.import fnparse, fnadd, fnparsename .import fnparse, fnadd, fnparsename
.import opencmdchannel, closecmdchannel .import opencmdchannel, closecmdchannel
.import writefndiskcmd, readdiskerror .import writefndiskcmd, readdiskerror
.import popax .import popptr1
.import fncmd, fnunit .import fncmd, fnunit
.importzp ptr1 .importzp ptr1
@@ -26,10 +26,8 @@
lda #'=' lda #'='
jsr fnadd jsr fnadd
jsr popax jsr popptr1
sta ptr1 ; ldy #0 Y=0 guaranteed by popptr1
stx ptr1+1
ldy #0
jsr fnparsename ; Parse second filename jsr fnparsename ; Parse second filename
bne done bne done

View File

@@ -5,7 +5,7 @@
; ;
.export __swap .export __swap
.import popax .import popax, popptr1
.importzp ptr1, ptr2, ptr3 .importzp ptr1, ptr2, ptr3
@@ -19,13 +19,11 @@ __swap: eor #$FF
sta ptr2 sta ptr2
stx ptr2+1 stx ptr2+1
jsr popax ; Get p jsr popptr1 ; Get p
sta ptr1
stx ptr1+1
; Prepare for swap ; Prepare for swap
ldy #$00 ; ldy #$00 is guaranteed by popptr1
; Swap loop ; Swap loop

View File

@@ -6,7 +6,7 @@
.export _getcwd .export _getcwd
.import popax .import popptr1
.import __cwd .import __cwd
.importzp ptr1, ptr2 .importzp ptr1, ptr2
@@ -25,13 +25,11 @@
eor #$FF eor #$FF
sta ptr2+1 sta ptr2+1
jsr popax ; Get buf jsr popptr1 ; Get buf to ptr1
sta ptr1
stx ptr1+1 ; Save buf
; Copy __cwd to the given buffer checking the length ; Copy __cwd to the given buffer checking the length
ldy #$00 ; ldy #$00 is guaranteed by popptr10
loop: inc ptr2 loop: inc ptr2
bne @L1 bne @L1
inc ptr2+1 inc ptr2+1

View File

@@ -6,7 +6,7 @@
; ;
.export _longjmp .export _longjmp
.import popax .import popptr1
.importzp sp, ptr1, ptr2 .importzp sp, ptr1, ptr2
_longjmp: _longjmp:
@@ -16,10 +16,8 @@ _longjmp:
bne @L1 bne @L1
inc ptr2 ; 0 is illegal, according to the standard ... inc ptr2 ; 0 is illegal, according to the standard ...
; ... and, must be replaced by 1 ; ... and, must be replaced by 1
@L1: jsr popax ; get buf @L1: jsr popptr1 ; get buf
sta ptr1 ; ldy #0 is guaranteed by popptr1
stx ptr1+1
ldy #0
; Get the old parameter stack ; Get the old parameter stack

View File

@@ -5,7 +5,7 @@
; ;
.export _memchr .export _memchr
.import popax, return0 .import popax, popptr1 return0
.importzp ptr1, ptr2 .importzp ptr1, ptr2
@@ -18,11 +18,10 @@
sta ptr2+1 ; Save ones complement of n sta ptr2+1 ; Save ones complement of n
jsr popax ; get c jsr popax ; get c
pha pha
jsr popax ; get p
sta ptr1
stx ptr1+1
ldy #$00 jsr popptr1 ; get p
; ldy #$00 is guaranteed by popptr1
pla ; Get c pla ; Get c
ldx ptr2 ; Use X as low counter byte ldx ptr2 ; Use X as low counter byte

View File

@@ -5,7 +5,7 @@
; ;
.export _memcmp .export _memcmp
.import popax, return0 .import popax, popptr1, return0
.importzp ptr1, ptr2, ptr3 .importzp ptr1, ptr2, ptr3
_memcmp: _memcmp:
@@ -24,14 +24,12 @@ _memcmp:
jsr popax ; Get p2 jsr popax ; Get p2
sta ptr2 sta ptr2
stx ptr2+1 stx ptr2+1
jsr popax ; Get p1 jsr popptr1 ; Get p1
sta ptr1
stx ptr1+1
; Loop initialization ; Loop initialization
;ldy #$00 ; Initialize pointer (Y=0 guaranteed by popptr1)
ldx ptr3 ; Load low counter byte into X ldx ptr3 ; Load low counter byte into X
ldy #$00 ; Initialize pointer
; Head of compare loop: Test for the end condition ; Head of compare loop: Test for the end condition

View File

@@ -11,7 +11,7 @@
; ;
.export _memcpy, memcpy_upwards, memcpy_getparams .export _memcpy, memcpy_upwards, memcpy_getparams
.import popax .import popax, popptr1
.importzp sp, ptr1, ptr2, ptr3 .importzp sp, ptr1, ptr2, ptr3
; ---------------------------------------------------------------------- ; ----------------------------------------------------------------------
@@ -64,12 +64,11 @@ memcpy_getparams: ; IMPORTANT! Function has to leave with Y=0!
sta ptr3 sta ptr3
stx ptr3+1 ; save n to ptr3 stx ptr3+1 ; save n to ptr3
jsr popax jsr popptr1 ; save src to ptr1
sta ptr1
stx ptr1+1 ; save src to ptr1
; save dest to ptr2 ; save dest to ptr2
ldy #1 ; (direct stack access is three cycles faster iny ; Y=0 guaranteed by popptr1, we need '1' here...
; (direct stack access is three cycles faster
; (total cycle count with return)) ; (total cycle count with return))
lda (sp),y lda (sp),y
tax tax

View File

@@ -5,16 +5,14 @@
; ;
.export _strcmp .export _strcmp
.import popax .import popptr1
.importzp ptr1, ptr2 .importzp ptr1, ptr2
_strcmp: _strcmp:
sta ptr2 ; Save s2 sta ptr2 ; Save s2
stx ptr2+1 stx ptr2+1
jsr popax ; Get s1 jsr popptr1 ; Get s1
sta ptr1 ;ldy #0 ; Y=0 guaranteed by popptr1
stx ptr1+1
ldy #0
loop: lda (ptr1),y loop: lda (ptr1),y
cmp (ptr2),y cmp (ptr2),y

View File

@@ -6,7 +6,7 @@
; ;
.export _stricmp, _strcasecmp .export _stricmp, _strcasecmp
.import popax .import popptr1
.import __ctype .import __ctype
.importzp ptr1, ptr2, tmp1 .importzp ptr1, ptr2, tmp1
@@ -16,10 +16,8 @@ _stricmp:
_strcasecmp: _strcasecmp:
sta ptr2 ; Save s2 sta ptr2 ; Save s2
stx ptr2+1 stx ptr2+1
jsr popax ; get s1 jsr popptr1 ; get s1
sta ptr1 ; ldy #0 ; Y=0 guaranteed by popptr1
stx ptr1+1
ldy #0
loop: lda (ptr2),y ; get char from second string loop: lda (ptr2),y ; get char from second string
tax tax

View File

@@ -6,7 +6,7 @@
; ;
.export _strncat .export _strncat
.import popax .import popax, popptr1
.importzp ptr1, ptr2, ptr3, tmp1, tmp2 .importzp ptr1, ptr2, ptr3, tmp1, tmp2
.macpack cpu .macpack cpu
@@ -17,9 +17,7 @@ _strncat:
eor #$FF eor #$FF
sta tmp2 sta tmp2
jsr popax ; get src jsr popptr1 ; get src
sta ptr1
stx ptr1+1
jsr popax ; get dest jsr popax ; get dest
sta ptr3 ; remember for function return sta ptr3 ; remember for function return

View File

@@ -5,7 +5,7 @@
; ;
.export _strncmp .export _strncmp
.import popax .import popax, popptr1
.importzp ptr1, ptr2, ptr3 .importzp ptr1, ptr2, ptr3
@@ -28,13 +28,11 @@ _strncmp:
jsr popax ; get s2 jsr popax ; get s2
sta ptr2 sta ptr2
stx ptr2+1 stx ptr2+1
jsr popax ; get s1 jsr popptr1 ; get s1
sta ptr1
stx ptr1+1
; Loop setup ; Loop setup
ldy #0 ;ldy #0 Y=0 guaranteed by popptr1
; Start of compare loop. Check the counter. ; Start of compare loop. Check the counter.

View File

@@ -5,7 +5,7 @@
; ;
.export _strncpy .export _strncpy
.import popax .import popptr1
.importzp ptr1, ptr2, tmp1, tmp2, tmp3 .importzp ptr1, ptr2, tmp1, tmp2, tmp3
.proc _strncpy .proc _strncpy
@@ -16,9 +16,7 @@
eor #$FF eor #$FF
sta tmp2 ; Store -size - 1 sta tmp2 ; Store -size - 1
jsr popax ; get src jsr popptr1 ; get src
sta ptr1
stx ptr1+1
jsr popax ; get dest jsr popax ; get dest
sta ptr2 sta ptr2
stx ptr2+1 stx ptr2+1

View File

@@ -7,7 +7,7 @@
; ;
.export _strnicmp, _strncasecmp .export _strnicmp, _strncasecmp
.import popax, __ctype .import popax, popptr1, __ctype
.importzp ptr1, ptr2, ptr3, tmp1 .importzp ptr1, ptr2, ptr3, tmp1
.include "ctype.inc" .include "ctype.inc"
@@ -32,13 +32,11 @@ _strncasecmp:
jsr popax ; get s2 jsr popax ; get s2
sta ptr2 sta ptr2
stx ptr2+1 stx ptr2+1
jsr popax ; get s1 jsr popptr1 ; get s1
sta ptr1
stx ptr1+1
; Loop setup ; Loop setup
ldy #0 ; ldy #0 Y=0 guaranteed by popptr1
; Start of compare loop. Check the counter. ; Start of compare loop. Check the counter.

View File

@@ -5,17 +5,15 @@
; ;
.export _strpbrk .export _strpbrk
.import popax, return0 .import popax, popptr1, return0
.importzp ptr1, ptr2, tmp1, tmp2, tmp3 .importzp ptr1, ptr2, tmp1, tmp2, tmp3
_strpbrk: _strpbrk:
jsr popax ; get s2 jsr popax ; get s2
sta ptr2 sta ptr2
stx ptr2+1 stx ptr2+1
jsr popax ; get s1 jsr popptr1 ; get s1
sta ptr1 ; ldy #$00 Y=0 guaranteed by popptr1
stx ptr1+1
ldy #$00
L1: lda (ptr1),y ; get next char from s1 L1: lda (ptr1),y ; get next char from s1
beq L9 ; jump if done beq L9 ; jump if done

View File

@@ -5,7 +5,7 @@
; ;
.export _strstr .export _strstr
.import popax .import popptr1
.importzp ptr1, ptr2, ptr3, ptr4, tmp1 .importzp ptr1, ptr2, ptr3, ptr4, tmp1
_strstr: _strstr:
@@ -13,13 +13,11 @@ _strstr:
stx ptr2+1 stx ptr2+1
sta ptr4 ; Setup temp copy for later sta ptr4 ; Setup temp copy for later
jsr popax ; Get haystack jsr popptr1 ; Get haystack to ptr1
sta ptr1
stx ptr1+1 ; Save haystack
; If needle is empty, return haystack ; If needle is empty, return haystack
ldy #$00 ; ldy #$00 Y=0 guaranteed by popptr1
lda (ptr2),y ; Get first byte of needle lda (ptr2),y ; Get first byte of needle
beq @Found ; Needle is empty --> we're done beq @Found ; Needle is empty --> we're done

View File

@@ -5,7 +5,7 @@
; ;
.export _vcprintf .export _vcprintf
.import pushax, popax .import pushax, popax, popptr1
.import __printf, _cputc .import __printf, _cputc
.importzp sp, ptr1, ptr2, ptr3, tmp1 .importzp sp, ptr1, ptr2, ptr3, tmp1
@@ -54,9 +54,7 @@ out: jsr popax ; count
eor #$FF eor #$FF
sta outdesc+7 sta outdesc+7
jsr popax ; buf jsr popptr1 ; buf
sta ptr1
stx ptr1+1
jsr popax ; d jsr popax ; d
sta ptr3 sta ptr3

View File

@@ -6,7 +6,7 @@
.export _DbgInit .export _DbgInit
.export _DbgSP, _DbgCS, _DbgHI .export _DbgSP, _DbgCS, _DbgHI
.import popax, return0, _DbgEntry, _set_brk, _end_brk .import popptr1, return0, _DbgEntry, _set_brk, _end_brk
.import _DbgBreaks .import _DbgBreaks
.import _brk_pc .import _brk_pc
.import __ZP_START__ ; Linker generated .import __ZP_START__ ; Linker generated
@@ -170,9 +170,7 @@ L12: ldy #1 ; Force != 0
.export _DbgIsBreak .export _DbgIsBreak
_DbgIsBreak: _DbgIsBreak:
jsr popax ; Get address jsr popptr1 ; Get address
sta ptr1
stx ptr1+1
ldx #0 ldx #0
L20: lda _DbgBreaks+3,x ; Get bk_use L20: lda _DbgBreaks+3,x ; Get bk_use
beq L21 ; Jump if not set beq L21 ; Jump if not set

View File

@@ -13,7 +13,7 @@
FILEDES = 3 ; first free to use file descriptor FILEDES = 3 ; first free to use file descriptor
.importzp ptr1, ptr2, ptr3, tmp1 .importzp ptr1, ptr2, ptr3, tmp1
.import addysp, popax .import addysp, popax, poptr1
.import __oserror .import __oserror
.import _FindFile, _ReadByte .import _FindFile, _ReadByte
.export _open, _close, _read .export _open, _close, _read
@@ -37,9 +37,7 @@ _open:
@parmok: @parmok:
jsr popax ; Get flags jsr popax ; Get flags
sta tmp1 sta tmp1
jsr popax ; Get name jsr popptr1 ; Get name
sta ptr1
stx ptr1+1
lda filedesc ; is there a file already open? lda filedesc ; is there a file already open?
bne @alreadyopen bne @alreadyopen

View File

@@ -17,7 +17,7 @@
.export _memcpy .export _memcpy
.export memcpy_increment, memcpy_transfer, memcpy_getparams .export memcpy_increment, memcpy_transfer, memcpy_getparams
.import incsp2, popax .import incsp2, popax, popptr1
.importzp sp, ptr1, ptr2, ptr3 .importzp sp, ptr1, ptr2, ptr3
@@ -81,13 +81,11 @@ memcpy_getparams:
jsr incsp2 ; drop src address jsr incsp2 ; drop src address
jmp popax ; get pointer; return it as result jmp popax ; get pointer; return it as result
@L1: jsr popax @L1: jsr popptr1 ; save src
sta ptr1
stx ptr1+1 ; save src
; (Direct stack access is six cycles faster [total cycle count].) ; (Direct stack access is six cycles faster [total cycle count].)
ldy #1 ; save dest iny ; (Y=0 by popptr1, need '1' here) save dest
lda (sp),y ; get high byte lda (sp),y ; get high byte
tax tax
lda (sp) ; get low byte lda (sp) ; get low byte

29
libsrc/runtime/popptr1.s Normal file
View File

@@ -0,0 +1,29 @@
;
; Christian Kruger, 20-May-2018
;
; CC65 runtime: Pop registers on stack to ptr1 or ptr2 and ptr1.
; X is untouched, low byte in A, Y is defined to be 0!
.export popptr1
.import incsp2
.importzp sp, ptr1
.macpack cpu
.proc popptr1 ; 14 bytes,
ldy #1
lda (sp),y ; get hi byte
sta ptr+1 ; into ptr hi
dey ; note: apply even for 65C02 to have Y=0 at exit!
.if (.cpu .bitand ::CPU_ISET_65SC02)
lda (sp) ; get lo byte
.else
lda (sp),y ; get lo byte
.endif
sta ptr1 ; to ptr lo
jmp incsp2
.endproc

View File

@@ -6,7 +6,7 @@
.export steaxspidx .export steaxspidx
.import popax .import popptr1
.importzp sreg, ptr1, tmp1, tmp2, tmp3 .importzp sreg, ptr1, tmp1, tmp2, tmp3
@@ -15,9 +15,7 @@
sta tmp1 sta tmp1
stx tmp2 stx tmp2
sty tmp3 sty tmp3
jsr popax ; get the pointer jsr popptr1 ; get the pointer
sta ptr1
stx ptr1+1
ldy tmp3 ldy tmp3
lda tmp1 lda tmp1
sta (ptr1),y sta (ptr1),y

View File

@@ -2,7 +2,7 @@
; jede jede@oric.org 2017-01-22 ; jede jede@oric.org 2017-01-22
.export _write .export _write
.import popax .import popax, popptr1
.importzp ptr1, ptr2, ptr3, tmp1 .importzp ptr1, ptr2, ptr3, tmp1
.include "telestrat.inc" .include "telestrat.inc"
@@ -19,9 +19,7 @@
eor #$FF eor #$FF
sta ptr2+1 ; Remember -count-1 sta ptr2+1 ; Remember -count-1
jsr popax ; get buf jsr popptr1 ; get buf
sta ptr1
stx ptr1+1
jsr popax ; get fd and discard jsr popax ; get fd and discard
; if fd=0001 then it stdout ; if fd=0001 then it stdout

View File

@@ -8,7 +8,7 @@
.include "tgi-kernel.inc" .include "tgi-kernel.inc"
.importzp ptr1, ptr2, ptr3, ptr4 .importzp ptr1, ptr2, ptr3, ptr4
.import popax .import popax, popptr1
.proc _tgi_bar .proc _tgi_bar
@@ -24,9 +24,7 @@
sta ptr2 ; Y1 sta ptr2 ; Y1
stx ptr2+1 stx ptr2+1
jsr popax jsr popptr1 ; X1
sta ptr1 ; X1
stx ptr1+1
; Make sure X1 is less than X2. Swap both if not. ; Make sure X1 is less than X2. Swap both if not.

View File

@@ -6,17 +6,14 @@
.include "tgi-kernel.inc" .include "tgi-kernel.inc"
.import popax .import popptr1
.importzp ptr1, ptr2 .importzp ptr1, ptr2
.proc tgi_popxy .proc tgi_popxy
sta ptr2 ; Y sta ptr2 ; Y
stx ptr2+1 stx ptr2+1
jsr popax jmp popptr1 ; X
sta ptr1 ; X
stx ptr1+1
rts
.endproc .endproc

View File

@@ -7,7 +7,7 @@
.export _adler32 .export _adler32
.import incsp2, incsp4, popax, popeax .import incsp2, incsp4, popptr1, popeax
.importzp sreg, ptr1, ptr2, tmp1 .importzp sreg, ptr1, ptr2, tmp1
BASE = 65521 ; largest prime smaller than 65536 BASE = 65521 ; largest prime smaller than 65536
@@ -20,9 +20,7 @@ _adler32:
@L1: sta ptr2 @L1: sta ptr2
stx ptr2+1 stx ptr2+1
; ptr1 = buf ; ptr1 = buf
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
; if (buf == NULL) return 1L; ; if (buf == NULL) return 1L;
ora ptr1+1 ora ptr1+1
beq @L0 beq @L0

View File

@@ -7,7 +7,7 @@
.export _crc32 .export _crc32
.import compleax, incsp2, incsp4, popax, popeax .import compleax, incsp2, incsp4, popptr1, popeax
.importzp sreg, ptr1, ptr2, tmp1, tmp2 .importzp sreg, ptr1, ptr2, tmp1, tmp2
POLYNOMIAL = $EDB88320 POLYNOMIAL = $EDB88320
@@ -67,9 +67,7 @@ _crc32:
@L1: sta ptr2 @L1: sta ptr2
stx ptr2+1 stx ptr2+1
; ptr1 = buf ; ptr1 = buf
jsr popax jsr popptr1
sta ptr1
stx ptr1+1
; if (buf == NULL) return 0; ; if (buf == NULL) return 0;
ora ptr1+1 ora ptr1+1
beq @L0 beq @L0