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");