/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */
/* time: April 21, 1992 12:40:51 pm PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: XlAsciiImpl, module: XlAsciiImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [979983888,1315612870] XlAsciiImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef W8 *W8Pt;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static void NoName←Q660();
static void XlAsciiImpl←P0();
static word AsciiFromKeySym←P60();
static word KeySymFromAscii←P120();
static void Convert←P180();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\072\151\136\020\300\116\152\250\306\100\164\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\351\237\222\220\300\366\064\160\223\100\150\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\003\153\243\146\300\005\107\115\327\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\100\164\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\072\360\036\365\300\334\030\146\334\100\150\000\000"};
static struct {
word f0[8]; word f8; word f9; word f10;
word f11; word f12; word f13; word f14;
word f15[5];
} globalframe = {
{0}, (word) Convert←P180, 0, (word) KeySymFromAscii←P120,
0, (word) AsciiFromKeySym←P60, 0, (word) XlAsciiImpl←P0,
{0}
};
static void NoName←Q660()
{
register ptr gf←c037 = (ptr) &globalframe;
word var←c7300;
(void) XR←DeclareGlobalFrame((word) "XlAsciiImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c037)+56)
/* var←c7140 */ );
var←c7300 = (word) XR←ImportInterface((word) "KeyChars", (word) XR←GetTypeIndexS((word) (&string2)), 2);
(* (( (ptr) gf←c037)+16)/* var←c7172 */ ) = var←c7300;
(void) XR←ImportProcS(var←c7300, 67371265);
(void) XR←ImportProcS(var←c7300, 67371009);
var←c7300 = (word) XR←ImportInterface((word) "KeyMapping", (word) XR←GetTypeIndexS((word) (&string3)), 6);
(* (( (ptr) gf←c037)+18)/* var←c7236 */ ) = var←c7300;
(void) XR←ImportProcS(var←c7300, 67895555);
var←c7300 = (word) XR←ImportInterface((word) "Xl", (word) XR←GetTypeIndexS((word) (&string4)), 218);
(* (( (ptr) gf←c037)+17)/* var←c7204 */ ) = var←c7300;
(void) XR←ImportProcS(var←c7300, 67401729);
(void) XR←ImportProcS(var←c7300, 67401985);
var←c7300 = (word) XR←ExportInterface((word) "XlAscii", (word) XR←GetTypeIndexS((word) (&string5)), 3);
(* (( (ptr) gf←c037)+19)/* var←c7332 */ ) = var←c7300;
(void) XR←ExportProcS(var←c7300, (word) (( (bPt) gf←c037)+32)/* var←c7044 */ , 269484036);
(void) XR←ExportProcS(var←c7300, (word) (( (bPt) gf←c037)+48)/* var←c7108 */ , 67371265);
(void) XR←ExportProcS(var←c7300, (word) (( (bPt) gf←c037)+40)/* var←c7076 */ , 67371521);
}
static void XlAsciiImpl←P0(formal←c012, formal←c011)
word formal←c012;
word formal←c011;
{
/* XlAsciiImpl: */
}
static word AsciiFromKeySym←P60(keysym←v2856)
word keysym←v2856;
{
register ptr gf←c7364 = (ptr) &globalframe;
word char←v2900;
/* AsciiFromKeySym: */
SOURCE(190, 150)
SOURCE(190, 150)
char←v2900 = 0;
SOURCE(269, 38)
{
word pd6;
pd6 = (* (( (ptr) (* (( (ptr) gf←c7364)+16)/* var←c7172 */ ))+4) );
char←v2900 = (word) ( *( (fPt) ((* (ptr) pd6 ))))(keysym←v2856, pd6);
};
SOURCE(309, 31)
if ((char←v2900 > 127)) {
SOURCE(331, 9)
char←v2900 = 0;
};
SOURCE(190, 150)
return(char←v2900);
}
static word KeySymFromAscii←P120(char←v2960)
word char←v2960;
{
register ptr gf←c7396 = (ptr) &globalframe;
word keysym←v3004;
/* KeySymFromAscii: */
SOURCE(347, 112)
SOURCE(421, 38)
{
word pd7;
pd7 = (* (( (ptr) (* (( (ptr) gf←c7396)+16)/* var←c7172 */ ))+5) );
keysym←v3004 = (word) ( *( (fPt) ((* (ptr) pd7 ))))(char←v2960, pd7);
};
SOURCE(347, 112)
return(keysym←v3004);
}
static void Convert←P180(formal←c036, connection←v3064, keyCode←v3092, state←v3120, matchKeys←v3148)
word formal←c036;
word connection←v3064;
word keyCode←v3092;
word state←v3120;
word matchKeys←v3148;
{
register ptr gf←c7428 = (ptr) &globalframe;
word char←v3276;
word keysym←v3304;
word matched←v3332;
word isModifier←v3360;
word modmap←v3388;
word mapping←v3416;
/* Convert: */
SOURCE(465, 1798)
SOURCE(465, 1798)
char←v3276 = 0;
SOURCE(465, 1798)
keysym←v3304 = 0;
SOURCE(465, 1798)
matched←v3332 = 0;
SOURCE(465, 1798)
isModifier←v3360 = 0;
SOURCE(710, 62)
{
word pd8;
pd8 = (* (( (ptr) (* (( (ptr) gf←c7428)+17)/* var←c7204 */ ))+125) );
modmap←v3388 = (word) ( *( (fPt) ((* (ptr) pd8 ))))(connection←v3064, pd8);
};
SOURCE(774, 63)
{
word pd9;
pd9 = (* (( (ptr) (* (( (ptr) gf←c7428)+17)/* var←c7204 */ ))+124) );
mapping←v3416 = (word) ( *( (fPt) ((* (ptr) pd9 ))))(connection←v3064, pd9);
};
SOURCE(839, 84)
{
register word m←v3460 = 0;
lab←L100004: ;
SOURCE(876, 47)
{
word limit10;
if (((* (( (ptr) (( (W8Pt) (( (ptr) modmap←v3388)+1))+(
limit10 = (* (ptr) modmap←v3388 ),
BCK(0, limit10)
)))+BCK(m←v3460, 8)) ) == keyCode←v3092)) {
SOURCE(906, 17)
isModifier←v3360 = 1;
SOURCE(925, 4)
goto lab←L100002;
};
};
if ((m←v3460 >= 7)) {
goto lab←L100001;
};
m←v3460 = (m←v3460 + 1);
goto lab←L100004;
lab←L100001: ;
lab←L100002: ;
};
SOURCE(942, 1321)
if ((0 != isModifier←v3360)) {
SOURCE(964, 50)
{
word pd11;
pd11 = (* (( (ptr) (* (( (ptr) gf←c7428)+18)/* var←c7236 */ ))+5) );
keysym←v3304 = (word) ( *( (fPt) ((* (ptr) pd11 ))))(mapping←v3416, keyCode←v3092, 0, pd11);
};
SOURCE(1016, 30)
char←v3276 = (word) AsciiFromKeySym←P60(keysym←v3304);
}
else {
SOURCE(1055, 1216)
{
word ks0←v3504;
word ks1←v3532;
word ks2←v3560;
word ks3←v3588;
SOURCE(1057, 58)
{
word pd12;
pd12 = (* (( (ptr) (* (( (ptr) gf←c7428)+18)/* var←c7236 */ ))+5) );
ks0←v3504 = (word) ( *( (fPt) ((* (ptr) pd12 ))))(mapping←v3416, keyCode←v3092, 0, pd12);
};
SOURCE(1117, 58)
{
word pd13;
pd13 = (* (( (ptr) (* (( (ptr) gf←c7428)+18)/* var←c7236 */ ))+5) );
ks1←v3532 = (word) ( *( (fPt) ((* (ptr) pd13 ))))(mapping←v3416, keyCode←v3092, 1, pd13);
};
SOURCE(1177, 58)
{
word pd14;
pd14 = (* (( (ptr) (* (( (ptr) gf←c7428)+18)/* var←c7236 */ ))+5) );
ks2←v3560 = (word) ( *( (fPt) ((* (ptr) pd14 ))))(mapping←v3416, keyCode←v3092, 2, pd14);
};
SOURCE(1237, 58)
{
word pd15;
pd15 = (* (( (ptr) (* (( (ptr) gf←c7428)+18)/* var←c7236 */ ))+5) );
ks3←v3588 = (word) ( *( (fPt) ((* (ptr) pd15 ))))(mapping←v3416, keyCode←v3092, 3, pd15);
};
SOURCE(1297, 136)
{
register word list←v3632;
list←v3632 = matchKeys←v3148;
lab←L100008: ;
if ((list←v3632 != 0)) {
}
else {
goto lab←L100005;
};
SOURCE(1367, 66)
{
word var←c7268;
var←c7268 = (* (ptr) list←v3632 );
if ((((var←c7268 == ks0←v3504) || (var←c7268 == ks1←v3532)) || (var←c7268 == ks2←v3560)) || (var←c7268 == ks3←v3588)) {
SOURCE(1413, 20)
matched←v3332 = (* (ptr) list←v3632 );
SOURCE(1435, 4)
goto lab←L100006;
};
};
list←v3632 = (* (( (ptr) list←v3632)+1) );
goto lab←L100008;
lab←L100005: ;
lab←L100006: ;
};
if (((state←v3120 & 04) && (state←v3120 & 1))) {
SOURCE(1519, 12)
keysym←v3304 = ks3←v3588;
SOURCE(1533, 80)
if ((keysym←v3304 == 0)) {
SOURCE(1561, 12)
keysym←v3304 = ks1←v3532;
SOURCE(1575, 38)
if ((keysym←v3304 == 0)) {
SOURCE(1601, 12)
keysym←v3304 = ks0←v3504;
};
};
SOURCE(1618, 27)
char←v3276 = (word) AsciiFromKeySym←P60(ks1←v3532);
SOURCE(1647, 26)
if (((char←v3276 - 65) <= 25)) {
char←v3276 = (char←v3276 - 64);
}
else {
/* removed bogus assignment */
};
}
else {
if (state←v3120 & 04) {
SOURCE(1697, 12)
keysym←v3304 = ks2←v3560;
SOURCE(1711, 38)
if ((keysym←v3304 == 0)) {
SOURCE(1737, 12)
keysym←v3304 = ks0←v3504;
};
SOURCE(1751, 27)
char←v3276 = (word) AsciiFromKeySym←P60(ks0←v3504);
SOURCE(1780, 26)
if (((char←v3276 - 65) <= 25)) {
char←v3276 = (char←v3276 - 64);
}
else {
/* removed bogus assignment */
};
}
else {
if (state←v3120 & 1) {
SOURCE(1828, 12)
keysym←v3304 = ks1←v3532;
SOURCE(1842, 148)
if ((keysym←v3304 != 0)) {
SOURCE(1869, 34)
char←v3276 = (word) AsciiFromKeySym←P60(ks1←v3532);
}
else {
SOURCE(1905, 27)
char←v3276 = (word) AsciiFromKeySym←P60(ks0←v3504);
SOURCE(1934, 24)
if (((char←v3276 - 97) <= 25)) {
char←v3276 = (char←v3276 - 32);
}
else {
/* removed bogus assignment */
};
SOURCE(1960, 30)
keysym←v3304 = (word) KeySymFromAscii←P120(char←v3276);
};
}
else {
if (state←v3120 & 02) {
SOURCE(2012, 107)
{
word char1←v3760;
SOURCE(2014, 34)
char1←v3760 = (word) AsciiFromKeySym←P60(ks0←v3504);
SOURCE(2050, 25)
if (((char1←v3760 - 97) <= 25)) {
char←v3276 = (char1←v3760 - 32);
}
else {
char←v3276 = char1←v3760;
};
SOURCE(2077, 40)
if ((char1←v3760 == char←v3276)) {
keysym←v3304 = ks0←v3504;
}
else {
keysym←v3304 = ks1←v3532;
};
};
}
else {
SOURCE(2133, 135)
{
word char1←v3804;
SOURCE(2135, 34)
char1←v3804 = (word) AsciiFromKeySym←P60(ks0←v3504);
SOURCE(2171, 12)
keysym←v3304 = ks0←v3504;
SOURCE(2185, 25)
if (((char1←v3804 - 65) <= 25)) {
char←v3276 = (char1←v3804 + 32);
}
else {
char←v3276 = char1←v3804;
};
SOURCE(2212, 51)
if ((char←v3276 != char1←v3804)) {
SOURCE(2233, 30)
keysym←v3304 = (word) KeySymFromAscii←P120(char←v3276);
};
};
};
};
};
};
};
};
/* removed tail goto */
(* (ptr) formal←c036 ) = char←v3276;
(* (( (ptr) formal←c036)+1) ) = keysym←v3304;
(* (( (ptr) formal←c036)+2) ) = matched←v3332;
(* (( (ptr) formal←c036)+3) ) = isModifier←v3360;
return;
}
/* file: XlAsciiImpl, module: XlAsciiImpl, compiled at: April 21, 1992 12:40:51 pm PDT */
extern void XR←install←XlAsciiImpl() {
NoName←Q660();
}
extern void XR←run←XlAsciiImpl() { XR←Start(&globalframe); }