[net.sources] fed for other HP terminals

mark@cbosgd.UUCP (Mark Horton) (09/28/84)

There is concern about the portability of the fed editor, since the
HP 2648 is not exactly a common terminal.  It turns out that all HP
terminals that have graphics capability use compatible escape sequences,
so fed can be easily ported to other HP terminals.  I am enclosing
the changes to make fed run on an HP 150, other HP terminals can be done
primarily be changing the screen size again.

The HP 150 does not have the rubber band line or hardware zoom (I think,
it's been a while - it might have the rubber band line) which fed uses.
These features are quite useful but fed works well without them.

The changes here (1) change the screen size, (2) disable the ENQ/ACK
handshaking that the 2648 uses, or rather just leave XON/XOFF intact,
(3) change the maximum font size, since 300lpi fonts are now common.

I wrote fed as a class project one quarter and never expected it to
catch on.  However, it seems far more powerful than any other font editor
I have ever seen in production use, and I used it to do extensive editing
of the Berkeley Hershey fonts (yes, they once looked even worse!) so it
seems pretty reliable.  The one major disadvantage is that arrow keys are
a terrible way to edit fonts - a mouse or trackball would work wonders,
but the 2648 doesn't have one.

fed has a number of advanced features - line drawing and erasing with variable
size pens/erasers, area fill, font reduction, enlargement, smoothing,
emboldening, and slanting, reflecting about an axis, and undo of big changes.
It also lets you set and clear individual bits, which is what the typical
regular font editor does.  The disadvantage is that it depends on a particular
graphics terminal.

/usr/src/ucb/fed/fed.h
14,17c14,17 /* max screen size and max glyph size */
< #define SCRHI	360		/* number of pixels on the screen */
< #define SCRWID	720		/* width in pixels of the screen */
< #define NROW	3		/* number of rows of glyphs on the screen */
< #define NCOL	7		/* number of cols of glyphs in a row */
---
> #define SCRHI	390		/* number of pixels on the screen */
> #define SCRWID	512		/* width in pixels of the screen */
> #define NROW	2		/* number of rows of glyphs on the screen */
> #define NCOL	3		/* number of cols of glyphs in a row */
19,21c19,21 /* max glyph size */
< #define GLCOL	100		/* width of a glyph window */
< #define GLROW	100		/* height of a glyph window */
< #define GLPAD	3		/* number of pixels between windows */
---
> #define GLCOL	150		/* width of a glyph window */
> #define GLROW	150		/* height of a glyph window */
> #define GLPAD	10		/* number of pixels between windows */
23c23 /* max glyph size */
< #define BASELINE 22		/* number of pixels below baseline in window */
---
> #define BASELINE 33		/* number of pixels below baseline in window */
/usr/src/lib/lib2648/ttyinit.c
/* This change leaves xon/xoff handshaking enabled. */
25d24
< 	_ntch.t_quitc = _ntch.t_startc = _ntch.t_stopc = -1;
/usr/src/lib/lib2648/video.c
/* This change is due to the screen size changing, it toggles video */
19c19
< 	outstr("3a1b0 0 719 359e");
---
> 	outstr("3a1b0 0 719 390e");