home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d1xx
/
d165
/
plotview.lha
/
PlotView
/
Plot2Tek
/
encode.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-11-22
|
1KB
|
89 lines
#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);
}