home *** CD-ROM | disk | FTP | other *** search
/ Graphics 16,000 / graphics-16000.iso / msdos / viewers / showgl19 / showhpgl.doc < prev    next >
Text File  |  1992-08-18  |  23KB  |  569 lines

  1. SHOWHPGL    A viewing program for HP-GL and HP-GL/2 plotting programs.
  2.  
  3. Version 1.9
  4.  
  5.  
  6. Introduction
  7.  
  8. This program is designed to preview HP-GL and HP-GL/2 plotting programs
  9. on the console screen of an IBM PC or compatible computer.  It
  10. impliments 47 of 97 HP-GL or HP-GL/2 instruction.  Of the 97
  11. instruction, 22 either have no meaning for this type of program or
  12. are otherwise unrelated to drawing.  Four instructions are included to
  13. provide backward compatibility with the HP9872 plotter.  These instructions
  14. are interpreted as NOP's.
  15.  
  16. It is written in Microsoft C, version 6.0.  It requires MS-DOS
  17. version 3.0 or above to run.  This program is meant to be used as a
  18. preview tools for HP-GL files.  It is as accurate as it could be made
  19. with the limited information and resources available at the time it
  20. was written.  Known bugs or deficiencies are listed after the
  21. instruction set summary.
  22.  
  23. Version 1.9 adds solid fills to RR and RA (relative and absolute filled
  24. rectangles), and fixes a bug which allowed drawing outside the hard clip
  25. border when using IW (windowing).
  26.  
  27. Revision History
  28.  
  29. Version 1.9    17 August, 1992
  30.  
  31. - Added solid fill types to RA and RR.
  32. - Added transparent data (TD) instruction.
  33. - Fixed bug allowing drawing outside P1/P2 border using IW.
  34.  
  35.  
  36. Version 1.8     8 August, 1992
  37.  
  38. - The LB command would not draw labels with more non-printing characters
  39.   than printing characters.  This caused labels which used embedded
  40.   backspaces for positioning to not be drawn.  Fixed.
  41.  
  42. - The LB command would not terminate properly at the end-of-file without
  43.   a label terminator present.  Fixed.
  44.  
  45. - Relative text size on the CRT increased as paper size enlarged.
  46.   'Should have decreased.  Fixed.
  47.  
  48. - IW clipping window incorrectly placed when P1/P2 (the corner
  49.   hard clip limits) were not lower-left and upper-right, respectively.
  50.   This resulted in no visible lines being drawn.  Fixed.  It also failed
  51.   to restore the correct clipping when turned off if scaling was on. 
  52.   Fixed.
  53.  
  54. - DR drew characters in the wrong direction when P1/P2 were exchanged.
  55.   Fixed.
  56.  
  57. - HP-GL/2 defaults to SI (absolute character sizes) at initialization
  58.   (IN) or when issuing the DF (default) instruction, as does the
  59.   DraftPro plotter.  However, the HP7475 and HP7470 plotters specify
  60.   SR (relative character sizes for these cases.  Two switches were
  61.   added (-70 and -75) to select relative character scaling as the
  62.   default condition.
  63.  
  64. - XT and YT (tick drawing commands: not HP-GL/2 instructions) were able
  65.   to draw ticks outside the P1/P2 hard clip border.  Fixed.  Also,
  66.   tick length was not rescaling when P1/P2 changed unless TL was 
  67.   executed after P1/P2 changed.  Fixed
  68.  
  69. - Type 1 scaling (isotropic, with no left and bottom parameters
  70.   specified) did not result in symmetric spacing on the axis which
  71.   was lengthened to achieve isotropic scaling.  Fixed.
  72.  
  73. - A single pixel line would terminate the program with an integer
  74.   divide overflow. Fixed.
  75.  
  76. - Filled rectangles didn't work properly if scaling was on.  Fixed.
  77.  
  78. - Operation of IR not clearly specified for the case of P1/P2 being
  79.   exchanged.  IR as implimented is based on hard clip borders and
  80.   assumes, for reference, P1 is the lower left corner and P2 is the
  81.   upper left corner.
  82.  
  83.  
  84. Version 1.6    25 July, 1992
  85.  
  86. - Fixed bug in graphix.lib preventing labeling from having more non-
  87.   printing characters than printing chars and still be drawn.
  88.  
  89. - Relative character sizes increased as larger paper sizes were selected.
  90.   They should have decreased due to the necessary reduction in size to
  91.   fit the drawing to the screen.
  92.  
  93. - DR set the wrong character direction when P1/P2 (the hard clip corner
  94.   points) were exchanged.
  95.  
  96. - IW set the wrong window coordinates when P1/P2 were exchanged.  The
  97.   result was no drawing on the screen.
  98.  
  99.  
  100. Version 1.5    30 December, 1991
  101.  
  102. - Added debugging flag.  Error messages regarding the source file are now
  103.   suppressed.  The -db flag turns them on.  Error messages are printed to 
  104.   stdout and may be redirected to a file.
  105.  
  106. - Added four instructions for HP9872 plotter backward compatibility.
  107.  
  108. - re-wrote the graphics adapter identification code to make maintaining
  109.   the code easier.
  110.  
  111. - Added PE (polyline encoded) instruction.
  112.  
  113.  
  114. Version 1.0    3 September, 1991
  115.  
  116. - Original release.
  117.  
  118. The P1/P2 Exchange Problem
  119.  
  120. There is an issue of semantics which arises for the case of P1/P2
  121. being exchanged.  On a plotter, entering the P1 and P2 points is a
  122. physical process whereby the operator mechanically places the cursor
  123. at the desired corner points.  When one places P1 in the upper left
  124. corner and P2 in the lower left corner of the page, the logical
  125. coordinate system and the physical coordinate system of the plotter
  126. become reflected and inverted.  The plotter defines P1 as the lower
  127. left corner of the page and P2 as the upper right corner of the page. 
  128. Thus, if you move the pen to the physical location P1 or P2
  129. coordinates (using the control panel), the plotter moves the pen to
  130. the upper right or lower left corner, respectively.  However, if you
  131. told the plotter to move to the coordinates of P1 or P2, it would
  132. move to a point opposite of the respective location.  For example, if
  133. one sets P1 = (10250, 7479) and P2 = (250, 279), issuing "PU250,279;"
  134. would move the plotter to the upper right corner of the page, even
  135. though the physical P2 location is in the lower left corner of the
  136. page.
  137.  
  138. The plotter is being forced to perform a translation from physical 
  139. coordinates into logical coordinates.  By choosing P1 = (10250, 7479) 
  140. and P2 = (250, 279), we have inverted and reflected the logical 
  141. coordinate system.  Thus, moving the pen to the logical
  142. coordinates of P1 (we are not commanding the plotter to move to the 
  143. physical location of P1) moves the pen to the lower left corner of 
  144. the page.  Our choice of coordinate values for P1 and P2 has placed 
  145. larger numerical values in the lower left corner of the page and 
  146. smaller values in the upper right corner.
  147.  
  148. What does this mean? If you examine the display for program
  149. SHOW_TST.DPF, two of the four frames show P2 in the lower left corner
  150. of the frame.  These frames have P1 and P2 exchanged.  If you examine
  151. the program, the coordinate values given for point P2 are the values
  152. of the P1 coordinate.  The labels are intended to show where the
  153. physical location of P2 would be if you could display it.  However,
  154. the P2 logical coordinate is always in the upper right corner, and
  155. the P1 logical coordinate is always in the lower left corner.  Thus,
  156. wer are forced to appear to mislabel the graph in order to show the
  157. physical P1 and P2 coordinate locations.
  158.  
  159.  
  160.  
  161. Usage
  162.  
  163. SHOWHPGL -[video][paper][plotter][debug]  [filename]
  164.  
  165. where 
  166.  
  167.     filename    optional filename for HP-GL source file.  If a 
  168.             filename is not supplied, standard input is 
  169.             assumed.
  170.  
  171.     video        option to force usage of a particular video 
  172.             mode.  Values are: c, e, v, for CGA, EGA, or 
  173.             VGA.
  174.               'c' will force CGA 640 x 200 monochrome mode,
  175.               'e' will force EGA 640 x 350 16 color mode,
  176.               'v' will force VGA 640 x 480 16 color mode.
  177.  
  178.             Default mode is autodetect and select 
  179.             highest resolutions standard mode available.  
  180.             No SVGA modes are supported.
  181.  
  182.     paper        One of the following standard paper sizes:
  183.             A, B, C, D, E, or A4, A3, A2, A1, A0 .  
  184.             Default size is A. Case is important!!
  185.             A0 is a paper size option: a0 is unknown.
  186.  
  187.     plotter        Default emulation is HPGL/2.
  188.             'dp'  will select DraftPro emulation.
  189.             '70'  will select HP7470 emulation.
  190.             '75'  will select HP7475 emulation.  
  191.  
  192.             The HP 7470/7475 have the plotter units coordinate
  193.             origin in the lower left corner.  The DraftPro
  194.             uses the center of the page as the origin.  Note also
  195.             that the 7470 and 7475 emulations do NOT limit the 
  196.             number of pens available to 2 and 6, respectively.  Pen
  197.             colors are limited to those available on the graphics 
  198.             mode you are running (i.e., CGA, EGA, or VGA).
  199.  
  200.     debug        Default is to silently pass errors.  -db will
  201.             turn on error output to stdout.
  202.  
  203.  
  204. The user may also set the environment variable HP-GL to a default set 
  205. of switches, i.e.,
  206.  
  207. set hpgl=dpA3
  208.  
  209. specifies default options of DraftPro mode and A3 size paper.
  210.  
  211. If command line switches are present, the environment settings are
  212. ignored.  Multiple paper size selections will cause the program to
  213. abort.  Multiple video mode selections will default to the highest
  214. resolution autodetected mode.
  215.  
  216. The switch character is defined as '-'.   It is hard coded into the 
  217. program.  Directory path names may include either or both '\' and '/'
  218. directory separators.  This program has been tested under MS-DOS 3.20
  219. and MS-DOS 5.0 .
  220.  
  221. All video graphics functions draw using the video BIOS.  No direct 
  222. screen I/O is used.  Additional BIOS supported graphics modes may be 
  223. supported by defining the appropriate structures in graphix.h and the 
  224. macros in graph.h and making appropriate changes to the mode lists in 
  225. autogrph.c and showhpgl.c .
  226.  
  227. When the debugging flag is turned on, this program generates diagnostic
  228. output text strings when illegal or unsupported instructions are
  229. encountered.  THESE STRINGS APPEAR IN THE GRAPHICS DISPLAY AND MAY
  230. INTERFERE WITH THE DRAWING IF SUFFICIENT ERRORS OCCUR.  If you expect
  231. large numbers of errors and wish to retain a listing of the output,
  232. redirect any generated output to a file.
  233.  
  234. Note that this program DOES NOT restore the video mode which was 
  235. in use prior to calling this program.  Although the EGA and VGA 
  236. display systems are capable of better than 80 columns and 25 rows on 
  237. the screen, they do not appear as supported IBM BIOS video modes.  
  238. Determination of nonstandard video mode parameters was beyond the 
  239. scope of this program.  If you want to restore a recognized video mode 
  240. at the end of program execution, add the following code to showhpgl.c just 
  241. before the end of main ():
  242.  
  243.     twait (infile, 50);
  244.     graphics_off ();
  245.  
  246. This will introduce a 50 second delay before restoring the video mode.  
  247. Shorter delays can be had by changing the value 50 to a more reasonable
  248. number.  If the initial video mode was not a BIOS standard video mode, 
  249. graphics_off () may not be able to restore it properly.
  250.  
  251.  
  252. Compilation
  253.  
  254. The entire package is compiled as follows:
  255.  
  256. cl showhpgl.c hpgl1.c hpgl2.c getargs.c autogrph.c graphix.lib
  257.  
  258. Note that this package is compiled with the default optimizations.  Failure 
  259. use at least the default optimizations when compiling showhpgl.c may
  260. result in a _TEXT segment which exceeds 64K and linking will fail. 
  261. graphix.lib is compiled in the small memory model.
  262.  
  263. Because graphix.lib internally uses Microsoft interrupt calling 
  264. functions, showhpgl must be compiled using the Microsoft compiler.  The object
  265. module mscio.obj, which is in graphix.lib, contains all Microsoft, and PC
  266. in general, specific functions.  This module must be replace in order to
  267. use this package with other compilers and platforms.  Contact the author for
  268. the required information.
  269.  
  270.  
  271. Distribution Package
  272.  
  273. The distribution package includes the following:
  274.  
  275. showhpgl.doc        this document
  276. showhpgl.exe        the executable program file
  277. showhpgl.c        main program
  278. hpgl1.c            additional functions
  279. hpgl2.c            additional functions
  280. hpgl.h            header file for showhpgl.c, hpgl1.c hpgl2.c
  281. getargs.c        command line options and arguments
  282. autogr.c        video graphix adapter detection
  283. labels.c        labeling font for showhpgl (part of graphix.lib)
  284. graphix.lib        graphics functions library
  285. graphix.h        header file for main program (showhpgl.c)
  286. graph.h            header file for additional modules (hpgl1.c, 
  287.             hpgl2.c)
  288. license.doc        license agreement
  289.  
  290.     HP-GL test programs
  291.  
  292. aa_artst.dpf        AA, AR, CI, IP, SC, CT, PR: test general performance
  293.                 of arc and circle drawing with fixed and adaptive
  294.                 segment lengths
  295. attest.dpf        AT: 3-point arc, absolute
  296. actest.dpf        AC: anchor corner test
  297. cptest.dpf        CP: character plot 
  298. ct_citst.dpf        CI, CT: circles with fixed and adaptive segment
  299.                 lengths
  300. di_drtst.dpf        DI, DR: absolute and relative label directions.
  301. dv_sltst.dpf        SL, DV: test slant with DV command.
  302. dvtest.dpf        DV: variable text path (fails this test)
  303. ea_ertst.dpf        EA, ER: edge rectangle absolute and relative
  304. estest.dpf        ES: extra inter-character spacing
  305. ewtest.dpf        EW: outline wedge
  306. ip_irtst.dpf        IP, IR: test & display usage of IP and IR
  307. iwtest.dpf        IW: soft-clip window
  308. labels.dpf        LB, LO, SL, SR, DV: labels and label origins, char. 
  309.                 slant, char. size (relative), direction vertical.
  310. lttest.dpf        LT: line type: note that types 6-9 are identical as 
  311.                 types 7-9 are unsupported.
  312. pa_prtst.dpf        PA, PR: test absolute and relative line drawing
  313. petest.dpf        PE: polyline encoded
  314. ra_rrtst.dpf        RA, RR: filled rectangle, absolute (no solid fills)
  315. rttest.dpf        RT: 3-point arc, relative
  316. sc_test.dpf        SC, DR, DI, LB: test all scaling types, DI, DR, and LB
  317.                 instructions in normal and P1/P2 exchanged 
  318.                 coordinate systems.
  319. smtest.dpf        SM: symbol mode
  320. tl_lotst.dpf        LB,LO,TL,XT,YT: test labels, label origins, x-,
  321.                 & y-ticks
  322. fwdaltbx.dpf        drawing to demonstrate the -dp drawing option.  
  323.                 Use -C or larger for paper size.
  324.  
  325. Note: many of these program are dependent on using A-size paper to correctly
  326. display the intended test functions.  Different results may occur from using
  327. other paper sizes unless another paper size is specifically noted.
  328.  
  329. Some of these test programs are taken from "The HP-GL/2 Reference Guide" 
  330. and, as such are copyright 1990 by Hewlett-Packard.  This book provides
  331. illustrations of what the output of some of these programs should look 
  332. like accompanying the description of the instruction.
  333.  
  334. The file labels.c is included for those who wish to modify the font used
  335. for labeling.  This font is incorporated into graphix.lib.  To modify the
  336. font, make the required changes to labels.c, compile it to a ".obj" file,
  337. and update the library using "LIB -+labels;" (Microsoft library manager).
  338. You may then re-link the remaining files to create a new program which
  339. uses the new fonts.
  340.  
  341.  
  342. Licensing
  343.  
  344. Please refer to the license agreement in license.doc.  Use of this 
  345. software and the enclosed source code is limited to the terms of the
  346. license.
  347.  
  348. Bug Reports:
  349.  
  350. Please report any bugs to 
  351.  
  352. becker@lennon.src.honeywell.com   (Robert Becker).  
  353.  
  354. If you prefer, mail them to me at
  355.  
  356. Robert Becker
  357. 15836 Quebec Circle
  358. Eden Prairie, MN   55346
  359.  
  360.  
  361. Instructions Status
  362.  
  363. The following is a list of instructions and the level of implimentation
  364. in showhpgl.exe of HP-GL/2 instructions.  Note that not all instructions 
  365. are HP-GL/2 instructions.  Those with notations in the source column 
  366. indicate where this instruction was found.  Status indicates the level of 
  367. implimentation of the instruction.  There are four levels of implimentation:
  368.  
  369. Full:        instruction is fully functional as per HP-GL/2
  370. Partial:    instruction implimentation is incomplete
  371. NOP:        no action or action not meaningful for this application
  372. N/A:        not available: instruction was not implimented.
  373.  
  374. There are 38 Full, 8 partial, 26 NOP, and 29 N/A instructions.  Of the N/A
  375. instructions, 11 are related to character set or font selection.  Of the
  376. NOP instructions, 12 are related to output or digitizing a point and 4 are
  377. for backward compatibility with earlier products.  All output instruction
  378. that have no meaning in this application and are implimented as NOP
  379. instructions.  No dual context mode instructions (HP-GL & PCL) have been
  380. inplimented.
  381.  
  382. Command    Description            Status    source        Comments
  383.  
  384. AA    arc absolute            Full
  385. AC    anchor corner            Full
  386. AD    alternate font definition    N/A
  387. AF    advance full page        NOP            compatibility w/HP9872
  388. AH    advance half-page        NOP            compatibility w/HP9872
  389. AR    arc relative            Full
  390. AT    3 point arc absolute        Full
  391. BP    begin plot            Partial            waits TWAIT seconds before clearing plot from screen
  392. CA    designate alternate char. set    N/A    7470
  393. CF    char. fill mode            N/A
  394. CI    circle                Full
  395. CP    character plot            Full
  396. CS    designate std. character set    N/A
  397. CR    color range            N/A
  398. CT    chord tolerance            Full
  399. DC    digitizer clear            NOP
  400. DF    default                Full
  401. DI    absolute label direction    Full
  402. DL    download character        N/A
  403. DP    digitize point            NOP
  404. DR    relative label direction    Full
  405. DS    designate char. set into slot    N/A    DraftPro
  406. DT    Define label terminator        Full
  407. DV    Define variable text path    Partial            No line feed reversal
  408. EA    edge rectangle absolute        Full
  409. EC    enable cutter            NOP
  410. EP    edge polygon            N/A
  411. ER    edge rectangle relative        Full
  412. ES    extra space            Full
  413. ESC    escape code instructions    Partial            No PCL mode switch commands
  414. EW    edge wedge            Full
  415. FI    primary font selection by ID    N/A
  416. FN    secondary font selection by ID    N/A
  417. FP    fill polygon            N/A
  418. FR    frame advance            N/A
  419. FT    fill type            Partial            Only hatched and cross-hatched fills
  420. GM    graphics memory            NOP    DraftPro
  421. IM    input mask            NOP    7470
  422. IN    initialize            Full            Since there is no 'front panel', IN1 is same as IN
  423. IP    input P1 & P2            Full
  424. IR    input relative P1 & P2        Full
  425. IW    input window            Full
  426. LA    line attributes            NOP            No wide lines available
  427. LB    label                Full
  428. LO    label origin            Full
  429. LT    line type            Partial            No adaptive line patterns: types 0-6, only.
  430. MC    merge control            N/A
  431. MG    message to panel        NOP
  432. MT    media type            NOP
  433. NP    number of pens            NOP
  434. NR    not ready            Full
  435. OA    output pen position & status    NOP    7470
  436. OC    output commanded positon & sts    NOP    7470
  437. OD    output digitized point & sts    NOP
  438. OE    output error            NOP
  439. OH    output hard-clip limits        NOP
  440. OI    output identification        NOP
  441. OO    output options            NOP    7470
  442. OP    output P1 & P2            NOP
  443. OS    output status            NOP
  444. OW    output window            NOP    7470
  445. PA    plot absolute            Full
  446. PC    assign pen colors        N/A
  447. PD    pen down            Full
  448. PE    polyline encoded        Full
  449. PG    page advance            Modified        Waits 6 seconds before clearing screen
  450. PM    polygon mode            N/A
  451. PR    plot relative            Full
  452. PS    plot size            Full
  453. PU    pen up                Full
  454. PW    pen width            N/A
  455. QL    quality level            NOP
  456. RA    fill rectangle absolute        Partial            no user defined fills
  457. RF    raster fill definition        N/A
  458. RO    rotate coordinate system    N/A
  459. RP    replot                N/A
  460. RR    fill rectangle relative        Partial            no user defined fills
  461. RT    relative arc 3-point        Full
  462. SA    select alternate font        N/A
  463. SB    scalable or bitmap font        N/A
  464. SC    scale plot            Full
  465. SD    standard font definition    N/A
  466. SI    absolute char. size        Full
  467. SL    char. slant            Full
  468. SM    symbol mode            Full
  469. SP    select pen            Full
  470. SR    relative char. size        Full
  471. SS    select standard char. set    N/A
  472. ST    sort vectors            NOP
  473. SV    screened vectors        N/A
  474. TL    tick length            Full    7470
  475. TD    transparent data        Partial            fn. char. set limited.
  476. TR    transparency mode        N/A
  477. UC    user defined character        N/A
  478. UL    user defined line pattern    N/A
  479. VA    adaptive pen velocity        NOP            compatibility w/HP9872
  480. VN    normal pen velocity        NOP            compatibility w/HP9872
  481. VS    velocity select            NOP
  482. WG    fill wedge            Partial            Outline of wedge, only (no filling available)
  483. WU    pen width unit selection    N/A
  484. XT    x-tick                Full    7470
  485. YT    y-tick                Full    7470
  486.  
  487. Notes:
  488.  
  489.     BP instruction is checked for syntax.  BP will wait PG_DELAY seconds
  490.     before clearing the screen if the screen was plotted on.  If the
  491.     screen was not plotted on, the plotter is initialized.  In either
  492.     case, the plotter is initialized.
  493.  
  494.     PG instruction generates a wait of PG_DELAY seconds before clearing 
  495.     the screen.
  496.  
  497.     PG_DELAY is defined in hpgl.h as 6 seconds.
  498.  
  499.     HP-GL and HP-GL/2 distinguish between <cr> and <lf> for 
  500.     positioning on labels.  The C-language, being based in UNIX, 
  501.     assumes the <lf> is the newline character and <cr> has no 
  502.     meaning.  This assumption is also present in this program and 
  503.     some test case labeling and character plotting tests will fail 
  504.     because of this.  The test program dvtest.dpf fails because of 
  505.     this.  The display should look something like:
  506.  
  507.           D A                  ABC
  508.           E B                  DEF
  509.           F C                     GHI
  510.         G
  511.         H
  512.         I
  513.  
  514.     Several of the HP-GL/2 specifications are incomplete.  For 
  515.     example, when one is drawing a wedge with symbol mode on, 
  516.     placement of the symbol is unspecified.  Similarly, when TD 
  517.     (transparent data) mode is on, the font used to display the 
  518.     control characters is not specified.  Error handling is not 
  519.     always specified.  For example, when CT is used to specify 
  520.     deviation distance on circles and arcs, this reference does 
  521.     not specify what action to take if a distance tolerance is
  522.     not specified for subsequent circles and arcs.  The DraftPro
  523.     manual specifies that the default shall be 5 degrees in this 
  524.     case.  The Addison-Wesley book does not specify what action
  525.     to take.
  526.  
  527.     For hatch and cross-hatch fills, it is not clearly specified 
  528.     for the case of user-unit defined hatch x-spacing if the scale 
  529.     in the y-direction should affect the spacing of the hatch. In this 
  530.     implimentation, it was decided that the hatch spacing displayed on
  531.     the screen should be invariant with the rotation angle.
  532.  
  533.     Additional questions arise in the case of the IR instruction.  One 
  534.     would think that, for the case of P1 and P2 being opposite of their
  535.     normal locations (lower left, and upper right, respectively), that 
  536.     the IR instruction would work off of these coordinates.  However, 
  537.     there are indications of the HP-GL/2 reference guide that IR works 
  538.     off of the default P1 and P2 locations.  That being the case, then
  539.     an IR of two arguments (IR x,y;) following an IP which exchanges 
  540.     the P1 and P2 corners will take the x- and y-values as percentage 
  541.     values based on the corners of convention for P1 and P2.  For 
  542.     example, if one assumes IP10250,7479,250,279; and later executes an
  543.     IR 10,10;, for A-size paper, the IR corner plotter coordinates will 
  544.     be (1030, 765), which, because P2 tracks P1 changes for only one 
  545.     coordinate pair arguments to IR or IP, will force P2 to assume the 
  546.     value of (-8970, -6534).  This is unlikely to be the assumed 
  547.     result.  Further, executing an IR of four arguments 
  548.     (IR x1, y2, xy, y2;) following an IP which exchanges P1 and P2 
  549.     corners will have the effect of reverting the coordinate system to 
  550.     the normal locations for the P1 and P2 corners
  551.  
  552.     To use IR to exchange the P1 and P2 corners, the first coordinate 
  553.     pair (x1, y2) must be greater than 50% (IR works in percent of the 
  554.     hardclip limits), and the second pair (x2, y2) should be less than 
  555.     50%.
  556.  
  557.     HP-GL, HP-GL/2, HP, Hewlett-Packard, and DraftPro are registered
  558.     trademarks of the Hewlett-Packard company.
  559.  
  560.     PC, CGA, EGA, VGA are or may be registered trademarks of the IBM
  561.     company.
  562.  
  563.     UNIX is a trademark of AT&T.
  564.  
  565. Reference:
  566.  
  567.     "The HP-GL/2 Reference Guide", Addison-Wesley Publishing Company.
  568.  
  569.