;
-; Ullrich von Bassewitz, 02.06.1998
+; 1998-06-02, Ullrich von Bassewitz
+; 2014-09-10, Greg King
;
; int ispunct (int c);
;
- .export _ispunct
- .import __ctype
+ .export _ispunct
+ .include "ctype.inc"
_ispunct:
- tay
- lda __ctype,y ; Get character classification
- eor #$37 ; NOT (space | control | digit | char)
- and #$37 ; Mask relevant bits
- rts
+ cpx #>$0000 ; Char range OK?
+ bne @L1 ; Jump if no
+ tay
+ lda __ctype,y ; Get character classification
+ and #CT_NOT_PUNCT ; Mask relevant bits
+ cmp #1 ; If false, then set "borrow" flag
+ lda #0
+ sbc #0 ; Invert logic
+ rts ; Return NOT (space | control | digit | alpha)
+
+@L1: lda #<0 ; Return false
+ tax
+ rts