home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / mskermit / msxaaa.mss < prev    next >
Text File  |  2020-01-01  |  20KB  |  589 lines

  1. @Style<Justification On, Hyphenation On, WidestBlank 1.4, Spacing 1,
  2.         Spread 1, Indent 0, HyphenBreak Off, SingleSided>
  3. @Use<Hyphendic="KER:KUSER.HYP">
  4. @Modify<Quotation,Indentation 0, Above 1, Below 1, Spacing 1>
  5. @Modify<Example, Above 1, Below 1, Blanklines Hinge>
  6. @Modify<Verbatim, Leftmargin 0>
  7. @Modify<Itemize, Above 1, Below 1, Spacing 1, Spread 1>
  8. @Modify<Enumerate, Above 1, Below 1, Spacing 1, Spread 1>
  9. @Modify<Description, Above 1, Below 1, Spacing 1>
  10. @Define<Q,FaceCode R>
  11. @Define<QQ,FaceCode R,AfterEntry=["],BeforeExit=["]>
  12. @Define<SubH,Use Display,FaceCode R,Above 1.6,Below 1>
  13. @Case<Device,
  14.  Imagen300="@Use(AuxFile='KERIMP.AUX')
  15.     @Define<Q,FaceCode U>
  16.     @Define(QQ,FaceCode U,AfterEntry=[@r<``>],BeforeExit=[@r<''>])
  17.     @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>
  18.     @Modify<Insert,Spacing 1>
  19.     @Modify<Verbatim,FaceCode U>
  20.     @Modify<Example,FaceCode U,spacing 1.2>
  21.     @Modify<Itemize,Spread 0.8>
  22.     @Style<FontFamily SmallRoman12,Spacing 1.6,SingleSided>",
  23.  X9700="@Use<AuxFile='KERMX9.AUX'>
  24.     @Style<FontFamily Univers10, DoubleSided, Spacing 0.9, Spread 0.8>
  25.     @Style<Scriptpush No>
  26.     @Define<Q,FaceCode U>
  27.     @Define(QQ,FaceCode U,AfterEntry=[@r<``>],BeforeExit=[@r<''>])
  28.     @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>
  29.     @Modify<Description,Spacing 0.8,Spread 0.75> 
  30.     @Modify<Quotation,Spacing 0.8,Spread 0.75> 
  31.     @Modify<Enumerate,Spacing 0.8,Spread 0.75> 
  32.     @Modify(Verbatim,Spacing 0.8,Spread 0.75,FaceCode U)
  33.     @Modify<Example,FaceCode U, Spacing 1.1>
  34.     @Modify[Itemize, Numbered < @,- >, Spacing 0.8, Spread 0.5]"
  35.  >
  36. @PageHeading(Even,Left="Page @ref(page)",
  37. Right="@b<MS-DOS Kermit, Specification for System-Dependent Modules>")
  38. @PageHeading(Odd,Right="Page @ref(page)",
  39. Left="@b<MS-DOS Kermit, Specification for System-Dependent Modules>")
  40.  
  41. @heading(Specification for MS-DOS Kermit System-Dependent Modules)
  42.  
  43. @center(@i<by Jeff Damens, Columbia University>)
  44.  
  45. @begin<quotation,use i>
  46. This document applies to Verson 2.28 of MS-DOS Kermit, and it has some
  47. updates at the end for Version 2.29.  It has not been updated for version
  48. 2.30.
  49. @end<quotation>
  50.  
  51. All the system-@|independent global data structures used in Kermit-MS are
  52. defined in the file @q<MSDEFS.H>.
  53.  
  54. The routine @q(MSX@i<xxx>.ASM) contains system-@|dependent support for
  55. system @i<xxx>, except for terminal emulation, which is in
  56. @q(MSY@i<xxx>.ASM), described below.
  57.  
  58. The routines in the MSX module may change any registers but
  59. the stack pointer and segment registers, unless otherwise noted.  A
  60. routine that returns via a RET instruction is said to return normally;
  61. a routine that skip returns is one that returns to three bytes past
  62. the normal return address.
  63.  
  64. Global variables that must be defined in the system-dependent module:
  65.  
  66. @begin(description)
  67. XOFSNT@\byte.  This should be set to a non-zero value if we are doing
  68. flow control and have sent an XOFF character to the remote host, zero
  69. otherwise.
  70.  
  71. MACHNAM@\byte.  A $-terminated string identifying the machine
  72. this version of Kermit is for; it is printed when Kermit
  73. starts up.
  74.  
  75. SETKTAB@\byte.  A keyword table associating terminal key names to
  76. 16-bit scan code values, used in the set key command.  If the
  77. kermit version can accept arbitrary decimal values as scan
  78. codes, the word "SCAN" should appear in the table with a scan
  79. value of -1.  If key redefinition is not implemented, the
  80. first byte of the table should be a zero.
  81.  
  82. SETKHLP@\byte.  A $-terminated string to be printed when ? is typed in
  83. the SET KEY command.  This is usually simply a list of the key
  84. names in SETKTAB.  SETKHLP must be defined even if key
  85. redefinition is not implemented, to satisfy the linker; if key
  86. redefinition is not implemented, SETKHLP will never be
  87. displayed.
  88.  
  89. COUNT@\word.  The number of characters in the serial input buffer, if
  90. known.  This is how Kermit knows to send an XON if the serial
  91. handler has sent an XOFF.  If the number of characters in the
  92. buffer isn't known, COUNT should be 0.
  93. @end(description)
  94.  
  95.  
  96. These are the required entry points for the system dependent dependent
  97. module @q(MSX@i<xxx>.ASM).
  98. @begin(description,group,spread 0.5)
  99. SERINI
  100.  
  101. Parameters@\None.
  102.  
  103. Returns@\Normally, no return value.
  104.  
  105. Description@\Perform any initialization that must be done before the
  106.     serial port can be used, including setting baud rate,
  107.     interrupt vectors, etc.  Parity and baud rate should be set
  108.     according to the values in the PORTINFO structure.  The external
  109.     variable PORTVAL points to the PORTINFO structure for the
  110.     current port.  Calling SERINI more than    once without an
  111.     intervening call to SERRST should have no effect. 
  112. @end(description)
  113. @begin(description,group,spread 0.5,above 2)
  114. SERRST
  115.  
  116. Parameters@\None.
  117.  
  118. Returns@\Normally, no return value.
  119.  
  120. Description@\Undoes any initialization done by SERINI, including
  121.     resetting the serial port, restoring any interrupt vectors
  122.     changed by SERINI, etc.  Calling this more than once without
  123.     an intervening call to SERINI should be harmless.
  124. @end(description)
  125. @begin(description,group,spread 0.5,above 2)
  126. CLRBUF
  127.  
  128. Parameters@\None.
  129.  
  130. Returns@\Normally, no return value.
  131.  
  132. Description@\Remove and discard from the serial port's input buffer any
  133.     characters sent by the remote host that have not yet been read
  134.     by Kermit, and set COUNT to 0.  This is used before a file
  135.     transfer to flush NAK's that accumulate in the buffer when the
  136.     remote host is in server mode.
  137. @end(description)
  138. @begin(description,group,spread 0.5,above 2)
  139. OUTCHR
  140.  
  141. Parameters@\A character in AH.
  142.  
  143. Returns@\Skip returns if the character has been transmitted; returns
  144.     normally if the character can not be transmitted because of a
  145.     hardware error.
  146.  
  147. Description@\Sends the character in AH out the currently selected serial
  148.     port.  OUTCHR can assume that SERINI will have been called
  149.     previously. OUTCHR should call the external routine DOPAR to set
  150.     the parity of the character if the communications hardware
  151.     doesn't automatically set parity.  Flow control should be
  152.     honored; the external variable PORTVAL contains a pointer to a
  153.     PORTINFO structure (as defined in @q(MSDEFS.H)) containing the
  154.     current flow control definitions.
  155. @end(description)
  156. @begin(description,group,spread 0.5,above 2)
  157. COMS
  158.  
  159. Parameters@\None.
  160.  
  161. Returns@\Normally if a parse error is encountered, skip returns otherwise.
  162.  
  163. Description@\Called by the SET PORT command.  On a machine with
  164.     multiple serial ports, COMS should parse for the name or
  165.     number of a serial port and make that the port used by
  166.     succeeding calls to SERINI, PRTCHR, OUTCHR, and SERRST.  It
  167.     should set the external variable PORTVAL to point to one of the
  168.     external port structures PORT1 or PORT2, and set COMFLG in the
  169.     FLAGS structure to 1 for port one, 0 for port 2.  For
  170.     implementations that use only one serial port, COMS should print
  171.     a message to that effect and skip return.
  172. @end(description)
  173. @begin(description,group,spread 0.5,above 2)
  174. VTS
  175.  
  176. Parameters@\None.
  177.  
  178. Returns@\Normally if a parse error is encountered, skip returns otherwise.
  179.  
  180. Description@\Parses for an ON or OFF, sets HEATH-19 emulation while in
  181.     terminal emulation appropriately.  The VTFLG field of the FLAGS
  182.     structure should be set non-zero if HEATH-29 emulation is on,
  183.     zero otherwise.  If HEATH-19 emulation is not done, VTS should
  184.     print a message and skip return.
  185. @end(description)
  186. @begin(description,group,spread 0.5,above 2)
  187. DODEL
  188.  
  189. Parameters@\None.
  190.  
  191. Returns@\Normally, no return value.
  192.  
  193. Description@\Erases the character immediately to the left of the
  194.     cursor from the screen, then backs up the cursor.
  195. @end(description)
  196. @begin(description,group,spread 0.5,above 2)
  197. CTLU
  198.  
  199. Parameters@\None.
  200.  
  201. Returns@\Normally, no return value.
  202.  
  203. Description@\Move the cursor to the left margin, then clear the line.
  204. @end(description)
  205. @begin(description,group,spread 0.5,above 2)
  206. CMBLNK
  207.  
  208. Parameters@\None.
  209.  
  210. Returns@\Normally, no return value.
  211.  
  212. Description@\Clears the screen and homes the cursor.
  213. @end(description)
  214. @begin(description,group,spread 0.5,above 2)
  215. LOCATE
  216.  
  217. Parameters@\None.
  218.  
  219. Returns@\Normally, no return value.
  220.  
  221. Description@\Homes the cursor.
  222. @end(description)
  223. @begin(description,group,spread 0.5,above 2)
  224. LCLINI
  225.  
  226. Parameters@\None.
  227.  
  228. Returns@\Normally, no return value.
  229.  
  230. Description@\Performs any system-dependent initialization required by
  231.     this implementation.
  232. @end(description)
  233. @begin(description,group,spread 0.5,above 2)
  234. PRTCHR
  235.  
  236. Parameters@\None.
  237.  
  238. Returns@\Normally, with the next character from the currently selected
  239.     serial port in AL.  Skip returns if no character is available.
  240.  
  241. Description@\Reads the next character from the current serial port.
  242.     PRTCHR can assume SERINI has been called previously, and
  243.     should handle flow control correctly.
  244. @end(description)
  245. @begin(description,group,spread 0.5,above 2)
  246. DOBAUD
  247.  
  248. Parameters@\None.
  249.  
  250. Returns@\Normally, no return value.
  251.  
  252. Description@\Sets the baud rate for the current port.  The baud rate
  253.     should be obtained from the BAUD field of the PORTINFO
  254.     structure, pointed to by the external variable PORTVAL.
  255. @end(description)
  256. @begin(description,group,spread 0.5,above 2)
  257. CLEARL
  258.  
  259. Parameters@\None.
  260.  
  261. Returns@\Normally, no return value.
  262.  
  263. Description@\Clears from the cursor to the end of the current line.
  264. @end(description)
  265. @begin(description,group,spread 0.5,above 2)
  266. DODISK
  267.  
  268. Parameters@\None.
  269.  
  270. Returns@\Normally, no return value.
  271.  
  272. Description@\Sets the external variable DRIVES to the number of disk drives
  273.     attached to the machine.
  274. @end(description)
  275. @begin(description,group,spread 0.5,above 2)
  276. GETBAUD
  277.  
  278. Parameters@\None.
  279.  
  280. Returns@\Normally, no return value.
  281.  
  282. Description@\Store current baud rate of the currently selected port in
  283.     the BAUD field of the current PORTINFO structure, which is
  284.     pointed to by PORTVAL.  If the baud rate is to default to a
  285.     particular value, this routine can store that value into the
  286.     BAUD field instead. 
  287. @end(description)
  288. @begin(description,group,spread 0.5,above 2)
  289. BEEP
  290.  
  291. Parameters@\None.
  292.  
  293. Returns@\Normally, no return value.
  294.  
  295. Description@\Rings the terminal bell.
  296. @end(description)
  297. @begin(description,group,spread 0.5,above 2)
  298. PUTHLP
  299.  
  300. Parameters@\A pointer to a string in AX.
  301.  
  302. Returns@\Normally, no return value.
  303.  
  304. Description@\Writes the null-terminated string given in AX to the
  305.     terminal.  This is used to display help and status messages.
  306.     The IBM and Rainbow versions write the string in a reverse
  307.     video box.
  308. @end(description)
  309. @begin(description,group,spread 0.5,above 2)
  310. PUTMOD
  311.  
  312. Parameters@\A pointer to a string in AX.
  313.  
  314. Returns@\Normally, no return value.
  315.  
  316. Description@\Writes the null-terminated string given in AX to the last
  317.     line of the screen, in inverse video if possible.
  318. @end(description)
  319. @begin(description,group,spread 0.5,above 2)
  320. CLRMOD
  321.  
  322. Parameters@\None.
  323.  
  324. Returns@\Normally, no return value.
  325.  
  326. Description@\Clears the line written by PUTMOD.
  327. @end(description)
  328. @begin(description,group,spread 0.5,above 2)
  329. POSCUR
  330.  
  331. Parameters@\Row in DH, column in DL.
  332.  
  333. Returns@\Normally, no return value.
  334.  
  335. Description@\Positions the cursor to the row and column given in DX.
  336.     Rows and columns both originate at 0 (not 1!).
  337. @end(description)
  338. @begin(description,group,spread 0.5,above 2)
  339. SENDBR
  340.  
  341. Parameters@\None.
  342.  
  343. Returns@\Normally, no return value.
  344.  
  345. Description@\Send a break to the current serial port.
  346. @end(description)
  347. @begin(description,group,spread 0.5,above 2)
  348. SHOWKEY
  349.  
  350. Parameters@\Pointer to a terminal argument block in AX (see TERM below).
  351.  
  352. Returns@\Normally, with a string pointer in AX and the length of the
  353.     string in CX.
  354.  
  355. Description@\Called by the SHOW KEY command.  Reads a key from the
  356.     terminal and returns a string containing
  357.     implementation-dependent information about the key. In the
  358.     usual case, the string contains the key's (machine-dependent)
  359.     scan code, and the key's definition (if any) from the terminal
  360.     argument block.  The length of the returned string should be
  361.     returned in CX.  The string may contain any characters;
  362.     unprintable characters will be quoted when the string is
  363.     printed.  If the implementation does not support key
  364.     redefinition, SHOWKEY may return a static string saying so.
  365. @end(description)
  366. @begin(description,group,spread 0.5,above 2)
  367. TERM
  368.  
  369. Parameters@\Pointer to terminal argument block in AX.
  370.  
  371. Returns@\Normally, no return value.
  372.  
  373. Description@\Do terminal emulation, based on argument block described
  374.     below...
  375. @end(description)
  376.  
  377. The following entry points were added for version 2.29 by Joe R. Doupnik
  378. of Utah State University (May 1986):
  379. @begin(description,group,spread 0.5,above 2)
  380. DTRLOW
  381.  
  382. Parameters@\None.
  383.  
  384. Returns@\Return-skip normally or just Return if command not confirmed.
  385.  
  386. Description@\Parses HANGUP command and calls local procedure SERHNG to lower
  387. modem control lines DTR and RTS.  Most MS Kermits have not implemented SERHNG;
  388. a "not implemented" message results in these cases.
  389. @end<description>
  390. @begin(description,group,spread 0.5,above 2)
  391. DUMPSCR
  392.  
  393. Parameters@\None.
  394.  
  395. Returns@\Normally.
  396.  
  397. Description@\Copies text from the screen to a file. Word DMPNAME holds
  398. the address (offset in data segment) of a zero terminated
  399. string of the filename or device; the default string is
  400. @q<KERMIT.SCN>; MSSSET stores this string. Method of copying
  401. is to capture the screen to a buffer and read out the
  402. text to a file, with lines trimmed of trailing blanks and
  403. terminated by CR/LF. A Form Feed ends the file. The filename
  404. is checked for collision with system, readonly, subdirectory
  405. types etc and a complaint message is displayed if such
  406. a collision occurs.  The file is opened and closed for each
  407. screen dump operation.  Current implementations are on IBM
  408. and Rainbow machines, and they append new material to a
  409. pre-existing file. On other systems a simple Return is done.
  410. @end<description>
  411. @begin(description,group,spread 0.5,above 2)
  412. IHOSTR
  413.  
  414. Parameters@\None.
  415.  
  416. Returns@\Normally.
  417.  
  418. Description@\Initializes the remote host for our reception of a file by
  419. sending the flow-on character (XON normally) to release any
  420. held data. Called by receive-file code just after initing
  421. the serial port.
  422. @end<description>
  423. @begin(description,group,spread 0.5,above 2)
  424. IHOSTS
  425.  
  426. Parameters@\None.
  427.  
  428. Returns@\Normally.
  429.  
  430. Description@\Initializes the host for our sending of a file by sending the
  431. flow-on character (XON normally) to release any held data, such as NAKs,
  432. flushes the serial port input buffer, waits one second (by calling SLEEP), and
  433. exits if the buffer is empty.  Otherwise, the cycle of clear buffer, sleep one
  434. second, check buffer is repeated. Called by send-file routine just after
  435. initializing the serial port.
  436. @end<description>
  437. @begin(description,group,spread 0.5,above 2)
  438. VTS
  439.  
  440. Parameters@\None.
  441.  
  442. Returns@\Skip-return normally or just Return if parser error.
  443.  
  444. @begin<multiple>
  445. Description@\Parses SET TERM commands. The IBM version has many keywords
  446. which are further parsed and cause jumps to action routines
  447. within this procedure. Non-IBM Kermits usually parse the
  448. keywords ON and OFF, for Heath-19 emulation or not. Common
  449. to all MS Kermits is the setting of global byte @q<FLAGS.VTFLG>
  450. indicating the terminal emulation type (types are defined
  451. in the header file @q<MSSDEF.H>). For the VT102 emulator in the
  452. IBM Kermit VTS also writes into structure VTEMU to pass
  453. information to the emulator about colors, tabstops, line-wrap,
  454. and other Set Term parameters and controls global byte REFRESH
  455. passed to module MSYIBM to govern screen refresh methodology.
  456. Small local parsing support procedures are included here.
  457.  
  458. Structure VTEMU is defined in header file @Q<MSSDEF.H> and contains the
  459. following fields:
  460. @end<multiple>
  461. @begin(description,group,spread 0.5,above 2)
  462. VTFLGST@\Byte. Holds VT102 setup flag bits, which when set mean -
  463. @begin<multiple>
  464. @begin<description,leftmargin +4,indent -4>
  465. VSNEWLINE (01H)@\ANSI Newline mode active
  466.  
  467. VSWRAP (02H)@\Line wrap is active
  468.  
  469. VSSHIFT3 (04H)@\Sharp sign (#) replaced by Pound Sterling
  470.  
  471. VSKEYCLICK (08)@\Keyclick on
  472.  
  473. VSMARGINBELL (10H)@\Sound bell when cursor passes column 72
  474.  
  475. VSCURSOR (20H)@\Cursor is a block (vs underline)
  476.  
  477. VSSCREEN (40H)@\Screen is to be reverse video
  478. @end<description>
  479. A constant VSDEFAULTS is defined in the header file as the OR of bits above
  480. which is used by the emulator at Kermit startup time in lieu of Set Term.
  481. @end<multiple>
  482.  
  483. VTTBS@\Word. Holds address (offset in data segment) to default
  484. tabstop byte array. This array is located in file MSZIBM.
  485.  
  486. VTTBST@\Word. Holds address (offset in data segment) to active
  487. tabstop byte array. This array is located in file MSZIBM.
  488.  
  489. ATT_PTR@\Word. Pointer (offest in data segment) to video attributes
  490. byte pair (which is stored in file MSZIBM).
  491. @end<description>
  492. Further, global byte FLAGS.VTFLG holds the kind of terminal being emulated.
  493. Kinds are defined in the header file as constants:
  494. @begin<example>
  495. TTGENERIC       0       @r<no emulation>
  496. TTHEATH         1       @r<Heath-19>
  497. TTVT52          2       @r<VT52 submode of VT102>
  498. TTVT102         3       @r<VT102>
  499. TTTYPES         4       @r<number of types defined above.>
  500. @end<example>
  501. @end<description>
  502.  
  503. @begin(description,group,spread 0.5,above 2)
  504. VTSTAT
  505.  
  506. Parameters@\Enter with register DI pointing to status buffer STTBUF.
  507.  
  508. Returns@\Register CX counting the right most column used in status
  509. display and register DI 40 bytes larger that at entry.
  510. Uses normal Return, not Skip-return.
  511.  
  512. Description@\Displays Status information about terminal emulator. Called
  513. by procedure STAT0 in file MSSSET. This procedure is similar
  514. to normal Status ones except the data items are from
  515. structure VTEMU. Command macros for VTSTAT are defined in file
  516. MSXxxx. VTSTAT writes the status information directly to the
  517. screen and returns to STAT0 with character in line pointer
  518. register DI set 40 bytes larger than when entered (even though
  519. several lines may have been displayed) and register CX holding
  520. the number of chars shown on the last line. Non-IBM Kermits
  521. just do a simple Return. Normally VTSTAT is the last Status
  522. item called by STAT0.
  523. @end<description>
  524. Terminal emulation is supplied in the system dependent files @q<MSX>@i<xxx>,
  525. @q<MSY>@i<xxx>, and possibly @q<MSZ>@i<xxx>, depending on the machine. The
  526. terminal "argument block" passed to procedure TERM is listed below; but note
  527. that the VT102 emulator for IBM machines uses an additional global structure
  528. VTEMU.  The terminal argument block passed to the terminal emulator has the
  529. following fields:
  530. @begin(description)
  531. FLGS@\Byte containing flags.  Flags are:
  532.  
  533. @begin(description)
  534.   SCRSAM (80H)@\If on, the terminal emulator shouldn't re-display the
  535.          screen when entered.
  536.  
  537.   CAPT (40H)@\Capture output.  If on, the routine passed in field CAPTR
  538.         is called with each character sent to the screen.
  539.  
  540.   EMHEATH (20H)@\On if terminal emulation is active.  Obsolete.
  541. The preferred method is to examine byte
  542. FLAGS.VTFLG for the terminal type.
  543.  
  544.   HAVTT (10H)@\A key redefinition table is present.
  545.  
  546.   TRNCTL (08H)@\Print control character X as ^X (useful for debugging).
  547.  
  548.   MODOFF (04H)@\Do not display emulator mode line if on.
  549.  
  550.   LCLECHO (01H)@\Echo keyboard characters on the screen in addition to
  551.           sending them to the port.
  552. @end(description)
  553.  
  554. PRT@\Port to use for terminal emulation, used only in mode line.  This
  555.     is just a copy of COMFLG in FLAGS.
  556.  
  557. COLS@\Number of columns on screen.
  558.  
  559. ROWS@\Number of rows on screen.
  560.  
  561. CAPTR@\Routine to call to with each character sent to the screen if
  562.     CAPT flag is on.  Characters are passed in AL.
  563.  
  564. BELLD@\Bell divisor (used only on IBM).
  565.  
  566. KLEN@\Number of keys in key redefinition table, if HAVTT flag is on.
  567.  
  568. KTAB@\Address of key redefinition table.  The key redefinition table is
  569.     a table of KLEN 16-bit scan codes.  Each (machine dependent)
  570.     scan code represents a key that is redefined.
  571.  
  572. KRPL@\Address of key replacement table.  The key replacement table
  573.     parallels the key redefinition table given in KTAB.  Entries in
  574.     the replacement table are 16-bit pointers to redefinitions.
  575.     Each redefinition has a one-byte length, followed by the definition.
  576.  
  577. ESCC@\Escape character (single byte).  When this character is typed to
  578.     the emulator, it should return.
  579.  
  580. BAUDB@\byte.  Bits describing the baud rate so it can be printed on the
  581.     mode line.  This is a copy of the BAUD field in the PORTINFO
  582.     structure.  Currently used only on the IBM.  See @q(MSDEFS.H) for
  583.     possible values.
  584.  
  585. PARITY@\byte.  Current parity to print on the mode line.  This is a
  586.     copy of PARFLG in the PORTINFO structure.  Currently used only
  587.     on the IBM.  See @q(MSDEFS.H) for possible values. 
  588. @end(description)
  589.