diff --git a/doc/_info_/xgp.writes b/doc/_info_/xgp.writes new file mode 100644 index 00000000..78571559 --- /dev/null +++ b/doc/_info_/xgp.writes @@ -0,0 +1,211 @@ +Date: 11 Sep 1977 2232-PDT +From: HPM at SU-AI (Hans Moravec) +To: DLW at MIT-AI + + Character Mode + + +In character mode, the XGP can be used to print text using one or +more fonts and to draw vectors. Modes 0 and 13 are the character +modes for the XGP. In these modes, each 36-bit word is interpreted +as five 7-bit bytes. There is no fixed mapping between byte values +and particular graphic symbols. The graphic symbol for any byte is +defined by the current font in use. Certain byte values have special +meanings consistent with ascii, and one byte value, octal 177, is +used as an escape which gives the bytes that follow a special +meaning. + +Character mode permits vectors and multiple active text lines. The +system must be presented with vectors and text sorted by ascending +values of Y0 (top scan line number for text or vectors); otherwise, +the output will be wrong. + +The 7-bit bytes taken from the user's buffer in character mode are +interpreted as follows: + + Byte Value Usual meaning Escape meaning + + 0 Null -- byte is ignored Normal + 1 Normal XGP ESCAPE 1 + 2 Normal XGP ESCAPE 2 + 3 Normal XGP ESCAPE 3 + 4 Normal XGP ESCAPE 4 + 5:10 Normal Reserved + 11 TAB Normal + 12 LF Normal + 13 Normal Reserved + 14 FF Normal + 15 CR Normal + 16:37 Normal Reserved + 40:176 Normal Normal + 177 ESCAPE Normal + +NORMAL means that the definition of this byte in the current font +will be printed. If this byte is undefined in the current font, it +will be ignored. + +ESCAPE means that the next byte will have an alternate meaning +selected from the column ESCAPE MEANING. + +TAB produces a column select to the first column which is at least +the width of a blank to the right of the current column position, and +some multiple of 8 blank widths to the right of the left margin. + +LF activates the current text line. The current text will be queued +to be printed, and then the default Y-position of text will be +advanced by the number of scan lines it takes to draw this text line, +plus the number of scan lines specified by the current interline +spacing value XLINE (see functions 2 and 3--read and set margins--of +the XGP MTAPE UUO on page 290). This new default Y-position will be +used for the next text line (unless changed by a vector command or +ESCAPE 3). + +FF activates the current text line, then causes a page eject after +the current text line is printed, and sets the default Y-position to +the first scan line below the top of page margin (TMAR) on the new +page. See also functions 2 and 3--read and set margins--of the XGP +MTAPE UUO on page 290 for the effects of FF. + +CR causes a column select to the current left margin to be generated. + +XGP ESCAPE 1 ('177&'001) causes the next 7-bit byte to be read as a +special operation code. The following codes are implemented: + + CODE XGP ESCAPE 1 MEANING + + 0:17 FONT SELECT. The code, 0 to 17, is taken as the font + identification number of the font to be used. + + 20:37 Reserved for future use. + + 40 COLUMN SELECT. The next 14 bits (2 bytes) are taken + modulo =4096 as the absolute X-position to print at + next. The intention is to allow arbitrary-width + spaces for text justification. + + 41 UNDERSCORE. The next 7-bit byte is taken in two's + complement as the relative number of the scan line on + which the underscore is to occur, where zero + represents the baseline of the text, negative values + represent scan lines above the baseline and positive + values scan lines below it. The next 14 bits (2 + bytes) are taken modulo =4096 as the length of the + underscore. If the underscore command is the first + thing done on a new text line, the baseline used will + be the baseline of the current font. + + 42 LINE SPACE. The current text line is activated and + queued to print. Then the default Y-position of text + is advanced by the number of scan lines it takes to + draw this text line, plus the number of scan lines + given by the next byte. Thus, this is like LF + (linefeed) but allows using a different interline + spacing value (XLINE) for this one text line. + + 43 BASELINE ADJUST. The next 7 bits are taken in two's + complement as the baseline adjustment to the current + font. The adjustment sticks until reset by another + BASELINE ADJUST or by a FONT SELECT, or until modified + by a RELATIVE BASELINE ADJUST (52 below). The + intention is to allow a font to be used for subscripts + and superscripts. Increment baseline for superscript, + decrement for subscript. Values 0:77 are increments; + 100:177 are decrements: 100 means -100, 177 means -1. + + 44 PRINT THE PAPER PAGE NUMBER. The paper page number is + set to 1 by an FF (formfeed). It is incremented each + time the paper is cut. The decimal value of this + count is printed. + + 45 ACCEPT HEADING TEXT AND PRINT IT NOW. The next byte + is a count of the number of bytes of heading text to + follow. Those bytes will be read into the heading + line, which will be printed 1) now and 2) immediately + after an FF is inserted to begin a new page because of + an LF (linefeed) or LINE SPACE command that has set + the Y-position for printing to a scan line beyond the + end of the page body (as defined by PMAR). Only one + text line is allowed in the heading, which must end + with an LF or a LINE SPACE (unless the byte count is + zero). A zero byte count means flush any previously + specified heading text. + + 46 START UNDERLINE. Set the left end of an underline. + See the STOP UNDERLINE command below. + + 47 STOP UNDERLINE. The next byte is taken in two's + complement as the relative number of the scan line on + which the underline is to be written (same meaning as + in UNDERSCORE--41 above: zero represents the baseline + of the text, negative values represent scan lines + above the baseline and positive values scan lines + below it). The extent of the underscore is defined by + this command and the START UNDERLINE command above. + If this command is not preceded by a START UNDERLINE + command, the results will be unpredictable. No + underline will happen until this command is given. + Beware of column selects. + + 50 SET INTERCHARACTER SPACING. The next byte is + interpreted as the intercharacter spacing, which is + not currently used for anything. This code is + included for compatibility with MIT. + + 51 STOP UNDERLINE OF SPECIFIED THICKNESS. This is just + like STOP UNDERLINE (47 above) except that the first + byte after the 51 is interpreted as the desired + thickness (in scan lines) of the underlining. The + second byte after the 51 is taken in two's complement + as the relative number of the first scan line on which + the underline is to be written (same meaning as in + UNDERSCORE--41 above: zero represents the baseline of + the text, negative values represent scan lines above + the baseline and positive values scan lines below it). + + 52 RELATIVE BASELINE ADJUST. This is the same as + BASELINE ADJUST (43 above) except that the baseline is + adjusted relative to any previous adjustment. The + next 7 bits are taken in two's complement as the + relative baseline adjustment to the current font. The + adjustment sticks until reset by a BASELINE ADJUST + (43) or a FONT SELECT, or until modified by another + RELATIVE BASELINE ADJUST. + +XGP ESCAPE 2 ('177&'002) causes the next 7-bit byte to be taken as a +twos-complement column increment. Values 0:77 are positive +increments; 100:177 are negative increments: 100 means -100, 177 +means -1. + +XGP ESCAPE 3 ('177&'003) causes the next 2 bytes to be taken as the +scan line number on which to start this text line. Scan line 0 is +the first scan line on the page (immediately following the cut). The +topmost scan line of the present text line will be placed on the scan +line indicated in this command. If there is no current text line, +the next text line will be put there. The system is not able to +queue text or vectors for scan line 0 of the first page of a +transfer; if it is necessary to queue things on scan line 0, it is +recommended that a page be output prior to that attempt. + +XGP ESCAPE 4 ('177&'004). This escape is used to specify a vector. +It is followed by =11 bytes describing the vector: + + 2 bytes of Y0 Number of first scan line of vector. + 2 bytes of X0 Column position of left edge of first scan line + of the vector. + 3 bytes of DX Delta X: 1 bit of sign; 11 bits of integer; 9 + bits of fraction. + 2 bytes of N The number of scan lines on which this vector + is visible. + 2 bytes of W The column width of each scan line. + + +The system must be presented with vectors and text sorted by +ascending values of Y0. Otherwise, the output will be wrong. + + +The escape significances of codes 5 through 10, 13, and 16 through 37 +are not defined at the present time but are reserved for future use. + +------- + + \ No newline at end of file diff --git a/doc/sysdoc/xgp.writup b/doc/sysdoc/xgp.writup new file mode 100755 index 00000000..923489c4 --- /dev/null +++ b/doc/sysdoc/xgp.writup @@ -0,0 +1,158 @@ +Character Mode for the XGP + +The PDP-11 program for the XGP interprets character strings in files +in the following format: + + +Byte Usual meaning Escape significance + +0 Null - byte is ignored Normal +1 Normal XGP ESCAPE 1 +2 Normal XGP ESCAPE 2 +3 Normal XGP ESCAPE 3 +4 Normal XGP ESCAPE 4 +5-7 Normal Reserved +10 Backspace Normal +11 TAB Normal +12 LF Normal +13 Normal Reserved +14 FF Normal +15 CR Normal +16-37 Normal Reserved +40-176 Normal Normal +177 ESCAPE Normal + +Normal means the definition of this byte in the current font will be +printed. If this byte is undefined in the current font, it will be +ignored. + +ESCAPE causes the next byte to have an alternate meaning selected +from the column "Escape significance". + +Backspace spaces to the left the width of +one space in the current font, including inter-character +spacing. + +TAB produces a column select to the column which is at least the +width of a blank to the right of the current column position, and +some multiple of 8 blank widths to the right of the left margin. +(this computation of the width includes the inter character spacing) + +LF activates the current text line. The current text will be queued +to printed. This line will be printed at a vertical location such +that the distance between the baselines of of it and the preceeding line +is equal to the vertical spacing parameter, unless this would cause +the subscripts of the former line to overlap vertically with the superscripts +of this line. It will then be pushed down to make this not the case. + +FF, like LF, activates the text. In addition, FF causes a page +eject after the current text line is printed. FF also sets the +defalut Y position to the first line below the top of page margin on +the new page. + +The program will automatically form feed when the next text line would +place characters below the bottom margin. Sequential form feeds will +increment the page number but will otherwise be ignored. + +CR causes a column select to the current left margin to be +generated. This can be used to produce overprinting. + + +XGP ESCAPE 1 ('177&'001) causes the next 7 bits to be read as a +special operation code. The following codes are implemented: + + 0-3 Font select. + The code, 0 to 3 is taken as the font identification + number of the font to use. + + 4-37 Reserved for future use. + + 40 XGP Column Selector + The next 14 bits are taken as the + x-position to print at next. (The intention is to + allow arbitrary width spaces for text justification.) + + 41 XGP Underscore + The next 7 bits are taken as the scan-line number on + which to underscore. It is taken as a 2's complement + increment to the base line. Zero is on the baseline, + positive bytes are down from it. Underscores outside + the range of the other characters on the line will be + ignored. The next 14 bits are taken as the length + of the underscore. + + 42 Line space. + This does a line feed and then takes the byte as the + number of lines between this line's baseline and the + baeline of the following line. + + 43 Base-line adjust. + The next 7 bits are taken in two's complement as the + base-line adjustment to the current font. The + adjustment sticks until reset by another adjust + command or a font select. The intention is to allow a + font to be used for subscripts and superscripts. + (Increment baseline for superscript, decrement for + subscript). + +** 44 Print the paper page number. + The paper page number is set to 1 by a form feed. It + is incremented each time the paper is cut. The + decimal value of this count is printed. + +** 45 Accept heading text. + The next byte is a count of bytes to follow. Those + bytes will be read into the heading line. When that + count is exhausted, the heading line will be printed. + If a line feed or line space command is given that + would cause text to be printed below the current text + area, a form feed is inserted by the XGP and if a + heading is defined, it will be printed. + + 46 Start Underline. + Set the left end of an underline. See Stop Underline. + + 47 Stop Underline. + The next byte is the scan line on which to write the + underline (same as XGP Underscore). The extent of + the underscore is defined by this command and Start + Underline. If this command is not preceded by a Start + Underline, it will underline from the left margin. + Beware of column selects. No underline will happen + until this command is given. + + 50 Takes the next byte as the intercharacter spacing + This is reset to zero at the end of each line. + +XGP ESCAPE 2 ('177&'002) causes the next 7 bits to be taken as the +column increment. This quantity is signed: 0-77 are positive +increments 100 to 177 are negative increments (100  -100, 177  -1). + +XGP ESCAPE 3 ('177&'003) causes the next 2 bytes to be taken as the +scan line number on which to start this text line. Scan line 0 is +the first scan line on the page (immediately following the cut). +The topmost scanline of the present text line will be placed on the +scan line indicated in this command. + + +** XGP ESCAPE 4 ('177&'004). This escape is used to specify a vector. +It is followed by 11 bytes describing the vector: + + 2 bytes Y0 Scan line number of first line of vector. + 2 bytes X0 Column position of left edge of first line + of the vector. + 3 bytes DX Delta X. 1 bit of sign; 11 bits of integer; + 9 bits of fraction. + 2 bytes N The number of scan lines on which this vector + is visible. + 2 bytes W The column width of each scan-line. + +The XGP service must be presented with vectors sorted by +ascendending values of Y0. If the vectors are not sorted, the +output will be wrong. + +The escape significance of codes 5 through 10, 13, and 16 through +37 is not defined at the present time but reserved for future use. + +$ +  \ No newline at end of file