; ; Ullrich von Bassewitz, 31.05.1998 ; ; char* strrchr (const char* s, int c); ; .export _strrchr .import popax .importzp ptr1, ptr2, tmp1 _strrchr: sta tmp1 ; Save c jsr popax ; get s sta ptr1 stx ptr1+1 lda #0 ; function result = NULL sta ptr2 sta ptr2+1 tay L1: lda (ptr1),y ; get next char beq L3 ; jump if end of string cmp tmp1 ; found? bne L2 ; jump if no ; Remember a pointer to the character tya clc adc ptr1 sta ptr2 lda ptr1+1 adc #$00 sta ptr2+1 ; Next char L2: iny bne L1 inc ptr1+1 bne L1 ; jump always ; Return the pointer to the last occurrence L3: lda ptr2 ldx ptr2+1 rts