RFC387 Some experiences in implementing Network Graphics Protocol Level0

0387 Some experiences in implementing Network Graphics Protocol Level0. K.C. Kelley, J. Meir. August 1972. (Format: TXT=9059 bytes) (Updated by RFC0401) (Status: UNKNOWN)

日本語訳
RFC一覧

参照

Network Working Group                                  Karl C. Kelley
Request for Comments:  387                                Jaacov Meir
NIC:  11359                                                   8/10/72
Categories:  D.6, F
Obsoletes:
References:  RFC #292


   SOME EXPERIENCES IN IMPLEMENTING NETWORK GRAPHICS PROTOCOL LEVEL 0


    We are in the process of implementing NGP-0 at several hosts.  For
the time being, we are forced to consider the remote host as the "last
intelligent machine". We are attempting to translate NGP-0 to a machine
dependent code for the Computek display. The remote hosts are CCN, UCSD,
and soon RANDCSG. More comments about that work will be made in
subsequent RFC's. The concern of this RFC is twofold:

    1.  Clarify the coordinate number system.

    2.  Puzzle over how to do TEXTR string without either:

        a.  Reading current position and saving it while the text string
            is being output, or

        b.  Monitoring the beam position for each NGP command and saving
            this information somewhere.

    An appendix to this RFC will outline the conversion from the NGP
coordinate system to the floating point arithmetic on the PDP-1O.

The Coordinate Data

    The document for NGP-0 (RFC 292) does not say specifically that the
format of coordinate data is the same whether the command is in absolute
or relative mode. The only thing stated is that they are in two's
complement notation with the leftmost bit being the sign bit.  It is
possible to use two different 2's complement schemes:













Kelley & Meir                                                   [Page 1]

RFC 387      Experience Implementing Net Graphics Protocol   August 1972


           System A                            System B
    (Absolute Coordinates)              (Relative Coordinates)

  -1 -2 -3                 -16         0 -1 -2                 -15
 -2  2  2  ...          ...2         -2  2  2  ...             2
 +--+--+--+--+---------+--+--+       +--+--+--+--+---------+--+--+
 |  |  |  |  |         |  |  |       |  |  |  |  |         |  |  |
 +--+--+--+--+---------+--+--+       +--+--+--+--+---------+--+--+
 ^                                      ^


 .0111 ...............11 = +1/2-e    0.11 ..............11 = 1-e

 .00 .................01 = +e        0.100 .............00 = 1/2

 .00 .................0 = 0          0.00...............01 = e

 .111 ................11 = -e        0.00 ..............00 = 0

 .100 ................   = 1/2       1.11 ..............11 = -e

                                     1.10 ..............00 = -1/2

                                     1.00 ..............01 = -1+e = -(1-e)

                                     1.00 ..............00 = -1


               -16                               -15
 Where:    e = 2                     Where:  e = 2

                          -16                           -15
 Range:    -1/2 to +1/2 - 2          Range:  -1 to +1 - 2

    I submit that one could interpret the requirement for absolute
coordinate data to be in the range -1/2 to +1/2 - e as requiring that
two different number systems should be used.  Thinking along those
lines, System A has the advantage that you never get handed a number out
of range, which saves some checking worries.  It also has one whole bit
more of precision.

    I further submit that having two systems to contend with merely
clouds the issue and requires extra coding.  It makes more sense just to
stick with System B above.  Among the advantages in its use are:

    1.  The single system can handle both absolute and relative
        coordinates.




Kelley & Meir                                                   [Page 2]

RFC 387      Experience Implementing Net Graphics Protocol   August 1972


    2.  If an absolute coordinate exceeds range, simply forcing the sign
        bit on causes a nice wrap-around.

    3.  The representation is the same as the mantissa for floating
        point numbers on most machines.  Notice, however, that mantissas
        of normalized floating point numbers are not in the range for
        absolute coordinates.  The program will have to shift the
        mantissa until exponent is 0.

    It may be that few of us interpreted the NGP document to mean two
number systems were needed.  If that is the case, so much the better.
In any case, until shaken from the position by the overwhelming force of
contrary logic, we will, in all of our implementations, use System B
above for both absolute and relative coordinates.

The TEXTR Command
-----------------

    The last paragraph on page 4 of RFC 292 says, "...a command be
included only if its output is a function solely of the current command
and the "beam position" current at the start of the command.  In other
words, the interpreter for level 0 need have no internal storage for
'modes' or pushdown stacks."

    In the case of the Computek display, most of the NGP commands
correspond to capabilities of the device. The lone exception is the
TEXTR command. There are two ways to know what beam position to return
to after the string is displayed. One way is to read the cursor position
from the display just before doing the string output. This is no good
because it requires reading from the device (which we can't do until
input protocols are implemented). Also, on this device, the cursor
position is accurate only to within 4 scope points.

    The second way to know what beam position to return to is to monitor
all motions of the beam in software. Thus our implementations of NGP-0
to Computek translations will employ a software X register and Y
register. On absolute commands, the registers will be set to the
coordinates for that command.  On relative commands, the coordinate data
will be added to the registers.  At the beginning and end of picture,
these registers will be set to 0.

    The TEXTR command will also cause these software beam registers to
be changed.  That is, the X register will be incremented for each
character of the string to correspond to what is happening in the
display itself.






Kelley & Meir                                                   [Page 3]

RFC 387      Experience Implementing Net Graphics Protocol   August 1972


                                APPENDIX

                     NGP-0 to PDP-10 Floating Point
                     ------------------------------

       The NGP-0 looks at all data numbers (X and Y parameters) as a
fraction number in the following format (16 bits per number).


             +--+--+--+--+--+--+-----------------+--+--+--+--+
             |  |  |  |  |  |  | ...         ... |  |  |  |  |
             +--.--+--+--+--+--+-----------------+--+--+--+--+
Bit position   0  1  2  3 ......                        14 15



with the binary point assumed between bits 0 and 1.  Bit 0 is the sign
bit and all negative numbers are represented as their two's complement.
The PDP-10 machine code representation of fractions in floating point
(mantissa part) is very similar to the above (with one exception--the
number -1), so the transformation could be obtained simply by two
operations, move and substitute.


                         Data (X,Y) Conversion
                         ---------------------

   NGP (extreme points)                    Floating Point (PDP-10)

        (16 bits)                                 (36 bits)
                                           exp   mantissa

1/2   0.1000 . . . . . .0              0 10000000  10 . . . . . .0

-1/2  1.1000 . . . . . .0              1 01111111  10 . . . . . .0

-1    1.00   . . . . . .0              1 01111101  10 . . . . . .0
                                                        Special case

1-e   0.11   . . . . . .1              0 10000000  1111 . . . . .1











Kelley & Meir                                                   [Page 4]

RFC 387      Experience Implementing Net Graphics Protocol   August 1972


    Translation from NGP into floating point for PDP-1O:

    1.  Move sign bit (leftmost one) to sign bit.

    2.  Move fraction part (15 bits) to mantissa part (left justified;
        fill with zero's to right).

    3.  Fill in exponent part (8 bits) according to:

        a.  If positive number      exp = 10000000 = (80) hex

        b.  If negative number      exp = 01111111 = (7F) hex

        c.  Exception _in_only_ one number

            -1 in NGP (negative sign and fraction all zero's)

            (1)  mantissa becomes same as -1/2

            (2)  exponent becomes the one's complement of (82) hex
                 = (7D) hex

    The methods of conversion will remain the same regardless of the
    number of bits (up to 24) that are used for the NGP fraction.



         [ This RFC was put into machine readable form for entry ]
         [ into the online RFC archives by Alex McKenzie with    ]
         [ support from GTE, formerly BBN Corp.             9/99 ]





















Kelley & Meir                                                   [Page 5]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

onResize

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る