home *** CD-ROM | disk | FTP | other *** search
- #include "4107.h"
-
- /*
- * Convert xy pair to terminal encoded syntax.
- */
- encode_xy(x,y)
- register long x,y;
- {
- static lasthix = 0xfff,
- lasthiy = 0xfff,
- lastloy = 0xfff,
- lastext = 0xfff;
- int hix, lox, hiy, loy, ext;
-
- if (x < 0) x = 0;
- else if (x >= 4096) x = 4096 - 1;
- if (y < 0) y = 0;
- else if (y >= 3133) y = 3133 - 1;
-
- hix = x & 0xf80;
- lox = x & 0x07c;
- hiy = y & 0xf80;
- loy = y & 0x07c;
- ext = ((y & 0x03) << 2) | (x & 0x03);
-
- putchar( (hiy >> 7) | 0x20 );
- putchar( ext | 0x60 );
- putchar( (loy >> 2) | 0x60 );
- putchar( (hix >> 7) | 0x20 );
- putchar( (lox >> 2) | 0x40 );
- }
-
- /*
- * Convert integer parameter to terminal syntax.
- */
- encode(i)
- register long i;
- {
- char buffer[50];
- register char *bp = &buffer[49];
-
- *bp-- = '\0';
- if (i < 0) {
- i = -i;
- *bp-- = (i & 0xf) | 0x20;
- } else {
- *bp-- = (i & 0xf) | 0x30;
- }
-
- i >>= 4;
- while (i > 0) {
- *bp-- = (i & 0x3f) | 0x40;
- i >>= 6;
- }
- while (*++bp)
- putchar(*bp);
-
- }
- /*
- * Encode a string into an integer array
- */
- encode_str(str)
- /* requires a variable length string terminated with \0 */
- /* encode(-135, "l") */
- char str[1];
- {
- register i;
- encode(strlen(str));
- for (i=0 ; i<strlen(str); i++)
- encode(str[i]);
- }
-
- /*
- * Decode integer report parm to binary integer.
- * input = 3 char integer report.
- * returns binary integer
- */
-
- long
- decode_int(parm)
- char *parm;
- {
- long i;
- i = ((int) parm[0] -32) * 1024;
- i += ((int) parm[1] -32) * 16;
- i += ((int) parm[2] -32) % 16;
- return (i);
- }
-