/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 9:03:53 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: RealConvertImpl, module: RealConvertImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> #define XRM←BITAND(x, y) (((word)(x)) & ((word)(y))) #define XRM←BITOR(x, y) (((word)(x)) | ((word)(y))) static char versionStamp[] = "@(#)mob←version [1996942531,2646172190] RealConvertImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; #define SOURCE(p, l) /* source p, l */ #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) static void NoName←Q348(); static void RealConvertImpl←P0(); static word BcplToIeee←P180(); static word IeeeToBcpl←P240(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\167\006\354\303\300\235\271\142\036\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\262\175\173\150\300\222\117\017\211\100\150\000\000"}; static struct { word f0[5]; word f5; word f6; word f7; word f8; word f9; word f10[2]; } globalframe = { {0}, (word) IeeeToBcpl←P240, 0, (word) BcplToIeee←P180, 0, (word) RealConvertImpl←P0, {0} }; static void NoName←Q348() { register ptr gf←c029 = (ptr) &globalframe; word var←c5984; (void) XR←DeclareGlobalFrame((word) "RealConvertImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) ( ( (bPt) gf←c029)+36)/* var←c5632 */ ); var←c5984 = (word) XR←ExportInterface((word) "RealConvert", (word) XR←GetTypeIndexS((word) (&string2)), 3); (* (( (ptr) gf←c029)+11)/* var←c5952 */ ) = var←c5984; (void) XR←ExportVar(var←c5984, 0, (word) (( (bPt) gf←c029)+16)/* var←c5536 */ ); (void) XR←ExportProcS(var←c5984, (word) (( (bPt) gf←c029)+28)/* var←c5600 */ , 67371265); (void) XR←ExportProcS(var←c5984, (word) (( (bPt) gf←c029)+20)/* var←c5568 */ , 67371521); } static void RealConvertImpl←P0(formal←c08, formal←c07) word formal←c08; word formal←c07; { /* RealConvertImpl: */ } static word BcplToIeee←P180(a←v3164) word a←v3164; { word b←v3208; word fl←v3340; word frac←v3368; word exp←v3396; word var←c5728; /* BcplToIeee: */ SOURCE(882, 848) SOURCE(955, 55) fl←v3340 = ((a←v3164 << 16) + (a←v3164 >> 16)); SOURCE(1044, 93) if ((int)fl←v3340<0) { SOURCE(1062, 59) fl←v3340 = INEG(fl←v3340); SOURCE(1123, 14) fl←v3340 = (fl←v3340 & 2147483647) | (((1)) << 31); }; SOURCE(1142, 12) exp←v3396 = (((unsigned)fl←v3340 << 1) >> 24); SOURCE(1156, 31) frac←v3368 = fl←v3340; SOURCE(1189, 46) { word idx3; frac←v3368 = (frac←v3368 & 65535) | ((( idx3 = (word) XRM←BITAND(((unsigned)frac←v3368 >> 16), 127), BCK(idx3, 65536) )) << 16); }; SOURCE(1237, 41) if ((frac←v3368 == 0)) { SOURCE(1257, 21) return(0); }; SOURCE(1280, 83) lab←L100002: ; if (((word) XRM←BITAND(((unsigned)frac←v3368 >> 16), 128) == 0)) { } else { goto lab←L100000; }; SOURCE(1323, 13) exp←v3396 = (exp←v3396 - 1); SOURCE(1338, 25) frac←v3368 = (frac←v3368 + frac←v3368); goto lab←L100002; lab←L100000: ; SOURCE(1395, 30) exp←v3396 = (exp←v3396 - 1); SOURCE(1427, 114) { word var←c5664; var←c5664 = exp←v3396; if (( (int)var←c5664 < (int)1)) { SOURCE(1468, 55) { register word noName←c5696; noName←c5696 = exp←v3396; if (( (int)noName←c5696 > (int)0)) { goto lab←L100003; }; lab←L100006: ; SOURCE(1504, 19) frac←v3368 = (frac←v3368 >> 1); if (( (int)noName←c5696 >= (int)0)) { goto lab←L100003; }; noName←c5696 = (noName←c5696 + 1); goto lab←L100006; lab←L100003: ; }; SOURCE(1534, 7) exp←v3396 = 0; } else { if ( ( ( (int)var←c5664 >= (int)1) ? ( (int)var←c5664 <= (int)254) : 0 ) ) { } else { SOURCE(1608, 5) (void) XR←RaiseUnnamedError(); }; }; }; SOURCE(1615, 73) { word idx4; { word var←c5760; var←c5760 = (word) XRM←BITAND(((unsigned)frac←v3368 >> 16), 127); var←c5728 = (word) Basics←BITSHIFT(var←c5760, 16); }; fl←v3340 = (fl←v3340 & 4286578688) | (( (((unsigned)( idx4 = (word) XRM←BITOR(var←c5728, ( (((unsigned)frac←v3368 << 16) >> 16) )), BCK(idx4, 8388608) ) << 9) >> 9) )); }; SOURCE(1690, 12) fl←v3340 = (fl←v3340 & 2155872255) | (((BCK(exp←v3396, 256))) << 23); SOURCE(1704, 26) return(fl←v3340); } static word IeeeToBcpl←P240(a←v3268) word a←v3268; { register ptr gf←c6016 = (ptr) &globalframe; word var←c3312; word fl←v3440; word sign←v3468; word frac←v3496; word exp←v3524; word var←c5888; /* IeeeToBcpl: */ SOURCE(1736, 1244) SOURCE(1806, 50) fl←v3440 = a←v3268; SOURCE(1858, 20) sign←v3468 = ((int)fl←v3440<0); SOURCE(1898, 21) exp←v3524 = (((unsigned)fl←v3440 << 1) >> 24); SOURCE(1921, 84) { word tc5; if (((((unsigned)fl←v3440 << 1) >> 24) == 255)) { tc5 = (word) (( (((unsigned)fl←v3440 << 9) >> 9) ) != 0); } else { tc5 = (word) 0; }; if (tc5) { SOURCE(1990, 15) (void) XR←RaiseError((word) (( (bPt) gf←c6016)+16)/* var←c5536 */ , 0); }; }; SOURCE(2007, 15) fl←v3440 = (fl←v3440 & 2147483647) | (((0)) << 31); SOURCE(2024, 31) frac←v3496 = fl←v3440; SOURCE(2057, 31) if ((frac←v3496 == 0)) { SOURCE(2077, 11) return(0); }; SOURCE(2090, 46) { word idx6; frac←v3496 = (frac←v3496 & 65535) | ((( idx6 = (word) XRM←BITAND(((unsigned)frac←v3496 >> 16), 127), BCK(idx6, 65536) )) << 16); }; SOURCE(2138, 641) { word var←c5792; var←c5792 = exp←v3524; if (( (int)var←c5792 < (int)1)) { SOURCE(2179, 13) exp←v3524 = (exp←v3524 + 1); SOURCE(2194, 77) lab←L100009: ; if (((word) XRM←BITAND(((unsigned)frac←v3496 >> 16), 128) == 0)) { } else { goto lab←L100007; }; SOURCE(2237, 13) exp←v3524 = (exp←v3524 - 1); SOURCE(2252, 19) frac←v3496 = (frac←v3496 << 1); goto lab←L100009; lab←L100007: ; SOURCE(2282, 19) frac←v3496 = (frac←v3496 >> 1); SOURCE(2303, 30) exp←v3524 = (exp←v3524 + 2); SOURCE(2350, 51) lab←L100012: ; if (( (int)exp←v3524 < (int)0)) { } else { goto lab←L100010; }; SOURCE(2367, 13) exp←v3524 = (exp←v3524 + 1); SOURCE(2382, 19) frac←v3496 = (frac←v3496 >> 1); goto lab←L100012; lab←L100010: ; } else { SOURCE(2428, 33) { word idx7; frac←v3496 = (frac←v3496 & 65535) | ((( idx7 = (word) (((unsigned)frac←v3496 >> 16) + 128), BCK(idx7, 65536) )) << 16); }; SOURCE(2463, 69) { word tc8; if (((word) XRM←BITAND(( (((unsigned)frac←v3496 << 16) >> 16) ), 1) != 0)) { tc8 = (word) ((word) XRM←BITAND(( (((unsigned)frac←v3496 << 16) >> 16) ), 2) != 0); } else { tc8 = (word) 0; }; if (tc8) { SOURCE(2511, 21) frac←v3496 = (frac←v3496 + 1); }; }; SOURCE(2534, 19) frac←v3496 = (frac←v3496 >> 1); SOURCE(2555, 30) exp←v3524 = (exp←v3524 + 2); SOURCE(2587, 74) if (((word) XRM←BITAND(((unsigned)frac←v3496 >> 16), 128) != 0)) { SOURCE(2627, 13) exp←v3524 = (exp←v3524 + 1); SOURCE(2642, 19) frac←v3496 = (frac←v3496 >> 1); }; SOURCE(2666, 113) if (( (int)exp←v3524 > (int)255)) { SOURCE(2685, 94) { word var←c5824; { word n←v5488; n←v5488 = ( ((int)fl←v3440<0) ? 2147483648 : 2147483647 ) ; SOURCE(843, 33) var←c5824 = ((n←v5488 << 16) + (n←v5488 >> 16)); }; return(var←c5824); }; }; }; }; SOURCE(2784, 73) { word idx9; { word var←c5920; var←c5920 = (word) XRM←BITAND(((unsigned)frac←v3496 >> 16), 127); var←c5888 = (word) Basics←BITSHIFT(var←c5920, 16); }; fl←v3440 = (fl←v3440 & 4286578688) | (( (((unsigned)( idx9 = (word) XRM←BITOR(var←c5888, ( (((unsigned)frac←v3496 << 16) >> 16) )), BCK(idx9, 8388608) ) << 9) >> 9) )); }; SOURCE(2859, 12) fl←v3440 = (fl←v3440 & 2155872255) | (((BCK(exp←v3524, 256))) << 23); SOURCE(2873, 63) if ((0 != sign←v3468)) { SOURCE(2886, 50) fl←v3440 = INEG(fl←v3440); }; SOURCE(2938, 42) return(((fl←v3440 << 16) + (fl←v3440 >> 16))); } /* file: RealConvertImpl, module: RealConvertImpl, compiled at: February 21, 1992 9:03:53 pm PST */ extern void XR←install←RealConvertImpl() { NoName←Q348(); } extern void XR←run←RealConvertImpl() { XR←Start(&globalframe); }