+#define iscntrl(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_CNTRL), \
+ __AX__)
+
+#define isdigit(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_DIGIT), \
+ __AX__)
+
+#define isgraph(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_NOT_GRAPH), \
+ __asm__ ("cmp #1"), \
+ __asm__ ("lda #1"), \
+ __asm__ ("sbc #1"), \
+ __AX__)
+
+#define islower(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_LOWER), \
+ __AX__)
+
+#define isprint(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_NOT_PRINT), \
+ __asm__ ("eor #%b", _CT_NOT_PRINT), \
+ __AX__)
+
+#define ispunct(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_NOT_PUNCT), \
+ __asm__ ("cmp #1"), \
+ __asm__ ("lda #1"), \
+ __asm__ ("sbc #1"), \
+ __AX__)
+
+#define isspace(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_WS), \
+ __AX__)
+
+#define isupper(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_UPPER), \
+ __AX__)
+
+#define isxdigit(c) (__AX__ = (c), \
+ __asm__ ("tay"), \
+ __asm__ ("lda %v,y", _ctype), \
+ __asm__ ("and #%b", _CT_XDIGIT), \
+ __AX__)