void Expand(int c) { #define DLE 144 switch (ExState) { case 0: if (c != DLE) OutByte(c); else ExState = 1; break; case 1: if (c != 0) { V = c; Len = reduce_L(V); ExState = reduce_F(Len); } else { OutByte(DLE); ExState = 0; } break; case 2: { Len = Len + c; ExState = 3; } break; case 3: { int i; longint offset = reduce_D(V,c); longint op = outpos - offset; for (i = 0; i <= Len + 2; i++) { if (op < 0L) OutByte(0); else OutByte(outbuf[(int)(op % sizeof(outbuf))]); op++; } ExState = 0; } break; } }
value reduce_num(value f, number x) { return reduce_D(f,type_num,x); }