hp2xx emulates a subset of the Hewlett-Packard 7550A plotter.
The following manual was used as reference for command definitions:
[1] HP 7550A Interfacing and Programming Manual.
Not all commands are supported. Among the non-supported commands are those which do not really apply to a software emulator, like:
commands affecting the communication between plotter and host computer, commands for changing the behaviour of a real plotter, like plotting speed etc., commands for the control of plotter memory allocation, commands causing various plotter display outputs.
Other non-supported commands would be desirable, but were left out due to their inherent complexity (or just because nobody pushed me, :-) ). Among those are:
commands for font (character set) management. Since there is only one font
built into hp2xx, there is no point in providing font switching etc.
windowing/clipping and rotation
polygon and box filling commands
Programmers intending to add more HP-GL features should take care to
implement the less-than-obvious side effects of existing commands on
the new features, too (and vice versa). E. g., line types (LT;)
affect most but not all drawing commands: While the ER; command
(edge rectangle relative) uses the current line type, its counterpart
EA; (edge rectangle absolute) always draws solid lines. However,
both PR; and PA; use the current line type! In addition,
new features may need initializations by the already supported
codes IN; or DF;, so these may have to be expanded.
So carefully consult [1] prior to adding new HP-GL commands.
The remainder of this section lists all HP-GL commands given on pages 1-2 to 1-4 of [1] and marks them as either
(.) not applicable,
(-) ignored, or
(+) supported.
The label "supported" is used when I think the command is fully supported in the context of the already implemented commands. In general, you should have absolutely no problem with this class of commands.
Though there still are unsupported commands, this does not mean that
you might have trouble using hp2xx. Nowadays, most HP-GL files are
machine-generated, e.g. by CAD or DTP programs. These tend to make use
of just a simple subset of HP-GL. To my experience, chances are high
that hp2xx will give you the picture you want!
HP-GL|s n| Description & RemarksCmd | i |=====|===|========================================================AA |+ | Arc AbsoluteAF |+ | [same as PG]AH |+ | [same as PG]AP | .| Automatic pen operationsAR |+ | Arc RelativeAS | .| Acceleration select-----|---|--------------------------------------------------------BF | - | Buffer PlotBL |+ | Buffer Label-----|---|--------------------------------------------------------CA | - | Designate alternate character setCC | - | Character Chord angleCI |+ | CircleCM | - | Character selection modeCP |+ | Character plotCS | - | Designate standard character setCT | - | Chord toleranceCV | - | Curved line generator-----|---|--------------------------------------------------------DC | .| Digitize clearDF |+ | DefaultDI |+ | Absolute directionDL | - | Define downloadable characterDP | .| Digitize pointDR |+ | Relative directionDS | - | Designate character into slotDT |+ | Define label terminator-----|---|--------------------------------------------------------EA |+ | Edge rectangle absoluteEP | - | Edge polygonER | - | Edge rectangle relativeES |+ | Extra spaceEW | - | Edge wedge-----|---|--------------------------------------------------------FP | - | Fill polygonFS | .| Force selectFT | - | Fill type-----|---|--------------------------------------------------------GC | .| Group countGM | .| Graphics memory-----|---|--------------------------------------------------------IM | - | Input maskIN |+ | InitializeIP |+ | Input P1 and P2IV | - | Invoke character slotIW | - | Input window-----|---|--------------------------------------------------------KY | .| Define key-----|---|--------------------------------------------------------LB |+ | LabelLO |+ | Label originLT |+ | Line type-----|---|--------------------------------------------------------NR | .| Not ready (unload page)-----|---|--------------------------------------------------------OA | .| Output actual position and pen statusOC | .| Output commanded position and pen statusOD | .| Output digitized point and pen statusOE | - | Output errorOF | - | Output factorsOG | .| Output group countOH | - | Output hard-clip limitsOI | .| Output identificationOK | .| Output keyOL | - | Output label lengthOO | .| Output optionsOP |+ | Output P1 and P2OS | - | Output statusOT | .| Output carousel typeOW | - | Output window-----|---|--------------------------------------------------------PA |+ | Plot absolutePB |+ | Print buffered labelPD |+ | Pen downPG |+ | Page feedPR |+ | Plot relativePT | - | Pen thicknessPU |+ | Pen up-----|---|--------------------------------------------------------RA | - | Fill rectangle absoluteRO | - | Rotate coordinate system [use option -r instead!]RP | - | ReplotRR | - | Fill rectangle relative-----|---|--------------------------------------------------------SA | - | Select alternate character setSC |+ | ScaleSI |+ | Absolute character sizeSL |+ | Character slantSM |+ | Symbol modeSP |+ | Select penSR |+ | Relative character sizeSS | - | Select standard character set-----|---|--------------------------------------------------------TL |+ | Tick length-----|---|--------------------------------------------------------UC |+ | User-defined characterUF | - | User-defined fill type-----|---|--------------------------------------------------------VS | .| Velocity select-----|---|--------------------------------------------------------WD |+ | Write to displayWG | - | Fill wedge-----|---|--------------------------------------------------------XT |+ | X-Tick-----|---|--------------------------------------------------------YT |+ | Y-Tick