|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: static char sccsid[] = "@(#)motion.c 5.1 (Berkeley) 4/30/85"; ! 9: #endif not lint ! 10: ! 11: /* ! 12: * Move the pen to x, y. We assume we are already in ESCP mode. ! 13: */ ! 14: ! 15: #include "2648.h" ! 16: ! 17: motion(x, y) ! 18: { ! 19: char lox, loy, hix, hiy; ! 20: int delx, dely; ! 21: ! 22: delx = x-_penx; dely = y-_peny; ! 23: if (-16 <= delx && delx <= 15 && -16 <= dely && dely <= 15) { ! 24: /* ! 25: * Optimization: if within 15 in both directions, can use ! 26: * HP short incremental mode, only 3 bytes. ! 27: */ ! 28: outchar('j'); ! 29: outchar(32 + (delx & 31)); ! 30: outchar(32 + (dely & 31)); ! 31: } else { ! 32: /* ! 33: * Otherwise must use binary absolute mode, 5 bytes. ! 34: * We never use ascii mode or binary incremental, since ! 35: * those both take many more bytes. ! 36: */ ! 37: outchar('i'); ! 38: outchar(32+ ((x>>5) & 31)); ! 39: outchar(32+ (x&31)); ! 40: outchar(32+ ((y>>5) & 31)); ! 41: outchar(32+ (y&31)); ! 42: } ! 43: _penx = x; ! 44: _peny = y; ! 45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.