// mips-linux-gnu-gcc -static -o soaps soaps.c -I ../new-parser/imps ../new-parser/imps/perms.c -lm
#include <perms.h>
extern FILE *OUTFILE;
#undef Spaces
#undef Space
#undef Rem
unsigned char *Source = NULL;
static const short Main[1+ 217 /*1:217*/] = {0,
1, 5, 14, 20, 26, 38, 43, 48, 54, 61, 68, 74, 79, 82, 84,
89, 96, 102, 108, 115, 122, 126, 0, 129, 133, 137, 142, 145, 152, 156,
161, 164, 168, 0, 171, 0, 178, 184, 185, 189, 190, 193, 196, 199, 0,
202, 205, 206, 208, 0, 211, 213, 215, 216, 219, 222, 225, 0, 228, 231,
236, 241, 244, 249, 0, 253, 259, 260, 264, 266, 267, 270, 271, 274, 277,
279, 280, 283, 286, 289, 292, 295, 298, 302, 305, 308, 311, 314, 317, 320,
324, 328, 332, 336, 340, 344, 348, 352, 355, 358, 0, 361, 363, 365, 373,
0, 381, 0, 385, 392, 393, 396, 397, 400, 403, 405, 406, 410, 0, 413,
418, 425, 432, 0, 435, 437, 0, 440, 445, 446, 450, 453, 456, 0, 459,
462, 463, 0, 469, 472, 473, 475, 0, 477, 489, 499, 506, 0, 509, 511,
512, 517, 0, 520, 0, 530, 534, 535, 538, 539, 0, 543, 546, 547, 0,
558, 565, 566, 571, 572, 576, 579, 0, 585, 587, 588, 591, 0, 594, 597,
0, 600, 602, 603, 608, 609, 614, 615, 618, 0, 620, 622, 623, 627, 628,
631, 634, 637, 0, 640, 646, 0, 651, 656, 657, 660, 661, 665, 0, 667,
0, 670, 674, 675, 678, 681, 683};
static const short Sub[2+ 683 /*2:684*/] = {0,0,
4119, 4288, -8192, 0, 4149, 4168, 4197, 4166, 4286,
4119, 4230, -8192, 0, 1, 8200, 24576, 4230, -8192,
0, 8, 8221, 24576, 16384, -8192, 0, 15, 8204,
20480, 16384, 4202, 21, 8244, 4168, 4197, 4166, -8192,
0, 4154, 4246, -20480, -8192, 0, 4290, 4154, 4295,
-20480, 0, 23, 8223, 4255, -8192, -20480, 0, 4208,
4271, 4212, -4096, 4261, -8192, 0, 30, 8197, -4096,
4261, -8192, -20480, 0, 35, 8196, 20480, -8192, -16384,
0, 41, 8198, 4215, -8192, 0, 4130, 4096, 0,
4225, 0, 45, 8199, -8192, -20480, 0, 4309, 50,
8201, 4239, -8192, -20480, 0, 57, -20480, 8202, 12288,
-8192, 0, 65, 8203, 4232, -8192, -20480, 0, 71,
77, 8193, 8205, -8192, -20480, 0, 85, 93, 8206,
8207, -8192, -20480, 0, 101, 8257, -32768, 0, -12288,
-8192, 0, 4202, 4134, 4141, 0, 103, 8246, 4143,
0, 106, 8208, 12288, 4141, 0, 116, 8209, 0,
123, 8210, 4136, 4168, 4197, 4166, 0, 130, 8211,
20480, 0, 15, 8204, 20480, 16384, 0, 136, 8212,
0, 141, 8213, 4146, 0, 149, 8214, 0, 8292,
4220, 154, 8245, 8192, 4132, 0, 8292, 4220, 154,
8245, 8192, 4132, 0, 4136, 4168, 4197, 4166, 0,
156, 8247, 0, 21, 8244, 0, 159, 8248, 0,
103, 8246, 0, 162, 8215, 4119, 0, 12288, 0,
-4096, 4204, 0, 12288, 0, 136, 8212, 0, 166,
8216, 0, 169, 8218, 0, 175, 8217, 0, 182,
8219, 0, 188, 8220, 0, 196, 188, 8194, 8220,
0, 71, 188, 8193, 8220, 0, 201, 8222, 0,
206, 201, 8195, 8222, 0, 211, 8224, 4161, 0,
218, 8249, 12288, 220, 8250, 8271, 0, 222, 8225,
8226, 0, 232, 8226, 0, 4172, 4197, 4166, 0,
237, 8251, 0, 239, 8252, 0, 241, 8253, 0,
237, 8251, 0, 103, 8246, 0, 239, 8252, 0,
243, 8254, 0, 245, 8255, 0, 248, 8256, 0,
250, 8257, 8257, 0, 101, 8257, 0, 253, 8258,
0, 256, 8259, 0, 258, 8260, 0, 260, 8261,
0, 263, 8262, 0, 21, 8244, 4168, 0, 266,
8263, 4168, 0, 269, 8264, 4168, 0, 271, 8267,
4168, 0, 273, 8265, 4168, 0, 276, 8266, 4168,
0, 278, 8268, 4168, 0, 281, 8272, 4168, 0,
162, 8215, 0, 283, 8227, 0, 154, 8245, 0,
12288, 0, 4202, 0, 218, 8249, 4168, 4197, 4166,
220, 8250, 0, 248, 8256, 4168, 4197, 4166, 248,
8256, 0, -4096, 4204, 4206, 0, 218, 8249, 4168,
4197, 4166, 220, 8250, 0, 286, 8270, 4202, 0,
288, 8231, 0, 297, 8232, 0, 304, 8233, 0,
30, 8197, -20480, 0, 20480, -16384, 0, 312, 8234,
8199, -20480, 0, 319, 8234, 8207, 28672, 24576, 20480,
0, 329, 8234, 8235, 28672, 24576, 20480, 0, 24576,
28672, 0, 12288, 0, -4096, 4223, 0, 218, 8249,
12288, 220, 8250, 0, 248, -8191, -28672, 0, 336,
-24576, 0, 248, -28672, 0, 339, -28672, 0, 347,
8237, 4119, 0, 12288, 103, 8246, 4236, 4234, 0,
281, 8269, 4232, 0, 12288, 0, -4096, 0, 352,
8238, -4096, 218, 8249, 4283, 4246, 4279, 4281, 220,
8250, 0, 30, 8197, -4096, 4253, 218, 8249, -4096,
220, 8250, 0, 4246, 218, 8249, -4096, 220, 8250,
0, 232, 8226, 0, 352, 8238, 0, 359, 8225,
4244, 4249, 0, 4163, 4305, 0, 4305, 218, 8249,
4168, 4197, 4166, 220, 8250, 4251, 0, 281, 8269,
4249, 4251, 0, 286, 8270, -4096, 0, 4305, 4259,
4257, 0, 281, 8269, 4255, 0, 218, 8249, 4168,
12288, 154, 8245, 4168, 12288, 220, 8250, 0, 218,
8249, 4265, 4305, 4263, 220, 8250, 0, 281, 8269,
4265, 4305, 4263, 0, 4271, 232, 8226, 0, 4154,
4163, 0, 50, 8201, 4269, 232, 8226, 0, 359,
8225, 0, 77, 8205, 0, 4154, 4274, 0, 365,
8239, 0, 368, 8240, 0, 281, 8269, 0, 218,
8249, -4096, 220, 8250, 0, 4277, 4283, 4246, 4279,
4281, 0, 50, 8201, 0, 4154, 0, 372, 8241,
0, 4149, 4168, 4197, 4166, 0, 377, 8228, 0,
381, 8229, 0, 387, 8230, 0, 288, 8231, 0,
359, 8225, -4096, 4259, 4302, 0, 4305, 4300, 4298,
-8192, 0, 281, 8269, 4305, 4300, 4298, 0, 21,
8244, 12288, 0, 21, 8244, -32768, 0, -8192, 0,
-4096, 4307, 0, 281, 8269, -4096, 4307, 0, 377,
8228, 0, 288, 8231, 0, 387, 8230, 0};
static const unsigned char Literal[1+ 396 /*1:396*/] = {0,
6, 102, 105, 110, 105, 115, 104, 6, 114, 101, 112, 101, 97, 116, 5,
99, 121, 99, 108, 101, 1, 61, 6, 115, 119, 105, 116, 99, 104, 4,
115, 112, 101, 99, 5, 98, 101, 103, 105, 110, 3, 101, 110, 100, 4,
108, 105, 115, 116, 6, 114, 101, 99, 111, 114, 100, 7, 99, 111, 110,
116, 114, 111, 108, 5, 102, 97, 117, 108, 116, 5, 115, 104, 111, 114,
116, 7, 114, 111, 117, 116, 105, 110, 101, 7, 116, 114, 117, 115, 116,
101, 100, 7, 112, 114, 111, 103, 114, 97, 109, 1, 42, 2, 45, 62,
9, 112, 114, 105, 110, 116, 116, 101, 120, 116, 6, 114, 101, 116, 117,
114, 110, 6, 114, 101, 115, 117, 108, 116, 5, 115, 116, 97, 114, 116,
4, 115, 116, 111, 112, 7, 109, 111, 110, 105, 116, 111, 114, 4, 101,
120, 105, 116, 1, 58, 2, 61, 61, 2, 60, 45, 3, 97, 110, 100,
2, 105, 102, 5, 119, 104, 105, 108, 101, 6, 117, 110, 108, 101, 115,
115, 5, 117, 110, 116, 105, 108, 7, 105, 110, 116, 101, 103, 101, 114,
4, 98, 121, 116, 101, 4, 114, 101, 97, 108, 4, 108, 111, 110, 103,
6, 115, 116, 114, 105, 110, 103, 1, 40, 1, 41, 9, 97, 114, 114,
97, 121, 110, 97, 109, 101, 4, 110, 97, 109, 101, 1, 43, 1, 45,
1, 92, 1, 38, 2, 33, 33, 1, 33, 2, 42, 42, 2, 47, 47,
1, 47, 1, 46, 2, 60, 60, 2, 62, 62, 2, 60, 61, 1, 60,
1, 35, 2, 62, 61, 1, 62, 2, 92, 61, 1, 44, 2, 111, 114,
1, 95, 8, 101, 120, 116, 101, 114, 110, 97, 108, 6, 115, 121, 115,
116, 101, 109, 7, 100, 121, 110, 97, 109, 105, 99, 6, 111, 102, 108,
105, 115, 116, 9, 111, 102, 112, 114, 111, 103, 114, 97, 109, 6, 111,
102, 102, 105, 108, 101, 2, 33, 42, 7, 99, 111, 109, 109, 101, 110,
116, 4, 101, 108, 115, 101, 6, 102, 111, 114, 109, 97, 116, 5, 97,
114, 114, 97, 121, 2, 102, 110, 3, 109, 97, 112, 4, 116, 104, 101,
110, 3, 111, 119, 110, 5, 99, 111, 110, 115, 116, 9, 101, 120, 116,
114, 105, 110, 115, 105, 99};
static const unsigned char Sflags[1+ 80 /*1:80*/] = {0,
3, 3, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 1, 1, 1, 1, 4, 0, 4, 0, 4, 0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static unsigned char Keysyms[1+ 381 /*1:381*/] = {0,
5, 83, 72, 79, 82, 84, 4, 66, 89, 84, 69, 4, 76, 79, 78, 71, 5, 66, 69,
71, 73, 78, 4, 83, 80, 69, 67, 3, 69, 78, 68, 4, 76, 73, 83, 84, 6, 70,
73, 78, 73, 83, 72, 6, 82, 69, 67, 79, 82, 68, 7, 67, 79, 78, 84, 82, 79,
76, 5, 70, 65, 85, 76, 84, 5, 67, 89, 67, 76, 69, 7, 82, 79, 85, 84, 73,
78, 69, 7, 84, 82, 85, 83, 84, 69, 68, 7, 80, 82, 79, 71, 82, 65, 77, 9,
80, 82, 73, 78, 84, 84, 69, 88, 84, 6, 82, 69, 84, 85, 82, 78, 6, 82, 69,
83, 85, 76, 84, 5, 83, 84, 65, 82, 84, 4, 83, 84, 79, 80, 7, 77, 79, 78,
73, 84, 79, 82, 4, 69, 88, 73, 84, 3, 65, 78, 68, 2, 73, 70, 6, 85, 78,
76, 69, 83, 83, 5, 87, 72, 73, 76, 69, 5, 85, 78, 84, 73, 76, 7, 73, 78,
84, 69, 71, 69, 82, 6, 82, 69, 80, 69, 65, 84, 4, 82, 69, 65, 76, 6, 83,
87, 73, 84, 67, 72, 6, 83, 84, 82, 73, 78, 71, 5, 65, 82, 82, 65, 89, 4,
78, 65, 77, 69, 2, 79, 82, 3, 79, 87, 78, 5, 67, 79, 78, 83, 84, 9, 69,
88, 84, 82, 73, 78, 83, 73, 67, 8, 69, 88, 84, 69, 82, 78, 65, 76, 6, 83,
89, 83, 84, 69, 77, 7, 68, 89, 78, 65, 77, 73, 67, 2, 79, 70, 4, 70, 73,
76, 69, 7, 67, 79, 77, 77, 69, 78, 84, 4, 69, 76, 83, 69, 6, 70, 79, 82,
77, 65, 84, 2, 70, 78, 3, 77, 65, 80, 4, 84, 72, 69, 78, 5, 82, 69, 65,
76, 83, 6, 78, 79, 82, 77, 65, 76, 1, 61, 1, 58, 2, 45, 62, 2, 61, 61,
2, 60, 45, 1, 40, 1, 41, 1, 43, 1, 45, 1, 92, 1, 38, 2, 33, 33, 1,
33, 1, 42, 2, 47, 47, 1, 47, 1, 46, 2, 60, 60, 2, 62, 62, 2, 60, 61,
1, 60, 2, 62, 61, 1, 62, 1, 35, 2, 92, 61, 1, 44, 1, 95, 1, 32, 1,
44};
static const short Keyword[1+ 80 /*1:80*/] = {0,
0, 6, 11, 16, 22, 27, 31, 36, 43, 50, 58, 64, 70, 78,
86, 94, 104, 111, 118, 124, 129, 137, 142, 146, 149, 156, 162, 168,
176, 183, 188, 195, 202, 208, 213, 216, 220, 226, 236, 245, 252, 260,
263, 268, 276, 281, 288, 291, 295, 300, 306, 313, 315, 317, 320, 323,
326, 328, 330, 332, 334, 336, 338, 341, 343, 345, 348, 350, 352, 355,
358, 361, 363, 366, 368, 370, 373, 375, 377, 379};
static const unsigned char Kflags[1+ 80 /*1:80*/] = {0,
144, 144, 144, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 144,
128, 128, 128, 128, 128, 128, 144, 128, 160, 130, 130, 130, 130, 128,
128, 128, 128, 128, 145, 129, 128, 144, 144, 144, 144, 144, 144, 145,
128, 128, 162, 129, 129, 129, 160, 144, 128, 8, 8, 8, 8, 8,
4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 8, 8, 8, 8, 8, 64, 0, 0, 0};
static unsigned char Isolatebrackets = 0;
static unsigned char Leaveblanks = 0;
static unsigned char Sepblocks = 1;
static unsigned char Indentblocks = 1;
static unsigned char Splitkeywords = 0;
static unsigned char Packnames = 0;
static unsigned char Splitstats = 0;
static unsigned char Commentsnormal = 0;
static unsigned char Breakcomments = 1;
static unsigned char Leavestars = 1;
static unsigned char Justifyall = 0;
static unsigned char Labelsrelative = 0;
static unsigned char Splitconds = 1;
static unsigned char Decsrelative = 1;
static unsigned char Spacelists = 1;
static unsigned char Spaceequals = 1;
static unsigned char Isolateloops = 1;
static unsigned char Extramargin = 0;
static unsigned char Leaveowns = 0;
static unsigned char Commentsrelative = 1;
static unsigned char Extendcomments = 1;
static unsigned char Mi = 3;
static unsigned char Ll = 72;
static unsigned char Ct = 40;
static unsigned char Ml = 40;
static unsigned char Commentextension = 5;
static unsigned char Extnum = 2;
static unsigned char Initialmargin = 7;
static unsigned char Secondarymargin = 3;
static unsigned char Commentlimit = 20;
static unsigned char Commentline = 120;
static short Safetyfactor = 5;
static int Deltamargin = 3;
static int Linelength = 70;
static int Commenttab = 40;
static int Level = 1;
static int Mlimit = 0;
static int Secmargin = 3;
static unsigned char Commentflag;
static unsigned char Cmode;
static unsigned char Loopflag;
static int Linesize;
static int Cs;
static int Disp;
static int D;
static int Rmargin;
static int Firstdisp;
static int Size;
static int Cstart;
static int Linebase;
static int Fullline;
//void Prompt(_imp_string S);
//void Send(_imp_string S);
//void List(_imp_string S);
//void Destroy(_imp_string S);
//void Rename(_imp_string S);
static int Parse(int Ep);
static _imp_string Input;
static _imp_string Output;
static _imp_string Optionfile;
static _imp_string St;
static _imp_string Oplist;
static int Spt;
static int Sad;
static int S;
static unsigned char Spaces;
static unsigned char Mode;
static unsigned char Ok;
static unsigned char Thissep;
static const int Lasttext = 51;
//static int Header;
//static int Segs;
static int Strings[1+ 100 /*1:100*/];
static int Commentlength;
static short Rem[1+ 4 /*1:4*/];
static unsigned char Symfile[301 /*0:300*/];
static unsigned char Tlength[1+ 100 /*1:100*/];
static int Rec[1+ 100 /*1:100*/];
static unsigned char Status;
static unsigned char Options;
static unsigned char Lastsep;
static unsigned char Flag;
static unsigned char Pmode;
static unsigned char Quotes = 0;
static unsigned char Ownflag = ';';
static int Nval;
static int Currin;
static int Outstart, Currout;
static int Slength;
static int Limit;
static int Margin;
static int Inbase;
static int Statsize;
static int Stat;
static int Keybase;
static int Textbase;
static int J;
static int Sn;
static int Rp;
static int Rplim;
static int Rpinc;
static int Maxmargin;
static int Endoffile;
static const int Ccc = 0x2025430A;
static const int Connektep = 1;
static const int Createep = 162;
static const int Readep = 7;
static const int Infoep = 5;
static const int Changeep = 6;
static void Setupfiles(_imp_string *S);
static void Closefiles(void);
static void Setoptions(void);
//extern void Cherish(_imp_string S);
static void Continue(void) {
auto void Adjust(void);
int Hold[1+ 4 /*1:4*/];
int J;
int K;
int L;
int M;
int N;
int Z;
int Lim;
int Xes;
//%BYTEINTEGERARRAYFORMAT NFM(1 : 4)
unsigned char *Nest;
unsigned char S;
unsigned char Cflag;
Nest = ((unsigned char *)&Nval)-1; // NEST == ARRAY(ADDR(NVAL),NFM)
Thissep = '\n';
Lim = Margin + Safetyfactor + Secmargin;
Z = Slength + Currout;
if (Z < Limit || (Z - Safetyfactor - Limit < -4 && Rec[Rp + 1] == 0)) return;
Xes = Z - Limit;
for (J = 1; J <= 4; J++) Hold[J] = Nest[J] + Currout - Linebase;
if (Lastsep == ';') {
N = Currout;
Quotes = 0;
do {
N--;
S = *Byteinteger(N);
if (S == '\'') Quotes = Quotes ^ 1;
} while (S != ';' || Quotes != 0);
*Byteinteger(N) = '\n';
Limit = N + Linelength;
Linebase = N;
K = Currout + 80;
M = K;
for (L = N + 3; L <= Currout; L++) {
K++;
*Byteinteger(K) = *Byteinteger(L);
}
for (L = 1; L <= Margin; L++) {
N++;
*Byteinteger(N) = ' ';
}
for (L = M + 1; L <= K; L++) {
N++;
*Byteinteger(N) = *Byteinteger(L);
}
Currout = N;
Lastsep = '\n';
Adjust();
if (Currout + Slength < Limit) return;
}
if (Nest[4] != 0 && Rec[Rem[4] - 1] >= 4) Nest[3] = 0;
Cflag = 0;
for (J = 1; J <= 4; J++) {
N = Nest[J];
if (N > Lim) {
N += Linebase;
if (N < Currout) {
Cflag = 1;
break;
}
}
}
if (Cflag) {
if (Nest[J] - Margin - Secmargin - Safetyfactor < Xes) {
K = J;
while (K < 4) {
K++;
if (Nest[K]) {
Cflag = 0;
break;
}
}
if (!Cflag) {
L = Nest[K] + Linebase;
if (Nest[K] > Lim && L < Currout) {
J = K;
N = L;
}
}
}
if (J == 4 && Rem[3] == Rem[4] - 1) {
J = 3;
N = Nest[3] + Linebase;
}
Lim = Nest[J] + Safetyfactor + Secmargin;
K = Currout + 80;
M = K;
for (L = N + 1; L <= Currout; L++) {
K++;
*Byteinteger(K) = *Byteinteger(L);
}
#ifdef USE_MCODE
//*L_1,N
//*MVC_1(4,1),CCC
//*LA_1,4(1)
//*ST_1,CURROUT
//*ST_1,LINEBASE
#else
#endif
for (J = 1; J <= Margin + Secmargin; J++) {
Currout++;
*Byteinteger(Currout) = ' ';
}
if (*Byteinteger(M + 1) == ' ') M++;
if (*Byteinteger(M + 1) != '%') {
Currout++;
*Byteinteger(Currout) = '%';
}
for (L = M + 1; L <= K; L++) {
Currout++;
*Byteinteger(Currout) = *Byteinteger(L);
}
} else {
Lim = Currout - Linebase + Safetyfactor;
#ifdef USE_MCODE
//*L_1,CURROUT
//*MVC_1(4,1),CCC
//*LA_1,4(1)
//*ST_1,CURROUT
//*ST_1,LINE BASE
#else
#endif
for (J = 1; J <= Margin + Secmargin; J++) {
Currout++;
*Byteinteger(Currout) = ' ';
}
Pmode = 128;
}
Limit = Linebase + Linelength;
Statsize = Statsize - Linelength + Margin;
if (Statsize + Margin >= Linelength) Rplim += Rpinc;
Nval = 0;
void Adjust(void) {
for (J = 1; J <= 4; J++)
if (Nest[J] <= Lim)
Nest[J] = 0;
else
Nest[J] = Hold[J] - Currout + Linebase;
}
}
static void Break(void) {
if (*Byteinteger(Currout) != ';') Currout -= 2;
*Byteinteger(Currout) = '\n';
Size = 0;
Linebase = Currout;
Limit = Linebase + Linesize;
Nval = 0;
}
void Soap(_imp_string Files) {
static int Movex = 0xD2002001;
static int Movey = 0x10010000;
auto void Percent(void);
auto void Space(void);
int *Midmargin;
int N;
int P;
int K;
int M;
int Z;
//%BYTEINTEGERARRAYFORMAT NFM(1 : 4)
unsigned char *Nest;
Printstring(_imp_str_literal("SOAP"));
Newline();
Nest = ((unsigned char *)&Nval)-1; //NEST == ARRAY(ADDR(NVAL),NFM)
Setupfiles(&Files);
if (!Ok) return;
Setoptions();
if (!Ok) return;
Midmargin = &Margin;
if (!Commentsrelative) Midmargin = &Rmargin;
Top:;
for (;;) {
Nval = 0;
Loopflag = 0;
Rp = 0;
Spt = 0;
Mode = 0;
Status = 0;
Sad = Textbase;
if (Lastsep != ';') Limit = Currout + Linelength;
Inbase = Currin;
if (Parse(0)) {
Owns:
J = Currin;
Quotes = 0;
K = 0;
do {
K++;
J++;
S = *Byteinteger(J);
if (S == '\'') Quotes = Quotes ^ 1;
} while ((S != '\n' && S != ';') || (Quotes != 0 && K <= 300));
Slength = J - Currin;
if (Currout + Slength > Limit && Lastsep == ';') {
Break();
Stat = Currout + Margin;
for (J = 1; J <= Margin; J++) {
Currout++;
*Byteinteger(Currout) = ' ';
}
}
if (!Ownflag) {
Ownflag = ';';
if (Currout + Slength + Safetyfactor > Limit) {
#ifdef USE_MCODE
//*L_1,CURROUT
//*MVC_1(4,1),CCC; ! PUSH IN CONTINUATION
//*LA_1,4(1)
//*ST_1,CURROUT
//*ST_1,LINE BASE
#else
#endif
}
}
for (J = 1; J <= Slength; J++) {
Currin++;
Currout++;
*Byteinteger(Currout) = *Byteinteger(Currin);
}
Lastsep = *Byteinteger(Currin);
if (Lastsep == ';') {
*Byteinteger(Currout + 1) = ' ';
*Byteinteger(Currout + 2) = ' ';
Currout += 2;
} else
Linebase = Currout;
} else {
Pmode = 128;
Statsize = Currin - Inbase;
if (Statsize + Margin > Linelength) {
Rpinc = Rp / (Statsize / (Linelength - Margin));
Rplim = Rpinc;
} else
Rplim = Rp;
if ((Status & 11) != 0 && Lastsep == ';') {
Lastsep = '\n';
Break();
}
if (Status & 136) {
if ((Leaveblanks != 0 && Thissep != ';') ||
((Status & 128) != 0 && Sepblocks != 0)) {
Null:;
Currout++;
*Byteinteger(Currout) = '\n';
Linebase = Currout;
}
if ((Status & 8) != 0 && Rp <= 1) goto Top;
}
Rp = 0;
if (Loopflag != 0 && (Status & 1) != 0 &&
*Byteinteger(Currout - 1) != '\n') {
Currout++;
*Byteinteger(Currout) = '\n';
Linebase = Currout;
Limit++;
}
if (Status & 2) {
if (Extramargin != 0 && (Status & 4) != 0) Status = Status | 64;
Level = (unsigned)Level >> 1;
if (!Level) Level = 1;
if (!(Mlimit & 1)) Margin -= Deltamargin;
Mlimit = (unsigned)Mlimit >> 1;
if (Margin < 0) Margin = 0;
}
if (Lastsep != ';') Stat = Currout + Margin;
while (Rec[Rp + 1] == 100) {
Rp++;
if (Lastsep == ';' || Lastsep == ':') {
N = -2;
if (Lastsep == ':') N = 1;
Currout += N;
*Byteinteger(Currout) = '\n';
Linebase = Currout;
Limit = Currout + Linelength;
Stat = Currout + Margin;
Lastsep = '\n';
}
if (Labelsrelative != 0 && Lastsep != ':') {
N = Level;
M = Margin;
if (Extramargin != 0 && Level == 1) M += Firstdisp;
for (;;) {
M -= Deltamargin;
if (N & 1) break;
N = (unsigned)N >> 1;
}
while (M > 0) {
M--;
Currout++;
*Byteinteger(Currout) = ' ';
}
}
for (;;) {
Rp++;
N = Rec[Rp];
if (!N) break;
if (N < 0)
Sn = Strings[-N];
else
Sn = Keyword[N] + Keybase;
for (J = Sn + 1; J <= Sn + *Byteinteger(Sn); J++) {
Currout++;
*Byteinteger(Currout) = *Byteinteger(J);
}
}
if (Currout > Stat && (Status & 16) == 0) {
Currout++;
*Byteinteger(Currout) = '\n';
Linebase = Currout;
Limit = Currout + Linelength;
Stat = Currout + Margin;
}
Lastsep = ':';
}
if (Status & 8) {
Rp = 0;
goto Null;
}
if (Status & 16) {
Rp++;
Disp = Rec[Rp];
D = 0;
Cmode = 0;
J = Currin;
while (*Byteinteger(J) != '\n' && *Byteinteger(J) != ';') J++;
Cs = J - Currin;
if (!Commentflag)
Cstart = Commenttab;
else if (Commentsnormal) {
Cmode = 1;
Cstart = Margin;
} else if (Lastsep == ';')
Cstart = Commenttab;
else if (!Disp)
Cstart = 0;
else if (Disp <= *Midmargin && (Status & 32) == 0)
Cstart = Margin;
else
Cstart = Commenttab;
if ((Status & 32) != 0 && Leavestars != 0) Cstart = 0;
Size = Currout - Linebase;
if (Lastsep == ';') {
if (*Byteinteger(Currout) == '\n') {
Loopflag = 1;
do
Linebase--;
while (*Byteinteger(Linebase) != '\n');
Size = Currout - Linebase;
}
Currout -= 2;
Size -= 2;
if (Extendcomments != 0 && Cstart < Size) {
P = Cstart;
N = Extnum;
for (;;) {
if (N <= 0) break;
Cstart += Commentextension;
if (Cstart >= Size) break;
N--;
}
if (N <= 0 || Cs + Cstart > Commentline) Cstart = P;
}
if (Cstart < Size)
if (Cmode)
Cstart = 0;
else
Break();
else {
D = Commentline - Cstart - Cs;
if (D < 0 && Breakcomments == 0) {
Cstart = Linesize - Cs;
Break();
D = 0;
}
}
} else {
D = Commentline - Cstart - Cs;
if (D < 0 && Breakcomments == 0) {
Cstart = Commentline - Cs;
D = 0;
}
}
for (;;) {
N = Cstart - Size;
while (N > 0) {
N--;
Currout++;
*Byteinteger(Currout) = ' ';
}
Currout++;
*Byteinteger(Currout) = '!';
if (Status & 32) {
Currout++;
*Byteinteger(Currout) = '*';
}
P = J;
if (D < 0) {
P = J + D;
while (*Byteinteger(P) != ' ' && *Byteinteger(P) != ',' &&
*Byteinteger(P) != '.' && P > Currin)
P--;
P--;
if (P == Currin) P = J + D;
}
for (K = Currin + 1; K <= P; K++) {
Currout++;
*Byteinteger(Currout) = *Byteinteger(K);
}
Currin = P;
if (D >= 0) break;
Currout++;
*Byteinteger(Currout) = '\n';
Size = 0;
D += Linelength - Margin;
}
*Byteinteger(Currout) = '\n';
if (Loopflag) {
Loopflag = 0;
Currout++;
*Byteinteger(Currout) = '\n';
}
Size = 0;
Linebase = Currout;
Lastsep = '\n';
} else {
N = 0;
if (Status & 64) {
N = Deltamargin;
if (Extramargin) N = Margin;
}
Stat -= N;
while (Currout < Stat) {
Currout++;
*Byteinteger(Currout) = ' ';
}
if (Lastsep != ';') Limit = Currout + Linelength - Margin + N;
for (;;) {
Rp++;
N = Rec[Rp];
if (!N) break;
if (N > 0) {
Sn = Keyword[N] + Keybase;
Flag = Kflags[N];
Z = Sflags[N];
Slength = *Byteinteger(Sn);
} else {
Sn = Strings[-N];
Flag = 0;
Z = 0;
Slength = Tlength[-N];
}
if (Rp >= Rplim || (Slength + Currout > Limit && N <= Lasttext))
Continue();
if (Z) {
Nest[Z] = Currout - Linebase;
Rem[Z] = Rp;
}
if ((Flag & Options & 15) != 0 || ((Pmode ^ Flag) & 128) == 0)
Space();
if (Flag & Pmode) Percent();
#ifdef USE_MCODE
//*L_1,SN
//*L_2,CURROUT
//*SLR_3,3
//*IC_3,0(1)
//*EX_3,MOVEX
//*AR_2,3
//*ST_2,CURROUT
#else
for (J = Sn + 1; J <= Sn + *Byteinteger(Sn); J++) {
Currout++;
*Byteinteger(Currout) = *Byteinteger(J);
}
#endif
if (Flag & Options & 120) Space();
if (0 >= N || N > Lasttext) Pmode = 128;
}
if (!Ownflag) goto Owns;
Currout++;
*Byteinteger(Currout) = Thissep;
Lastsep = Thissep;
if (Loopflag != 0 && (Status & 2) != 0) {
Currout++;
*Byteinteger(Currout) = '\n';
}
if (Status & 1) {
Level = Level << 1;
if (Status & 128) Level = Level | 1;
Mlimit = Mlimit << 1;
if (Margin >= Maxmargin || (Indentblocks == 0 && (Status & 128) != 0))
Mlimit = Mlimit | 1;
if (Margin == 0 && Extramargin != 0)
Margin = Initialmargin;
else if (!(Mlimit & 1))
Margin += Deltamargin;
}
if (Lastsep == ';') {
*Byteinteger(Currout + 1) = ' ';
Currout += 2;
*Byteinteger(Currout) = ' ';
} else
Linebase = Currout;
if (Currin >= Endoffile || (Status & 7) == 7) break;
}
}
}
Closefiles();
return;
void Space(void) {
if (' ' != *Byteinteger(Currout) && *Byteinteger(Currout) != '\n' &&
*Byteinteger(Currout) != '(') {
Currout++;
*Byteinteger(Currout) = ' ';
Pmode = 128;
}
}
void Percent(void) {
if (Pmode) {
if (' ' != *Byteinteger(Currout) && *Byteinteger(Currout) != '\n' &&
*Byteinteger(Currout) != '(') {
Currout++;
*Byteinteger(Currout) = ' ';
}
Currout++;
*Byteinteger(Currout) = '%';
Pmode = 0;
}
}
}
static void Connekt(_imp_string File, int *Mode, int *Flag) {
int J;
J = 0;
//FDP(CONNEKTEP,FILE,MODE,ADDR(J),FLAG)
*Mode = J;
if (*Flag == 5) *Flag = 0;
}
static int Parse(int Entry) {
int Ss;
int Sp;
int Trp;
int Tpt;
int L;
unsigned char Modes;
int Put(void) {
Spt--;
Rp++;
Rec[Rp] = Spt;
Tlength[-Spt] = Slength;
Strings[-Spt] = Sad;
*String(Sad) = St;
Sad = Sad + 1 + *Byteinteger(Addr(St));
return (Spt);
}
void Sym(void) {
for (;;) {
Currin++;
S = *Byteinteger(Currin);
if ('A' > S || S > 'Z') Mode = 0;
if (S == '%')
Mode = 32;
else {
if (S != ' ') {
S += Mode;
if (S != 'C' + 32 || *Byteinteger(Currin + 1) != '\n') return;
Currin++;
Mode = 0;
}
Spaces = Packnames;
}
}
}
int Constant(void) {
int T;
int Lim;
int Cs;
Slength = 0;
St = _imp_str_literal("");
Sym();
while ('0' <= S && S <= '9' || S == '.' || S == '@') {
Cs = Currin;
St = _imp_join(St, Tostring(S));
Sym();
}
if (_imp_strcmp(St, _imp_str_literal("")) != 0) {
Currin = Cs;
return (Put());
}
if (S == 'M' || S == 'X' || S == 'B') {
St = Tostring(S);
T = Currin;
Sym();
if (S != '\'') {
Currin = T;
return (0);
}
}
Lim = Currin + 255;
while (S == '\'') {
do {
if (S == '\n' && Slength == 0) Slength = *Byteinteger(Addr(St));
St = _imp_join(St, Tostring(S));
Currin++;
S = *Byteinteger(Currin);
} while (S != '\'' && Currin <= Lim);
St = _imp_join(St, _imp_str_literal("'"));
Cs = Currin;
Sym();
}
if (!Slength) Slength = *Byteinteger(Addr(St));
if (_imp_strcmp(St, _imp_str_literal("")) != 0) {
Currin = Cs;
return (Put());
}
return (0);
}
int Name(void) {
int Z;
Sym();
if ('A' > S || S > 'Z') return (0);
St = _imp_str_literal("");
for (;;) {
Spaces = 1;
St = _imp_join(St, Tostring(S));
Z = Currin;
Sym();
if (('A' > S || S > 'Z') && ('0' > S || S > '9')) {
Slength = *Byteinteger(Addr(St));
Currin = Z;
return (Put());
}
if (!Spaces) St = _imp_join(St, _imp_str_literal(" "));
}
}
static int Bip_sw;
static void *Bip[16 /*0:15*/] = {
&&Bip_0, &&Bip_1, &&Bip_2, &&Bip_3, &&Bip_4, &&Bip_5,
&&Bip_6, &&Bip_7, &&Bip_8, &&Bip_9, &&Bip_10, &&Bip_11,
&&Bip_12, &&Bip_13, &&Bip_14, &&Bip_15,
};
Trp = Rp;
Tpt = Currin;
Modes = Mode;
Failure:;
Rp = Trp;
Currin = Tpt;
Mode = Modes;
Entry++;
Sp = Main[Entry];
if (!Sp) return (1);
Success:;
Sp++;
Ss = Sub[Sp];
if (!Ss) return (0);
goto *Bip[Bip_sw = (unsigned)Ss >> 12 & 15];
Bip_1:;
if (!Parse(Ss & 0xFFF)) goto Success;
goto Failure;
Bip_0:;
Ss = Ss & 0xFFF;
L = Literal[Ss];
{ int P;
for (P = Ss + 1; Ss <= Ss + L; Ss++) {
Sym();
if (S != Literal[P]) goto Failure;
}
}
goto Success;
Bip_15:;
if (Name()) goto Success;
goto Failure;
Bip_3:;
if (Constant()) goto Success;
goto Failure;
Bip_4:;
if (Isolateloops) Loopflag = 1;
goto Success;
Bip_5:;
Status = Status | 1;
goto Success;
Bip_6:;
Status = Status | 2;
goto Success;
Bip_7:;
Status = Status | 4;
goto Success;
Bip_8:;
if (Leaveowns != 0 && *Byteinteger(Currin) != '*') goto Failure;
Ownflag = 0;
Rp++;
Rec[Rp] = 0;
Thissep = '\n';
goto Success;
Bip_10:;
Inbase++;
Status = Status | 32;
Bip_9:;
Status = Status | 16;
Rp++;
Rec[Rp] = Currin - Inbase - 1;
goto Success;
Bip_11:;
if (Decsrelative) Status = Status | 64;
goto Success;
Bip_12:;
if (Extramargin) Status = Status | 64;
Status = Status | 128;
goto Success;
Bip_13:;
Status = Status | 8;
goto Success;
Bip_14:;
Sym();
if (S != '\n' && S != ';') goto Failure;
Thissep = S;
if (Splitstats) Thissep = '\n';
Rp++;
Rec[Rp] = 0;
goto Success;
Bip_2:;
Rp++;
Rec[Rp] = Ss & 0xFFF;
goto Success;
}
static void Create(_imp_string File, int *Size, int *Flag) {
*Size = 3;
//FDP(CREATEEP,FILE,SIZE,0,FLAG)
if (*Flag == 0 || *Flag == 3) Connekt(File, Size, Flag);
}
static void Compress(_imp_string File) {
//%INTEGER P, F, S, W, X, Y, Z
//FDP(READEP,FILE,0,ADDR(P),F)
//%IF F # 0 %THEN %RETURN
//FDP(INFOEP,FILE,ADDR(W),0,F)
//S = INTEGER(P); ! SIZE OF FILE
//S = (S+4095)>>12
//FDP(CHANGEEP,FILE,S-X,ADDR(S),F)
}
static int Filesize(_imp_string Fname) {
int Ch;
int Size = -1;
if (_imp_on_event(9))
goto Done;
Openinput(1, Fname);
Selectinput(1);
Size = 0;
for (;;) {
Readsymbol(&Ch);
if (Ch == -1)
break;
Size++;
}
Done:;
Closeinput();
Selectinput(0);
return (Size);
}
static void Setupfiles(_imp_string *S) {
_imp_string infile = *S;
int Flag;
int Size;
Ok = 0;
Input = infile; // _imp_str_literal("");
Output = _imp_str_literal("");
Optionfile = _imp_str_literal("");
//if (!_imp_resolve(*S, &Input, _imp_str_literal("/"), &Output)) Input = *S;
//if (!_imp_resolve(Input, &Input, _imp_str_literal(","), &Optionfile))
// Optionfile = _imp_str_literal("");
//if (_imp_strcmp(Output, _imp_str_literal(""))==0) Output = Input;
Size = Filesize(infile);
fprintf(stderr, "File size is %d bytes\n", Size);
Source = malloc(Size + 1);
Openinput(1, infile);
Selectinput(1);
Size = 0;
if (_imp_on_event(9))
goto Done;
for (;;) {
int Ch;
Readsymbol(&Ch);
if (Ch == -1)
break;
Source[Size] = Ch;
Size++;
}
Done:;
Source[Size] = '\0';
Closeinput();
Selectinput(0);
Flag=0;//FDP(7, INPUT, 0, ADDR(SIZE), FLAG)
Currin = (int)&Source; // won't work on 64-bit addressing systems
if (Flag) {
Printstring(_imp_join(_imp_str_literal("CANNOT CONNECT "), Input));
Printstring(_imp_str_literal(": "));
Write(Flag, 1);
Newline();
return;
}
Endoffile = Currin + Size;
while (*Byteinteger(Endoffile) != '\n') Endoffile--;
Printstring(infile);
fprintf(OUTFILE, ": %08x to %08x\n", Currin, Endoffile);
//Currout = (unsigned)((Size * 6) + 4095) >> 12;
//Segs = (unsigned)(Currout + 15) >> 4;
//Create(_imp_str_literal("SP#WORK"), &Currout, &Flag);
//if (Flag) {
// Printstring(_imp_str_literal("CANNOT CREATE WORK FILE"));
// Write(Flag, 1);
// Newline();
// return;
//}
Outstart = Currout = (int)malloc(Size*6 + 4096); // again 32-bit only
*Byteinteger(Currout) = '\n';
Ok = 1;
}
static void Closefiles(void) {
}
static void Setoptions(void) {
_imp_string S;
_imp_string T;
int J;
unsigned char Optflag;
void Line(_imp_string * S) {
int J;
if (!Optflag) return;
*S = _imp_str_literal("");
do {
for (;;) {
do
Readsymbol(&J);
while (J == ' ');
if (J == '\n') break;
*S = _imp_join(*S, Tostring(J));
}
} while (_imp_strcmp(*S, _imp_str_literal(""))==0);
}
void Set(_imp_string * S) {
_imp_string N;
_imp_string Opt;
int V;
int K;
int C;
int Num;
unsigned char Not;
static const _imp_string Param[1+ 31 /*1:31*/] = {_imp_str_literal(""),
_imp_str_literal("IB"), _imp_str_literal("LB"), _imp_str_literal("SB"),
_imp_str_literal("TB"), _imp_str_literal("SK"), _imp_str_literal("PN"),
_imp_str_literal("SS"), _imp_str_literal("CN"), _imp_str_literal("BC"),
_imp_str_literal("LS"), _imp_str_literal("JA"), _imp_str_literal("LR"),
_imp_str_literal("SC"), _imp_str_literal("DR"), _imp_str_literal("SL"),
_imp_str_literal("SE"), _imp_str_literal("IL"), _imp_str_literal("EM"),
_imp_str_literal("LO"), _imp_str_literal("CR"), _imp_str_literal("EC"),
_imp_str_literal("MI"), _imp_str_literal("LL"), _imp_str_literal("CT"),
_imp_str_literal("ML"), _imp_str_literal("CE"), _imp_str_literal("XN"),
_imp_str_literal("IM"), _imp_str_literal("SM"), _imp_str_literal("CL"),
_imp_str_literal("LC")};
static int Params = 31;
static int Bools = 21;
Opt = *S;
Not = 1;
Num = 0;
if (_imp_resolve(*S, S, _imp_str_literal("="), &N)) {
Num = -1;
V = 0;
J = Addr(N);
{int J_Lim = J + *Length(N);
for (J = J + 1; J <= J_Lim; J++) {
C = *Byteinteger(J) - '0';
if (0 > C || C > 9) {
Printstring(_imp_join(N, _imp_str_literal(" ?\n")));
return;
}
V = V * 10 + C;
}}
if (V > 255) {
Printstring(_imp_join(N, _imp_str_literal(" ?\n")));
return;
}
}
if (Num == 0 && _imp_resolve(*S, NULL, _imp_str_literal("\\"), S)) Not = 0;
for (J = 1; J <= Params; J++)
if (_imp_strcmp(Param[J], *S)==0) {
if (((Bools - J) ^ Num) < 0) {
Printstring(_imp_join(*S, _imp_str_literal("= ?\n")));
return;
}
K = Not;
if (Num < 0) K = V;
switch (J) {
case 1: Isolatebrackets = K; break;
case 2: Leaveblanks = K; break;
case 3: Sepblocks = K; break;
case 4: Indentblocks = K; break;
case 5: Splitkeywords = K; break;
case 6: Packnames = K; break;
case 7: Splitstats = K; break;
case 8: Commentsnormal = K; break;
case 9: Breakcomments = K; break;
case 10: Leavestars = K; break;
case 11: Justifyall = K; break;
case 12: Labelsrelative = K; break;
case 13: Splitconds = K; break;
case 14: Decsrelative = K; break;
case 15: Spacelists = K; break;
case 16: Spaceequals = K; break;
case 17: Isolateloops = K; break;
case 18: Extramargin = K; break;
case 19: Leaveowns = K; break;
case 20: Commentsrelative = K; break;
case 21: Extendcomments = K; break;
case 22: Mi = K; break;
case 23: Ll = K; break;
case 24: Ct = K; break;
case 25: Ml = K; break;
case 26: Commentextension = K; break;
case 27: Extnum = K; break;
case 28: Initialmargin = K; break;
case 29: Secondarymargin = K; break;
case 30: Commentlimit = K; break;
case 31: Commentline = K; break;
}
Oplist = _imp_join(Oplist, _imp_join(_imp_str_literal(" "), Opt));
return;
}
Printstring(_imp_join(*S, _imp_str_literal(" ?\n")));
}
Oplist = _imp_str_literal("\n!! OPTIONS:");
Ok = 1;
#ifdef NEVER // not using an options file yet...
if (_imp_strcmp(Optionfile, _imp_str_literal(""))!=0) {
fprintf(OUTFILE, "Option file is \""); Printstring(Optionfile); Printsymbol('"'); Newline();
Ok = 0;
Optflag = 0;
if (_imp_resolve(Optionfile, NULL, _imp_str_literal("["), &S)) {
if (_imp_resolve(S, &S, _imp_str_literal("]"), NULL)) Optflag = 0;
S = _imp_join(S, _imp_str_literal(",*"));
} else {
Optflag = 1;
Prompt(_imp_str_literal("OPTIONS:"));
Openinput(2, Optionfile);
Selectinput(2);
}
for (;;) {
Line(&S);
while (_imp_resolve(S, &T, _imp_str_literal(","), &S)) Set(&T);
if (_imp_strcmp(S, _imp_str_literal("*"))==0) break;
Set(&S);
}
if (*Charno(Output, 1) == '.') {
*String(Currout) = _imp_join(Oplist, _imp_str_literal("\n\n"));
*Byteinteger(Currout) = '\n';
Currout = Currout + *Length(Oplist) + 2;
}
Closeinput();
Selectinput(0);
}
#endif
Deltamargin = Mi;
Linelength = Ll;
Commenttab = Ct;
Maxmargin = Ml;
Secmargin = Secondarymargin;
if (40 >= Linelength || Linelength >= 133) {
Printstring(_imp_str_literal("INVALID LINE LENGTH\n"));
return;
}
if (0 >= Commenttab || Commenttab >= Linelength - 20) {
Printstring(_imp_str_literal("INVALID COMMENT MARGIN\n"));
return;
}
if (Maxmargin >= Linelength - 20) {
Printstring(_imp_str_literal("INVALID MAX MARGIN\n"));
return;
}
if (Deltamargin > Maxmargin << 1) {
Printstring(_imp_str_literal("INVALID MARGIN INCREMENT\n"));
return;
}
if (Secmargin > (Deltamargin << 1) + Safetyfactor) {
Printstring(_imp_str_literal("INVALID SECONDARY MARGIN\n"));
return;
}
if (Initialmargin > 30) {
Printstring(_imp_str_literal("INVALID INITIAL MARGIN\n"));
return;
}
if (Deltamargin == 0 && Secmargin == 0 && Initialmargin == 0) Margin = 1;
if (Extramargin) Margin = Initialmargin;
if (Splitkeywords) Splitconds = 1;
Commentlength = Linelength - Commenttab;
Textbase = Addr(Symfile[0]);
Keybase = Addr(Keysyms[1]);
Rmargin = Commentlimit;
Fullline = Linelength;
Linelength -= Safetyfactor;
Options = 17 * Splitkeywords + 34 * Splitconds + (Spacelists << 6) +
(Isolatebrackets << 2) + (Spaceequals << 3) + 128;
Linebase = Currout;
Size = 0;
Commentflag = Justifyall << 1 | Commentsnormal;
Commentflag = Commentflag ^ 0b010;
Firstdisp = Deltamargin - Initialmargin;
if (!Commentline) Commentline = Fullline;
Ok = 1;
}
int _imp_mainep(int _imp_argc, char **_imp_argv) {
static int ENDIAN_TEST = 0x01234567;
if (* (char *)&ENDIAN_TEST == 0x01) {
// Should be OK...
} else if (* (char *)&ENDIAN_TEST == 0x67) {
fprintf(stderr, "Looks like you're running on a little-endian processor. Recompile for big-endian!\n"); exit(1);
} else {
fprintf(stderr, "What the heck sort of processor are you running on?\n"); exit(1);
}
if (_imp_argc != 2) {
fprintf(stderr, "syntax: soap file.imp\n\n"); exit(1);
}
Soap(_imp_c2istr(_imp_argv[1]));
while (Outstart < Currout) Printsymbol(*Byteinteger(Outstart++));
exit(0);
return (1);
}