1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-17 16:29:32 +00:00

Changes resulting from 2nd code review

This commit is contained in:
IrgendwerA8 2020-02-02 18:21:25 +01:00 committed by Oliver Schmidt
parent 002d1801ec
commit 08705a3fdc
32 changed files with 372 additions and 402 deletions

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,46 +3,46 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
; Data covering all possible combinations of character flags for target specific definition ; Data covering all possible combinations of character flags for target specific definition
; ;
.include "ctype.inc" .include "ctype.inc"
.export __ctype .export __ctype
; Table definition covering all possible ctype combinations ; Table definition covering all possible ctype combinations
.rodata .rodata
__ctype: __ctype:
ct_none: .byte CT_NONE ct_none: .byte CT_NONE
ct_lower: .byte CT_LOWER ct_lower: .byte CT_LOWER
ct_upper: .byte CT_UPPER ct_upper: .byte CT_UPPER
ct_digit_xdigit: .byte CT_DIGIT | CT_XDIGIT ct_digit_xdigit: .byte CT_DIGIT | CT_XDIGIT
ct_lower_xdigit: .byte CT_LOWER | CT_XDIGIT ct_lower_xdigit: .byte CT_LOWER | CT_XDIGIT
ct_upper_xdigit: .byte CT_UPPER | CT_XDIGIT ct_upper_xdigit: .byte CT_UPPER | CT_XDIGIT
ct_ctrl: .byte CT_CTRL ct_ctrl: .byte CT_CTRL
ct_ws: .byte CT_OTHER_WS ct_ws: .byte CT_OTHER_WS
ct_ctrl_ws: .byte CT_CTRL | CT_OTHER_WS ct_ctrl_ws: .byte CT_CTRL | CT_OTHER_WS
ct_space_spacetab: .byte CT_SPACE | CT_SPACE_TAB ct_space_spacetab: .byte CT_SPACE | CT_SPACE_TAB
ct_ctrl_ws_spacetab: .byte CT_CTRL | CT_OTHER_WS | CT_SPACE_TAB ct_ctrl_ws_spacetab: .byte CT_CTRL | CT_OTHER_WS | CT_SPACE_TAB
; build indices out of the table above: ; build indices out of the table above:
CT_NONE_IDX = ct_none - __ctype CT_NONE_IDX = ct_none - __ctype
CT_LOWER_IDX = ct_lower - __ctype CT_LOWER_IDX = ct_lower - __ctype
CT_UPPER_IDX = ct_upper - __ctype CT_UPPER_IDX = ct_upper - __ctype
CT_DIGIT_XDIGIT_IDX = ct_digit_xdigit - __ctype CT_DIGIT_XDIGIT_IDX = ct_digit_xdigit - __ctype
CT_LOWER_XDIGIT_IDX = ct_lower_xdigit - __ctype CT_LOWER_XDIGIT_IDX = ct_lower_xdigit - __ctype
CT_UPPER_XDIGIT_IDX = ct_upper_xdigit - __ctype CT_UPPER_XDIGIT_IDX = ct_upper_xdigit - __ctype
CT_CTRL_IDX = ct_ctrl - __ctype CT_CTRL_IDX = ct_ctrl - __ctype
CT_WS_IDX = ct_ws - __ctype CT_WS_IDX = ct_ws - __ctype
CT_CTRL_WS_IDX = ct_ctrl_ws - __ctype CT_CTRL_WS_IDX = ct_ctrl_ws - __ctype
CT_SPACE_SPACETAB_IDX = ct_space_spacetab - __ctype CT_SPACE_SPACETAB_IDX = ct_space_spacetab - __ctype
CT_CTRL_WS_SPACETAB_IDX = ct_ctrl_ws_spacetab - __ctype CT_CTRL_WS_SPACETAB_IDX = ct_ctrl_ws_spacetab - __ctype
.macro ct_mix lower, upper .macro ct_mix lower, upper
.byte ((lower) & $0F) | ((upper) << 4) .byte ((lower) & $0F) | ((upper) << 4)
.endmacro .endmacro

View File

@ -1,5 +0,0 @@
; Character specification table.
;
; uses the "console" definition
.include "ctype_console.inc"

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -1,9 +1,9 @@
; ctype_console.inc ; ctype.s
; ;
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -13,10 +13,10 @@
.export _isascii .export _isascii
_isascii: _isascii:
asl a ; high-bit to carry asl a ; high-bit to carry
txa ; check range of input param txa ; check range of input param
bne @L1 ; out-of bounds? bne @L1 ; out-of bounds?
adc #$FF ; calculate return value based on carry adc #$FF ; calculate return value based on carry
rts rts
@L1: lda #$00 ; return false @L1: lda #$00 ; return false

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -14,7 +14,7 @@
.export _isblank .export _isblank
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_isblank: _isblank:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _iscntrl .export _iscntrl
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_iscntrl: _iscntrl:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -17,9 +17,9 @@
_isgraph: _isgraph:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)
bcs @L1 ; out of range? (everything already clear -> false) bcs @L1 ; out of range? (everything already clear -> false)
and #CT_CTRL_SPACE ; mask character bits and #CT_CTRL_SPACE ; mask character bits
cmp #1 ; if false, then set "borrow" flag cmp #1 ; if false, then set "borrow" flag
lda #0 lda #0
sbc #0 ; invert logic (return NOT control and NOT space) sbc #0 ; invert logic (return NOT control and NOT space)
@L1: rts @L1: rts

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _islower .export _islower
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_islower: _islower:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _isprint .export _isprint
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_isprint: _isprint:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _ispunct .export _ispunct
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_ispunct: _ispunct:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _isspace .export _isspace
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_isspace: _isspace:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _isupper .export _isupper
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_isupper: _isupper:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -12,7 +12,7 @@
.export _isxdigit .export _isxdigit
.include "ctype.inc" .include "ctype.inc"
.import ctype_preprocessor .import ctype_preprocessor
_isxdigit: _isxdigit:
jsr ctype_preprocessor ; (clears always x) jsr ctype_preprocessor ; (clears always x)

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;
@ -27,7 +27,7 @@ _strcasecmp:
loop: lda (ptr2),y ; get char from second string loop: lda (ptr2),y ; get char from second string
sta tmp2 ; and save it sta tmp2 ; and save it
; get character classification ; get character classification
jsr ctype_preprocessor_no_check jsr ctype_preprocessor_no_check
and #CT_LOWER ; lower case char? and #CT_LOWER ; lower case char?
beq L1 ; jump if no beq L1 ; jump if no
lda #<('A'-'a') ; make upper case char lda #<('A'-'a') ; make upper case char
@ -37,13 +37,13 @@ loop: lda (ptr2),y ; get char from second string
L1: lda (ptr1),y ; get character from first string L1: lda (ptr1),y ; get character from first string
sta tmp1 sta tmp1
; get character classification ; get character classification
jsr ctype_preprocessor_no_check jsr ctype_preprocessor_no_check
and #CT_LOWER ; lower case char? and #CT_LOWER ; lower case char?
beq L2 ; jump if no beq L2 ; jump if no
lda #<('A'-'a') ; make upper case char lda #<('A'-'a') ; make upper case char
adc tmp1 ; ctype_preprocessor_no_check ensures carry clear! adc tmp1 ; ctype_preprocessor_no_check ensures carry clear!
sta tmp1 ; remember upper case equivalent sta tmp1 ; remember upper case equivalent
L2: ldx tmp1 L2: ldx tmp1
cpx tmp2 ; compare characters cpx tmp2 ; compare characters
bne L3 bne L3

View File

@ -1,5 +0,0 @@
; Character specification table.
;
; uses the "console" definition
.include "ctype_console.inc"

View File

@ -1,5 +0,0 @@
; Character specification table.
;
; uses the "console" definition
.include "ctype_console.inc"

View File

@ -3,7 +3,7 @@
; This file is part of ; This file is part of
; cc65 - a freeware C compiler for 6502 based systems ; cc65 - a freeware C compiler for 6502 based systems
; ;
; https://github.com/cc65/cc65 ; https://cc65.github.io
; ;
; See "LICENSE" file for legal information. ; See "LICENSE" file for legal information.
; ;

View File

@ -1,5 +0,0 @@
; Character specification table.
;
; uses the "console" definition
.include "ctype_console.inc"

View File

@ -1,5 +0,0 @@
; Character specification table.
;
; uses the "console" definition
.include "ctype_console.inc"

View File

@ -1,5 +0,0 @@
; Character specification table.
;
; uses the "console" definition
.include "ctype_console.inc"

View File

@ -3,7 +3,7 @@
// This file is part of // This file is part of
// cc65 - a freeware C compiler for 6502 based systems // cc65 - a freeware C compiler for 6502 based systems
// //
// https://github.com/cc65/cc65 // https://cc65.github.io
// //
// See "LICENSE" file for legal information. // See "LICENSE" file for legal information.
// //
@ -18,19 +18,19 @@
typedef struct typedef struct
{ {
bool isalnum; bool isalnum;
bool isalpha; bool isalpha;
bool isascii; bool isascii;
bool iscntrl; bool iscntrl;
bool isdigit; bool isdigit;
bool isgraph; bool isgraph;
bool islower; bool islower;
bool isprint; bool isprint;
bool ispunct; bool ispunct;
bool isspace; bool isspace;
bool isupper; bool isupper;
bool isxdigit; bool isxdigit;
bool isblank; bool isblank;
} CTypeClassifications; } CTypeClassifications;
@ -39,330 +39,330 @@ CTypeClassifications testSet[NUMTESTS] =
{ {
//alnum, alpha, ascii, cntrl, digit, graph, lower, print, punct, space, upper, xdigit,blank //alnum, alpha, ascii, cntrl, digit, graph, lower, print, punct, space, upper, xdigit,blank
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 00 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 00
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 01 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 01
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 02 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 02
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 03 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 03
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 04 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 04
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 05 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 05
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 06 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 06
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 07 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 07
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 08 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 08
{false, false, true, true, false, false, false, false, false, true, false, false, true }, // 09 {false, false, true, true, false, false, false, false, false, true, false, false, true }, // 09
{false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0A {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0A
{false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0B {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0B
{false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0C {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0C
{false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0D {false, false, true, true, false, false, false, false, false, true, false, false, false}, // 0D
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 0E {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 0E
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 0F {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 0F
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 10 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 10
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 11 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 11
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 12 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 12
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 13 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 13
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 14 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 14
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 15 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 15
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 16 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 16
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 17 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 17
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 18 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 18
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 19 {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 19
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1A {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1A
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1B {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1B
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1C {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1C
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1D {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1D
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1E {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1E
{false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1F {false, false, true, true, false, false, false, false, false, false, false, false, false}, // 1F
{false, false, true, false, false, false, false, true, false, true, false, false, true }, // 20 {false, false, true, false, false, false, false, true, false, true, false, false, true }, // 20
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 21 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 21
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 22 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 22
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 23 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 23
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 24 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 24
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 25 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 25
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 26 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 26
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 27 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 27
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 28 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 28
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 29 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 29
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2A {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2A
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2B
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2C
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2D
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2E
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2F {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 2F
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 30 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 30
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 31 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 31
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 32 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 32
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 33 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 33
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 34 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 34
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 35 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 35
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 36 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 36
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 37 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 37
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 38 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 38
{true, false, true, false, true, true, false, true, false, false, false, true, false}, // 39 {true, false, true, false, true, true, false, true, false, false, false, true, false}, // 39
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3A {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3A
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3B
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3C
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3D
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3E
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3F {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 3F
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 40 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 40
{true, true, true, false, false, true, false, true, false, false, true, true, false}, // 41 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 41
{true, true, true, false, false, true, false, true, false, false, true, true, false}, // 42 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 42
{true, true, true, false, false, true, false, true, false, false, true, true, false}, // 43 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 43
{true, true, true, false, false, true, false, true, false, false, true, true, false}, // 44 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 44
{true, true, true, false, false, true, false, true, false, false, true, true, false}, // 45 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 45
{true, true, true, false, false, true, false, true, false, false, true, true, false}, // 46 {true, true, true, false, false, true, false, true, false, false, true, true, false}, // 46
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 47 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 47
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 48 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 48
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 49 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 49
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4A {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4A
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4B {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4B
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4C {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4C
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4D {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4D
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4E {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4E
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4F {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 4F
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 50 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 50
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 51 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 51
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 52 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 52
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 53 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 53
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 54 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 54
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 55 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 55
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 56 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 56
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 57 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 57
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 58 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 58
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 59 {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 59
{true, true, true, false, false, true, false, true, false, false, true, false, false}, // 5A {true, true, true, false, false, true, false, true, false, false, true, false, false}, // 5A
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5B
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5C
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5D
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5E
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5F {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 5F
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 60 {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 60
{true, true, true, false, false, true, true, true, false, false, false, true, false}, // 61 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 61
{true, true, true, false, false, true, true, true, false, false, false, true, false}, // 62 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 62
{true, true, true, false, false, true, true, true, false, false, false, true, false}, // 63 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 63
{true, true, true, false, false, true, true, true, false, false, false, true, false}, // 64 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 64
{true, true, true, false, false, true, true, true, false, false, false, true, false}, // 65 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 65
{true, true, true, false, false, true, true, true, false, false, false, true, false}, // 66 {true, true, true, false, false, true, true, true, false, false, false, true, false}, // 66
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 67 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 67
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 68 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 68
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 69 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 69
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6A {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6A
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6B {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6B
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6C {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6C
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6D {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6D
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6E {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6E
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6F {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 6F
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 70 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 70
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 71 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 71
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 72 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 72
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 73 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 73
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 74 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 74
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 75 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 75
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 76 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 76
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 77 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 77
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 78 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 78
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 79 {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 79
{true, true, true, false, false, true, true, true, false, false, false, false, false}, // 7A {true, true, true, false, false, true, true, true, false, false, false, false, false}, // 7A
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7B {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7B
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7C {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7C
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7D {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7D
{false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7E {false, false, true, false, false, true, false, true, true, false, false, false, false}, // 7E
{false, false, true, false, false, true, false, true, true, true, false, false, false}, // 7F {false, false, true, false, false, true, false, true, true, true, false, false, false}, // 7F
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 80 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 80
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 81 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 81
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 82 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 82
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 83 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 83
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 84 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 84
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 85 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 85
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 86 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 86
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 87 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 87
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 88 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 88
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 89 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 89
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8A {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8A
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8B {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8B
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8C {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8C
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8D {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8D
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8E {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8E
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8F {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 8F
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 90 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 90
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 91 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 91
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 92 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 92
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 93 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 93
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 94 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 94
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 95 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 95
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 96 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 96
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 97 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 97
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 98 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 98
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 99 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 99
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9A {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9A
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9B {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9B
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9C {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9C
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9D {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9D
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9E {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9E
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9F {false, false, false, false, false, true, false, true, true, false, false, false, false}, // 9F
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A0
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A1
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A2
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A3
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A4
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A5
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A6
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A7
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A8
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // A9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // A9
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // AA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AA
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // AB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AB
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // AC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AC
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // AD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AD
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // AE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AE
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // AF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // AF
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B0
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B1
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B2
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B3
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B4
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B5
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B6
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B7
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B8
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // B9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // B9
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // BA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BA
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // BB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BB
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // BC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BC
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // BD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BD
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // BE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BE
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // BF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // BF
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C0
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C1
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C2
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C3
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C4
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C5
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C6
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C7
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C8
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // C9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // C9
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // CA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CA
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // CB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CB
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // CC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CC
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // CD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CD
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // CE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CE
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // CF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // CF
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D0
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D1
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D2
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D3
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D4
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D5
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D6
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D7
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D8
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // D9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // D9
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // DA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DA
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // DB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DB
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // DC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DC
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // DD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DD
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // DE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DE
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // DF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // DF
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E0
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E1
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E2
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E3
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E4
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E5
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E6
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E7
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E8
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // E9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // E9
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // EA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EA
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // EB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EB
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // EC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EC
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // ED {false, false, false, false, false, true, false, true, true, false, false, false, false}, // ED
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // EE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EE
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // EF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // EF
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F0 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F0
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F1 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F1
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F2 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F2
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F3 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F3
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F4 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F4
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F5 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F5
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F6 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F6
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F7 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F7
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F8 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F8
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // F9 {false, false, false, false, false, true, false, true, true, false, false, false, false}, // F9
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // FA {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FA
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // FB {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FB
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // FC {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FC
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // FD {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FD
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // FE {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FE
{false, false, false, false, false, true, false, true, true, false, false, false, false}, // FF {false, false, false, false, false, true, false, true, true, false, false, false, false}, // FF
// out of range test // out of range test
{false, false, false, false, false, false, false, false, false, false, false, false, false} // 100 {false, false, false, false, false, false, false, false, false, false, false, false, false} // 100
}; };
TEST TEST
{ {
int i = 0; int i = 0;
while (i<NUMTESTS) while (i<NUMTESTS)
{ {
// isalnum() // isalnum()
ASSERT_AreEqual(testSet[i].isalnum, (isalnum(i) ? true : false), "%d", "Invalid 'isalnum(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isalnum, (isalnum(i) ? true : false), "%d", "Invalid 'isalnum(%d)' classification!" COMMA i);
// isalpha() // isalpha()
ASSERT_AreEqual(testSet[i].isalpha, (isalpha(i) ? true : false), "%d", "Invalid 'isalpha(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isalpha, (isalpha(i) ? true : false), "%d", "Invalid 'isalpha(%d)' classification!" COMMA i);
// isascii() // isascii()
ASSERT_AreEqual(testSet[i].isascii, (isascii(i) ? true : false), "%d", "Invalid 'isascii(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isascii, (isascii(i) ? true : false), "%d", "Invalid 'isascii(%d)' classification!" COMMA i);
// iscntrl() // iscntrl()
ASSERT_AreEqual(testSet[i].iscntrl, (iscntrl(i) ? true : false), "%d", "Invalid 'iscntrl(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].iscntrl, (iscntrl(i) ? true : false), "%d", "Invalid 'iscntrl(%d)' classification!" COMMA i);
// isdigit() // isdigit()
ASSERT_AreEqual(testSet[i].isdigit, (isdigit(i) ? true : false), "%d", "Invalid 'isdigit(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isdigit, (isdigit(i) ? true : false), "%d", "Invalid 'isdigit(%d)' classification!" COMMA i);
// isgraph() // isgraph()
ASSERT_AreEqual(testSet[i].isgraph, (isgraph(i) ? true : false), "%d", "Invalid 'isgraph(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isgraph, (isgraph(i) ? true : false), "%d", "Invalid 'isgraph(%d)' classification!" COMMA i);
// islower() // islower()
ASSERT_AreEqual(testSet[i].islower, (islower(i) ? true : false), "%d", "Invalid 'islower(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].islower, (islower(i) ? true : false), "%d", "Invalid 'islower(%d)' classification!" COMMA i);
// isprint() // isprint()
ASSERT_AreEqual(testSet[i].isprint, (isprint(i) ? true : false), "%d", "Invalid 'isprint(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isprint, (isprint(i) ? true : false), "%d", "Invalid 'isprint(%d)' classification!" COMMA i);
// ispunct() // ispunct()
ASSERT_AreEqual(testSet[i].ispunct, (ispunct(i) ? true : false), "%d", "Invalid 'ispunct(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].ispunct, (ispunct(i) ? true : false), "%d", "Invalid 'ispunct(%d)' classification!" COMMA i);
// isspace() // isspace()
ASSERT_AreEqual(testSet[i].isspace, (isspace(i) ? true : false), "%d", "Invalid 'isspace(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isspace, (isspace(i) ? true : false), "%d", "Invalid 'isspace(%d)' classification!" COMMA i);
// isupper() // isupper()
ASSERT_AreEqual(testSet[i].isupper, (isupper(i) ? true : false), "%d", "Invalid 'isupper(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isupper, (isupper(i) ? true : false), "%d", "Invalid 'isupper(%d)' classification!" COMMA i);
// isxdigit() // isxdigit()
ASSERT_AreEqual(testSet[i].isxdigit, (isxdigit(i) ? true : false), "%d", "Invalid 'isxdigit(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isxdigit, (isxdigit(i) ? true : false), "%d", "Invalid 'isxdigit(%d)' classification!" COMMA i);
#if __CC65_STD__ >= __CC65_STD_C99__ #if __CC65_STD__ >= __CC65_STD_C99__
// isblank() // isblank()
ASSERT_AreEqual(testSet[i].isblank, (isblank(i) ? true : false), "%d", "Invalid 'isblank(%d)' classification!" COMMA i); ASSERT_AreEqual(testSet[i].isblank, (isblank(i) ? true : false), "%d", "Invalid 'isblank(%d)' classification!" COMMA i);
#endif #endif
++i; ++i;
} }
} }
ENDTEST ENDTEST