- if (SPEC_LONG(val->type)) {
- if (SPEC_USIGN(val->type)) {
- uval=SPEC_CVAL(val->type).v_ulong;
- } else {
- sval=SPEC_CVAL(val->type).v_long;
- }
- } else {
- if (SPEC_USIGN(val->type)) {
- uval=SPEC_CVAL(val->type).v_uint;
- } else {
- sval=SPEC_CVAL(val->type).v_int;
- }
- }
-
- if (SPEC_USIGN(val->type)) {
- if (uval<=0xffff) {
- SPEC_LONG(val->type)=0;
- SPEC_CVAL(val->type).v_uint = (TYPE_UWORD)uval;
- if (uval<=0xff) {
- SPEC_NOUN(val->type)=V_CHAR;
- }
- }
- } else { // not unsigned
- if (sval<0) {
- if (sval>=-32768) {
- SPEC_LONG(val->type)=0;
- SPEC_CVAL(val->type).v_int = (TYPE_WORD)sval;
- if (sval>=-128) {
- SPEC_NOUN(val->type)=V_CHAR;
- }
- }
- } else { // sval>=0
- if (sval<=32767) {
- SPEC_LONG(val->type)=0;
- SPEC_CVAL(val->type).v_int = (TYPE_WORD)sval;
- if (sval<=127) {
- SPEC_NOUN(val->type)=V_CHAR;
- }
- }
- }
- }
- return val;
-}
-
-#else