home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / cis / cis_b.arc / BPROTO.DOC < prev    next >
Text File  |  1988-04-21  |  109KB  |  2,784 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                     CompuServe Information Service
  24.  
  25.                         VIDTEX  4.0 Standards
  26.  
  27.                                  for
  28.  
  29.                       Terminal Emulator Programs
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40. Copyright 1985
  41. by CompuServe Incorporated, Columbus Ohio
  42.  
  43.                              April, 1985
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                  NOTE
  64.  
  65.                The  information  in  this  document  is
  66.                subject  to  change  without  notice and
  67.                should not be construed as a  commitment
  68.                by CompuServe Incorporated.
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.                               CHAPTER 1
  83.  
  84.                              INTRODUCTION
  85.  
  86.  
  87.  
  88. 1.1  PURPOSE
  89.  
  90. The CompuServe information service is  a  low  cost  remote  computing
  91. service  designed for use by the general public.  It is simple to use,
  92. yet has many very powerful capabilities.  Similar in some respects  to
  93. European   "viewdata"   systems,  the  service  is  based  on  a  tree
  94. structured,  menu  driven  data  base.   The  data  base  consists  of
  95. individual pages or "frames."
  96.  
  97. Currently  CompuServe  supports  a  terminal  standard  for   terminal
  98. emulation   programs.    CompuServe  provides  a  series  of  terminal
  99. executive programs  called  VIDTEX  which  implements  this  standard.
  100. These  executives  implement a common set of features given the widely
  101. varying  capabilities  of  microcomputer   systems.    This   document
  102. describes  the features of the VIDTEX 4.0 software.  VIDTEX implements
  103. error detection and retransmission protocols for the purpose  of  file
  104. transfer and program loading.  This protocol is called the "CompuServe
  105. B Protocol".
  106.  
  107. This document outlines the VIDTEX 4.0 implementation of the  following
  108. capabilities:
  109.  
  110.      Video Processing
  111.           Medium Graphics (128 x 96)
  112.           Fine Graphics (256 x 192)
  113.           Cursor positioning
  114.      Terminal Loop Processing
  115.      Meta Key Processing
  116.      B Protocol
  117.           Error detection.retransmission
  118.           File transfer
  119.  
  120. In general, the Host computer will not  attempt  to  use  any  of  the
  121. advanced   features   unless  the  <ESC>I  interrogation  response  is
  122. implemented by the remote.  The interrogate response  tells  the  Host
  123. which capabilities are implemented in the terminal.  If no response or
  124. an unknown response is received from  the  <ESC>I  interrogation,  the
  125. terminal  is  assumed  to  be  totally "dumb", with no cursor control,
  126. graphics, color capability.
  127.                                                               Page 1-2
  128.  
  129.  
  130. An important exception to the interrogation  prerequisite  is  a  user
  131. request for file transfer when the terminal type is known by the host.
  132. The host software will present a menu of file transfer methods instead
  133. of sending <ESC>I.
  134.                                                               Page 1-3
  135.  
  136.  
  137. 1.2  CONVENTIONS USED IN THIS DOCUMENT
  138.  
  139. Throughout this document the following conventions are used:
  140.  
  141. <xxx> - denotes an ASCII control character where xxx is  the  standard
  142.         name  of  the  character  (e.g.   <ESC>  is  the  ASCII Escape
  143.         character, 1B hex).
  144.  
  145. <x>   - denotes a printable ASCII character (e.g.   <A>  is  an  ASCII
  146.         upper case "A", 41 hex).
  147.  
  148. <nnn> - denotes the  ASCII  character  whose  value  is  nnn  decimal.
  149.         Whenever an expression is given, it is always in decimal.
  150.  
  151. lower case denotes a variable  which  is  actually  substituted  by  a
  152.         string of ASCII characters or a decimal value.
  153.  
  154. UPPER CASE denotes an ASCII character string exactly as shown.
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.                               CHAPTER 2
  168.  
  169.                      USER INTERFACE REQUIREMENTS
  170.  
  171.  
  172.  
  173. 2.1  COMMUNICATIONS
  174.  
  175. If the computer has an internal modem, it must conform to  either  the
  176. Bell 103  or  Bell 212  modulation  standards.   To  communicate  with
  177. CompuServe, the modem must be set to originate mode and full duplex.
  178.  
  179.  
  180.  
  181. 2.2  KEYBOARD
  182.  
  183. A full ASCII alphanumeric keyboard is required,  although  lower  case
  184. and  most  control codes are optional.  Carriage return (control-M) is
  185. necessary to log on.  If it can be detected that a key has  been  held
  186. down  for  approximately  two  seconds,  it  should  auto-repeat.   If
  187. hardware permits,  the  user  should  be  able  to  transmit  a  break
  188. sequence.
  189.  
  190. VIDTEX 4.0 utilizes the concept of "meta keys"  to  permit  access  to
  191. many  of  the  advanced  features.   The  keyboard implementation must
  192. provide a means for the user  to  type  these  meta  keys.   Meta  key
  193. encoding  has  precedence  over  control  key  encoding.   Control key
  194. encoding has precedence over shift key encoding.   For  example,  Meta
  195. and Control and "a" is Meta-A.  Meta and "a" is also Meta-A.
  196.  
  197. Some keyboards lack labeled keys for typing such  characters  as  "{",
  198. "|",  "}", and "~" (7B though 7E hexadecimal).  VIDTEX should redefine
  199. keys to allow the entire ASCII character set to  be  transmitted.   An
  200. effort  should  be  made to relate the label on the redefined keys and
  201. the characters generated.   For  example,  shift-[  could  be  "{"  or
  202. control-!  could be "|".
  203.  
  204. A line of input from the keyboard is obtained in the following manner.
  205. The  user  is  allowed  to type any displayable character (See Minimum
  206. Video Display Requirements).  As a character is entered it  should  be
  207. echoed  to  the  screen.   The  line  of  input can be terminated by a
  208. carriage return or an ESCAPE.  Except in the case of file  names,  the
  209. carriage  return  will  be  included in the line of input.  The ESCAPE
  210. terminates the line but is not included.  Other control codes and meta
  211. keys  are  not permitted in the input line.  During entry, the control
  212. codes backspace and control-U will provide a simple  editing  facility
  213.                                                               Page 2-2
  214.  
  215.  
  216. for the user.  Note that backspace is destructive and control-U clears
  217. the entire entry line.   The  entry  of  control-C  is  treated  as  a
  218. control-U.   If  the  user  enters a Meta-A the line input function is
  219. terminated and the abort status is passed to the calling routine.
  220.  
  221.  
  222.  
  223. 2.3  MINIMUM VIDEO DISPLAY REQUIREMENTS
  224.  
  225. A minimum of 32 characters per line and 16 lines is required.  If  the
  226. terminal  line  width  is  64  characters  or  greater, a double width
  227. character option is desirable and should be  implemented  (see  Escape
  228. Sequences).
  229.  
  230. The display should support the full ASCII character set although lower
  231. case is optional.  The displayable characters are defined as the ASCII
  232. characters <SPACE> through <~>, inclusive (20 through 7E hexadecimal).
  233. If lowercase is not supported, all lowercase characters must be mapped
  234. into the equivalent upper case characters.  If  the  display  hardware
  235. does  not  support  the  correct display of some ASCII characters, the
  236. video driver should map these characters to those  of  similar  shape.
  237. Examples  of  commonly unimplemented characters include "{", "|", "}",
  238. "~", "_", "^", and "\".
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.                               CHAPTER 3
  252.  
  253.                       VIDEO DRIVER REQUIREMENTS
  254.  
  255.  
  256.  
  257. 3.1  TERMINOLOGY
  258.  
  259. In order to specify the video functions some terminology needs  to  be
  260. introduced.
  261.  
  262. The home position refers to the upper left most character position  on
  263. the  screen.   A  screen  line  is  a  grouping  of adjacent character
  264. positions  which  appear  on  the  same  physical  screen  line.   The
  265. character  position  preceding the first character on a screen line is
  266. the last character position of the previous line, except for the  home
  267. position  which  has  no  preceding character position.  The character
  268. position following the last character on a screen line  is  the  first
  269. character  position  of  the  next line, except for the last character
  270. position on the last line which has no following character position.
  271.  
  272. A video operation is an operation which changes the contents of one or
  273. more  character  positions, changes the cursor position, or alters the
  274. mode of video operations.  A video  operation  can  be  as  simple  as
  275. displaying  the next character or as complex as positioning the cursor
  276. or changing screen colors.
  277.  
  278. The cursor is a means of representing the active  character  position.
  279. A  video  operation  may  reference  the current cursor position.  The
  280. current cursor position may be different following a video operation.
  281.  
  282.  
  283.  
  284. 3.2  VIDEO INITIALIZATION
  285.  
  286. At program execution the  display  screen  should  be  cleared  and  a
  287. program  identification  message  displayed.  The message should be in
  288. the following format:
  289.  
  290.      "name Vv.e"
  291.  
  292. The first item is the program name, "name".  The numbers "v"  and  "e"
  293. are the version and edit number, respectively.
  294.  
  295. The default mode is normal text mode and  the  default  screen  colors
  296. should be chosen for display readability.
  297.                                                               Page 3-2
  298.  
  299.  
  300. 3.3  TEXT MODE PROCESSING
  301.  
  302. 3.3.1  Cursor Display
  303.  
  304. The cursor must be displayed on the  screen  by  some  means  such  as
  305. reverse  video,  an underscore, or a graphic block.  The cursor should
  306. be displayed following most video operations.  The cursor  should  not
  307. be  displayed if it was not defined after the last operation or during
  308. the processing of  a  video  operation,  including  the  reception  of
  309. arguments during escape processing.
  310.  
  311.  
  312.  
  313. 3.3.2  Text Display
  314.  
  315. A text character will be displayed by placing  the  character  on  the
  316. screen  at  the  current cursor position.  The cursor is placed at the
  317. following character position.
  318.  
  319.  
  320.  
  321. 3.3.3  Scrolling
  322.  
  323. If a character is placed in the last position of the  last  line,  the
  324. cursor  will  be placed at the first column of an imaginary line below
  325. the bottom line.  The screen will not scroll until an attempt is  made
  326. to actually display a character there.
  327.  
  328.  
  329.  
  330. 3.3.4  ASCII Control Codes
  331.  
  332. The terminal must respond to the following ASCII control codes:
  333.  
  334.  
  335.  
  336.      3.3.4.1  <BEL> - Bell
  337.  
  338.      If the terminal has sound capability, it should  produce  a  bell
  339.      (beep) sound.
  340.  
  341.  
  342.  
  343.      3.3.4.2  <BS> - Backspace
  344.  
  345.      The cursor is moved back one character position and replaces  the
  346.      character which was previously there with a space.  If the cursor
  347.      is on the first position  of  a  line,  it  should  move  to  the
  348.      rightmost position of the previous line.  If the cursor is in the
  349.      top left corner of the screen, no action should be taken.
  350.                                                               Page 3-3
  351.  
  352.  
  353.      3.3.4.3  <HT> - Horizontal Tab
  354.  
  355.      The cursor is moved  enough  character  positions  to  place  the
  356.      cursor at the next tab stop.  Tab stops occur in the first column
  357.      and every eight columns after that  (i.e.   columns  1,9,17,...).
  358.      When  at or past the last tab stop on a line, a tab will move the
  359.      cursor to the first position of the following line.
  360.  
  361.  
  362.  
  363.      3.3.4.4  <LF> - Line Feed
  364.  
  365.      The cursor is moved down one line without changing  its  relative
  366.      horizontal  position.   If the cursor is on the bottom line, move
  367.      the cursor down a line and scroll the screen one line so that the
  368.      cursor is on the bottom line again.
  369.  
  370.  
  371.  
  372.      3.3.4.5  <FF> - Form Feed
  373.  
  374.      Clear the screen to blanks and position the cursor in  the  upper
  375.      left corner.
  376.  
  377.  
  378.  
  379.      3.3.4.6  <CR> - Carriage Return
  380.  
  381.      Move the cursor  to  column  one  of  the  current  line  without
  382.      destroying  the character there.  Note that if a <CR> is received
  383.      after a character has been placed in the last column on  a  line,
  384.      the  cursor  will  have wrapped to the first position on the next
  385.      line.  In that nothing has been displayed,  the  carriage  return
  386.      requires  the  cursor to move up one line.  The cursor should not
  387.      be displayed (turned on) following a carriage return.
  388.  
  389.  
  390.  
  391.      3.3.4.7  Unimplemented Control Codes
  392.  
  393.      The video driver should ignore all other control codes.
  394.  
  395.  
  396.  
  397. 3.3.5  Word Cleaning
  398.  
  399. The function of word cleaning is to attempt to prevent breaking  words
  400. due to line wrapping.  This is accomplished by moving entire words (or
  401. cleaning) to the next line.
  402.  
  403.                                                               Page 3-4
  404.  
  405.  
  406. If a character has been displayed on the last character position of  a
  407. line  and  the  next  character  is  a  space,  word  cleaning  is not
  408. necessary.  If the next character is  a  displayable  character,  then
  409. scan  the  line  backwards  looking for a space.  Scan no more than 20
  410. positions.  If a space is not found, then place the next character  in
  411. the first position on the following line.  Having searched and found a
  412. space, copy each character between the space and the end of  the  line
  413. to  the  next  line  and  place  a  space  in the character's original
  414. position.   Place  the  character  received  in  the  next   available
  415. location.
  416.  
  417. This makes it easier to read text  which  is  wider  than  the  screen
  418. width.   For  example,  without  word  cleaning the following might be
  419. displayed:
  420.  
  421.      Now is the time for all very good progra
  422.      mmers to come to the aid of their countr
  423.      y.
  424.  
  425. With cleaning, this would be displayed as:
  426.  
  427.      Now is the time for all very good
  428.      programmers to come to the aid of their
  429.      country.
  430.  
  431.  
  432.  
  433. 3.4  VIDEO ESCAPE SEQUENCES
  434.  
  435. The Host  computer  will  not  attempt  to  use  the  following  video
  436. functions   unless  the  <ESC>I  interrogation  is  implemented.   The
  437. following  escape  sequences  are  defined  to  be  emulated  by   all
  438. VIDTEX 4.0 compatible software.
  439.  
  440. In each case the given character is preceeded by an  escape  character
  441. (1B  hex).   The  terminal  is responsible for converting the standard
  442. protocol data into machine dependent functions and codes.   Data  that
  443. is  inapplicable  to  a particular terminal should be simply discarded
  444. (e.g., chroma bits on a black and white  unit).   All  characters  not
  445. specifically  mentioned  are  reserved  by CompuServe Incorporated for
  446. future expansion.
  447.  
  448.  
  449.  
  450. 3.4.1  Video ESCAPE Sequence Summary
  451.  
  452. The following table summarizes the  video  escape  sequences  and  the
  453. functions  they  perform.  Note the difference between lower and upper
  454. case;  this is very important!
  455.  
  456.                                                               Page 3-5
  457.  
  458.  
  459.           Sequence              Effect on Terminal
  460.           
  461.           <ESC><A>              Move cursor up one line
  462.           <ESC><B>              Move cursor down one line
  463.           <ESC><C>              Move cursor right one space
  464.           <ESC><D>              Move cursor left one space
  465.           <ESC><G><mode>        Change graphics mode
  466.           <ESC><H>              Move cursor to the top left corner
  467.           <ESC><K>              Clear from cursor to end of line
  468.           <ESC><J>              Clear from cursor to end of screen
  469.           <ESC><j>              Clear page - same as an ASCII Form Feed
  470.           <ESC><l>              Set normal character width
  471.           <ESC><m>              Set wide character width
  472.           <ESC><Y><lin><col>    Set cursor position
  473.  
  474.  
  475.  
  476. 3.4.2  <ESC><A> - Cursor Up
  477.  
  478. The cursor  is  moved  up  one  line  without  changing  its  relative
  479. horizontal  position.   If  the cursor is on the top line, it wraps to
  480. the same horizontal position on the bottom line.  The cursor must  not
  481. destroy the character which was previously there.
  482.  
  483.  
  484.  
  485. 3.4.3  <ESC><B> - Cursor Down
  486.  
  487. The cursor is moved  down  one  line  without  changing  its  relative
  488. horizontal position.  If the cursor is on the bottom line, it wraps to
  489. the same horizontal position on the top line.   The  cursor  must  not
  490. destroy the character which was previously there.
  491.  
  492.  
  493.  
  494. 3.4.4  <ESC><C> - Cursor Right
  495.  
  496. The cursor is moved right one column.  If the cursor is  at  the  last
  497. column,  it  wraps  to  the  first  position on the next line.  If the
  498. cursor is at the bottom right corner, it wraps to the top left corner.
  499. The cursor must not destroy the character which was previously there.
  500.  
  501.  
  502.  
  503. 3.4.5  <ESC><D> - Cursor Left
  504.  
  505. The cursor is moved left one column.  If the cursor is  at  the  first
  506. column,  it  wraps  to  the  last column on the previous line.  If the
  507. cursor is at the top left corner, it wraps  to  bottom  right  corner.
  508. The cursor must not destroy the character which was previously there.
  509.                                                               Page 3-6
  510.  
  511.  
  512. 3.4.6  <ESC><H> - Home Cursor
  513.  
  514. The cursor is moved to row one,  column  one.   The  cursor  must  not
  515. destroy the character which was previously there.
  516.  
  517.  
  518.  
  519. 3.4.7  <ESC><Y><lin><col> - Position Cursor
  520.  
  521. The cursor is positioned at the screen location specified by the  next
  522. two  characters.   The  first character is the line number plus 31 and
  523. the second character is the column number plus 31.  The home  position
  524. is  located  at  cursor  position  line one, column one.  If a line or
  525. column code falls outside the range of valid values, the invalid  code
  526. is replaced by the valid code of nearest magnitude.
  527.  
  528.  
  529.  
  530. 3.4.8  <ESC><G> - Graphics Mode Control
  531.  
  532. Graphics control is done by a three  character  sequence.   The  third
  533. character determines the specific function.
  534.  
  535.  
  536.  
  537. 3.4.8.1  <ESC><G><N> - Normal Mode
  538.  
  539. The video mode is reset to "normal"  mode  (text  only).   The  screen
  540. should  not  be  changed  until the display of the next character.  In
  541. this mode the parity bit is unpredictable.  Upon entering normal mode,
  542. the  previous  state  of  the  graphics screen is unknown.  No graphic
  543. character or image can be presumed to propagate to normal  mode.   The
  544. return  to  normal  mode  is  typically  followed by a clear screen to
  545. remove any graphic residues.
  546.  
  547.  
  548.  
  549. 3.4.8.2  <ESC><G><H> - High Resolution Graphics
  550.  
  551. The screen is cleared to  black  and  high  resolution  graphics  mode
  552. (256 x 192  pixels) is entered.  In this mode data is sent as pairs of
  553. run length encoded  characters.   The  first  character  of  the  pair
  554. indicates  the  number  of  background pixels and the second character
  555. indicates the number of foreground pixels.  Each character of  a  pair
  556. is the actual count plus 32.  In this mode, the parity bit is ignored;
  557. thus, the maximum count that can be transmitted is 128-32, 96.
  558.  
  559. For  example,  the  ASCII  sequence   <L><W>   indicates   fourty-four
  560. background  pixels and fifty-five foreground pixels.  The line drawing
  561. should also wrap from the  last  position  on  a  line  to  the  first
  562. position  on the next line.  Thus, if the last pixel set on a line was
  563. in position 250 and a sequence of 0 background and  10  foreground  is
  564. received, then the last six pixels are set on the current line and the
  565. first four pixels are set on the next line.  The keyboard should  also
  566. be left active while in this mode.
  567.                                                               Page 3-7
  568.  
  569.  
  570. 3.4.8.3  <ESC><G><M> - Medium Resolution Graphics
  571.  
  572. The screen is cleared to black and  medium  resolution  graphics  mode
  573. (128 x 96  pixels)  is  entered.   This  mode  is  identical  to  high
  574. resolution except for the pixel size.
  575.  
  576.  
  577.  
  578. 3.4.9  <ESC><K> - Clear To End Of Line
  579.  
  580. The screen is cleared from the current cursor position to the  end  of
  581. the current line.
  582.  
  583.  
  584.  
  585. 3.4.10  <ESC><J> - Clear To End Of Page
  586.  
  587. The screen is cleared from the current cursor position to the  end  of
  588. the page.
  589.  
  590.  
  591.  
  592. 3.4.11  <ESC><j> - Clear Page
  593.  
  594. The display is cleared and the cursor is positioned in  the  top  left
  595. corner.    This   may   also  be  accomplished  by  a  form  feed  (0C
  596. hexadecimal).
  597.  
  598.  
  599.  
  600. 3.4.12  <ESC><l> - Set Normal Character Width
  601.  
  602. The display is set to its narrow character  size.   Note  that  normal
  603. width character mode has more columns than wide character width mode.
  604.  
  605.  
  606.  
  607. 3.4.13  <ESC><m> - Set Wide Character Width
  608.  
  609. The display is set to wide characters provided that wide mode  has  at
  610. least 32 columns.
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.                               CHAPTER 4
  624.  
  625.                       TERMINAL LEVEL PROCESSING
  626.  
  627.  
  628.  
  629. 4.1  INTRODUCTION
  630.  
  631. Terminal level refers to the highest level of program operation.   The
  632. terminal  level  allows  "time  sharing" between the various input and
  633. output   functions.    Mainly   terminal   processing   involves   the
  634. transmission  of  characters  typed  by the user and the processing of
  635. characters received from the host.
  636.  
  637.  
  638.  
  639. 4.2  TERMINAL ESCAPE PROCESSING
  640.  
  641. Terminal level escape processing provides a means for coordinating the
  642. activities of the host and the terminal.
  643.  
  644.  
  645.  
  646. 4.2.1  <ESC><I> - Interrogate Remote
  647.  
  648. The terminal responds with a string which identifies its capabilities.
  649. The format of the string is:
  650.  
  651.      <#>code<,>option list<CR>
  652.  
  653. The <#> implies the device is a VIDEOTEX-compatible unit.
  654.  
  655. The code is a three character string which identifies the manufacturer
  656. and  model  of the terminal.  This is optionally followed by a version
  657. and modification number.  Codes must be arranged by negotiations  with
  658. CompuServe  Incorporated  in  order to maintain compatibility with our
  659. host software.
  660.  
  661. The option list is a string of codes which indicates the features  the
  662. terminal  supports.   The  option codes are separated by commas.  Each
  663. option code implies that the terminal  supports  one  or  more  escape
  664. sequences.
  665.  
  666. The <CR> marks the end of the response.
  667.  
  668. For example, the response:
  669.                                                               Page 4-2
  670.  
  671.  
  672.      #FRB24,CC,CW,G4,HC<CR>
  673.  
  674. indicates that the machine is a Frobitron computer running version 2.4
  675. of  the VIDTEX program which supports cursor control, wide characters,
  676. semigraphics 4, and a printer.
  677.  
  678.  
  679.  
  680. 4.2.2  Video Enable And Disable
  681.  
  682. When an <ESC><e> sequence is  received,  the  video  is  disabled  and
  683. subsequent  characters  are not displayed.  The video is enabled again
  684. when an <ESC><f> sequence is received.  <ESC><e> and <ESC><f>  may  be
  685. used  in  conjunction  with  <DC2>  and  <DC4> to direct output to the
  686. printer without displaying it.
  687.  
  688.  
  689.  
  690. 4.2.3  Keyboard Lock And Unlock
  691.  
  692. When an <ESC><b> sequence is received,  the  terminal  will  lock  the
  693. keyboard  and  not  transmit  any  more  characters  typed.   Meta key
  694. processing will also stop  in  that  the  keyboard  is  locked.   This
  695. condition  is  reset  when  an  <ESC><c>  sequence is received.  These
  696. sequences can be used by a host program which  does  not  want  to  be
  697. interrupted during critical processing.
  698.  
  699.  
  700.  
  701. 4.2.4  <ESC><ESC> - Hardware Specific Escape
  702.  
  703. This is  available  for  hardware  specific  functions  not  otherwise
  704. available.   Their definition and implementation is the responsibility
  705. of the hardware manufacturer.  CompuServe reserves the  right  to  not
  706. support  any  hardware  specific  escapes  in  its host software.  The
  707. development and support of the host software is the responsibility  of
  708. the hardware manufacturer.
  709.  
  710. The VIDTEX 4.0 software should incorporate the following escape-escape
  711. sequences.
  712.  
  713.  
  714.  
  715. 4.2.4.1  Capture Buffer Control
  716.  
  717. Some common definitions for data capture control are:
  718.  
  719.      <ESC><ESC><O> - Open Ram Buffer
  720.           The copying of incoming text to the  capture  buffer  should
  721.           begin.
  722.      <ESC><ESC><C> - Close Ram Buffer
  723.           The capture buffer copying should stop.
  724.      <ESC><ESC><Z> - Zero Ram Buffer
  725.           The capture buffer should be emptied of all data.
  726.      <ESC><ESC><V> - Transmit Ram Buffer
  727.                                                               Page 4-3
  728.  
  729.  
  730.           The  current  contents  of  the  capture  buffer  should  be
  731.           transmitted to the host.
  732.      <ESC><ESC><Y><pmt> - Transmit Ram Buffer with Prompt
  733.           The  current  contents  of  the  capture  buffer  should  be
  734.           transmitted  to  the  host.   After  transmitting a carriage
  735.           return, VIDTEX should wait until the single character prompt
  736.           is received before transmitting the next line to the host.
  737.  
  738.  
  739.  
  740. 4.2.4.2  <ESC><ESC><W><lin1><col1><lin2><col2> - Window Control
  741.  
  742. Providing that the terminal supports a text display window,  the  size
  743. and location of the window on the physical screen are to be set.  Each
  744. argument is a row or column position masked by  the  addition  of  32.
  745. The  argument pair, <lin1><col1>, specifies the upper-left-hand corner
  746. of  the  window.   The  argument  pair,  <lin2><col2>,  specifies  the
  747. lower-right-hand corner of the window.  The values for line and column
  748. codes follow the rules of cursor positioning and the size of the  text
  749. window  must  be  4  rows  by  11 columns or larger else the window is
  750. removed automatically.  Word cleaning is disabled for windows  smaller
  751. than 20 columns.
  752.  
  753. The SS option code allows the host to  interrogate  to  determine  the
  754. size of the terminal's screen.  The values are transmitted in a manner
  755. similar to absolute cursor positioning sequences.  The number of lines
  756. is added to 31 before transmission.  The number of columns is added to
  757. 31 before transmission.
  758.  
  759.  
  760.  
  761. 4.3  FLOW CONTROL
  762.  
  763. VIDTEX must recognize the  standard  ASCII  flow  control  characters,
  764. <X-OFF>  (control-S  or DC3) and <X-ON> (control-Q or DC1).  If VIDTEX
  765. receives  an  <X-OFF>  from  the  host,  it  must  halt   transmission
  766. immediately.   If  an  <X-ON>  is  not  received in approximately five
  767. seconds, transmission can be resumed.
  768.  
  769. VIDTEX expects the host to observe the same rules.   Flow  control  is
  770. used  by  VIDTEX for delaying the host during remote processing and by
  771. the user for regulating the rate of text display from the host.  There
  772. are  several  instances  where an <X-OFF> is sent to stop transmission
  773. from the host temporarily (RAM  buffer  almost  full,  printer  buffer
  774. full,  menu selected).  Each time VIDTEX begins a remote process which
  775. requires the host to wait, it will transmit an <X-OFF>  to  the  host.
  776. Some  remote  functions  can contain multiple processing levels.  Each
  777. level may user flow control.  To account  for  this  nesting  of  flow
  778. control    transmissions,    VIDTEX   will   count   the   number   of
  779. internally-generated <X-OFF>'s.
  780.  
  781. When a level of processing completes, it will request the transmission
  782. of  an  <X-ON>.  When an <X-ON> is received by the host it will resume
  783. transmission immediately, regardless of  how  many  <X-OFF>'s  it  has
  784. received.  When an <X-ON> request is made, VIDTEX will first decrement
  785.                                                               Page 4-4
  786.  
  787.  
  788. the count of <X-OFF>'s sent.  If the count is zero  then  the  highest
  789. level  of flow control has been reached and an <X-ON> is sent.  If the
  790. count is non-zero then no <X-ON> is sent.
  791.  
  792. The user's use of flow control will have priority  over  flow  control
  793. use   by  VIDTEX.   When  the  user  transmits  an  <X-OFF>  OR  <SOH>
  794. (control-A), VIDTEX will not transmit  any  <X-ON>'s  until  the  user
  795. types  an <X-ON>.  When the user's <X-ON> is transmitted, the count of
  796. <X-OFF>'s sent by VIDTEX will be reset.  If the host does not  respond
  797. to flow control, characters may be dropped.
  798.  
  799.  
  800.  
  801. 4.4  PRINTER
  802.  
  803. Since a display type terminal leaves no record the user can refer back
  804. to,  hardcopy  support  is  a desirable feature.  This is particularly
  805. applicable to terminal emulator programs for microcomputers since most
  806. microcomputers  can  support  a hardcopy printer.  The terminal should
  807. allow both the host computer and the  terminal  user  to  control  the
  808. printer.  The user can access the printer using a meta key.
  809.  
  810. The VIDTEX printer driver will convert standard ASCII  into  the  form
  811. used  by  the printer.  Many printers lack horizontal tabs (as defined
  812. in  the  video  driver  specification).   If  necessary,  VIDTEX  will
  813. substitute the proper number of spaces for an horizontal tab.  Printer
  814. output of tabular data should be identical to video output of the same
  815. data.    If  the  printer  performs  a  <carriage  return><line  feed>
  816. operation when given a carriage return, VIDTEX will  ignore  all  line
  817. feeds that immediately follow carriage returns.  This will prevent the
  818. printer output from appearing "double spaced."
  819.  
  820. When a <DC2> is received from the  host,  the  terminal  should  start
  821. copying  all  received  data to the printer.  When a <DC4> is received
  822. from the host, the terminal should stop  the  copying.   The  terminal
  823. should have a buffer for the printer where characters may be placed if
  824. the printer is busy.  When the buffer becomes within ten characters of
  825. being  filled,  then  the  terminal  should  send  a <DC3> to stop the
  826. transmission of data.  The  terminal  should  continue  to  empty  the
  827. printer  buffer  until  the  buffer  is within ten characters of being
  828. empty at which time a <DC1> should be sent to the host to resume  data
  829. tranmission.  This buffering and flow control allows the use of a slow
  830. printer at a higher data transmission rate.
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.                               CHAPTER 5
  844.  
  845.                       SIMPLE META KEY FUNCTIONS
  846.  
  847.  
  848.  
  849. Meta keys allow the user perform many local functions that users often
  850. find  to  be  valuable.   For  greatest  speed  and  efficiency,  most
  851. operations are typically accessed by holding the meta key and pressing
  852. the  key  corresponding  to the desired function.  Less-used functions
  853. are accessed via menus.
  854.  
  855.  
  856.  
  857. 5.1  COPYING DATA TO THE PRINTER
  858.  
  859. If you type a Meta-R  on  the  keyboard,  a  copy  of  all  subsequent
  860. characters  received  will be sent to the printer.  A Meta-T stops the
  861. copying.
  862.  
  863.  
  864.  
  865. 5.2  SCREEN PRINT
  866.  
  867. A printed copy of the entire screen should be provided by means  of  a
  868. meta  key.   The particular key choice is not standard although Meta-*
  869. and Meta-:  are currently in use.  This function cannot  be  performed
  870. remotely.   Unless  the printer supports graphics, print screen should
  871. ignore graphic images.  If the printer is not ready when screen  print
  872. is  requested,  the  cursor  will  reappear.   The screen print can be
  873. aborted by typing a Meta-A.
  874.  
  875.  
  876.  
  877. 5.3  THE HELP PAGE
  878.  
  879. Meta-H should display a list of redefined keys and  a  list  of  those
  880. characters substituted for improperly displayed ASCII characters.  The
  881. user must key carriage return for terminal mode.
  882.                                                               Page 5-2
  883.  
  884.  
  885. 5.4  MENU PAGE
  886.  
  887. Meta-M lists all available remote operations.  While  looking  at  the
  888. menu, the user need only press the letter for the operation they want.
  889. The meta key is not required.  Pressing carriage return will return to
  890. terminal mode.
  891.  
  892. The menu message will provide information concerning the state of  the
  893. Ram Buffer typically shown as follows:
  894.  
  895.      Used:  00000   Free:  00000
  896.  
  897. The  number  following  "Used:"   in  the  menu  indicates  how   many
  898. characters  are  currently  stored  in  the  RAM  buffer.   The number
  899. following "Free:"  indicates the number of unused characters available
  900. in the RAM buffer.
  901.  
  902. As an option, the menu message may contain a  means  of  flagging  the
  903. current  status  of  certain features.  Possible items to flag include
  904. the status of word cleaning on/off and RAM buffer open/closed.
  905.  
  906.  
  907.  
  908. 5.5  LOCAL VIDEO CONTROL
  909.  
  910. VIDTEX provides two local video control functions with  optional  wide
  911. mode and text window control.
  912.  
  913.  
  914.  
  915. 5.5.1  Screen Clearing
  916.  
  917. A meta key will be chosen to allow  the  user  to  locally  clear  the
  918. screen.  Meta-CLR is an obvious choice.
  919.  
  920.  
  921.  
  922. 5.5.2  Word Cleaning Control
  923.  
  924. A Meta-B will disable the word cleaning function of VIDTEX.  This  may
  925. cause  words  to  start on the right edge of the screen and end on the
  926. next line.  This mode is useful when you are typing out tables and  do
  927. not  want  extra  spaces  inserted.   A  Meta-E  will  enable the word
  928. cleaning function.
  929.  
  930.  
  931.  
  932. 5.5.3  Wide Character Mode Control
  933.  
  934. If hardware permits a wide character video display mode (32 columns by
  935. 16  lines  minimum),  two  meta keys should be designated to allow the
  936. user to switch between wide and normal display modes.  Meta-W for wide
  937. mode and Meta-N for normal mode are currently in use.
  938.                                                               Page 5-3
  939.  
  940.  
  941. 5.5.4  Text Window Control
  942.  
  943. As an optional feature, the VIDTEX video driver can allow the user  to
  944. define the size and location of the "text display window."
  945.  
  946. At execution, the size of the window is the entire screen.  Some  meta
  947. key  should  be  designated  to  allow  the user to set a new size and
  948. location.  Meta-W is currently in use.  A set of  instructions  should
  949. be  displayed  at  the  top of the current screen.  The user should be
  950. allowed to position the cursor anywhere  on  the  screen  to  indicate
  951. where the upper left hand corner of the new text display window should
  952. be set.  When the cursor is  positioned,  the  user  presses  carriage
  953. return.   The  cursor  is  then positioned to set the lower right hand
  954. corner of the text window, and carriage return is pressed.  The window
  955. is  now created.  The window must be at least 4 lines by 11 columns in
  956. size or the window will be set to the full screen.  If the  window  is
  957. less  than 20 columns word cleaning is disabled.  After the window has
  958. been created or  removed,  the  cursor  is  positioned  to  the  upper
  959. left-hand corner of the window.
  960.  
  961. Pressing Meta-A at anytime during the window creation sequence  should
  962. abort  window creation and break the window to the full screen.  While
  963. the window is in effect, all new text will appear inside  the  window,
  964. including the menu and help pages.
  965.  
  966. The video driver should function within  the  window.   All  functions
  967. valid  in normal and semigraphics 4 mode should work in "window mode."
  968. Medium and high resolution modes will  remove  the  text  window  upon
  969. entry  into  these  modes.   The  text  window will be set to the full
  970. screen upon exit from medium and high resolution modes.
  971.  
  972. The window creation  process  specifies  a  rectangular  area  of  the
  973. physical  screen  to  be  treated  as the current screen for all video
  974. processing.  Each logical screen line  begins  at  the  same  physical
  975. column  position.   Similarly each screen line ends at the same column
  976. position.  All character positions outside the "active window"  should
  977. never  be acted upon by the video driver.  Notably, when the cursor is
  978. moved to the undefined character  position  past  the  last  character
  979. position on the last line, the cursor should not appear.
  980.  
  981.  
  982.  
  983. 5.6  VIDTEX 4.0 DISK VERSUS TAPE
  984.  
  985. VIDTEX is typically a disk-based program.  VIDTEX can  alternately  be
  986. written  as  a  tape-based  program.  A tape version of VIDTEX will be
  987. severely limited in terms of advanced capabilities.
  988.  
  989. The following descriptions will presume a disk-based system.
  990.                                                               Page 5-4
  991.  
  992.  
  993. 5.7  INPUT TO DISK OPERATIONS
  994.  
  995. Whenever VIDTEX  requires  a  file  name  for  a  local  operation,  a
  996. descriptive prompt will be displayed.  The user may enter a file name.
  997. The file name will be a line of keyboard input (See Keyboard).
  998.  
  999. If the user enters a blank line at a  file  name  prompt,  VIDTEX  may
  1000. optionally  supply  an  appropriate  file  name.  This function is not
  1001. advisable for certain operations  such  as  "delete  a  file."   If  a
  1002. default  name  is  not supplied, VIDTEX should abort the function.  On
  1003. multi-drive systems, VIDTEX may optionally supply a default disk drive
  1004. identifier.   The  file  name string will be mapped into the character
  1005. set normally used by the computer's disk operation system.
  1006.  
  1007. VIDTEX should provide some means to notify the user in  the  event  of
  1008. any  disk errors.  If the operating system provides error message text
  1009. this text should be displayed to the user.  VIDTEX should also display
  1010. a  standard  error  text  identifying  that an error has occurred.  If
  1011. VIDTEX is not is autolog mode, the user should be  prompted  to  press
  1012. return  to continue.  The standard does not specify what action should
  1013. be taken if VIDTEX is in autolog mode.
  1014.  
  1015.  
  1016.  
  1017. 5.8  FUNCTION KEYS
  1018.  
  1019. VIDTEX will provide function keys, each of which can be defined as any
  1020. arbitrary  text  string  the user chooses.  The minimum implementation
  1021. will include ten function keys, typically Meta-0 through  Meta-9.   In
  1022. application,  the  function  keys  are  useful  for  frequently  typed
  1023. commands.
  1024.  
  1025.  
  1026.  
  1027. 5.8.1  Executing A Function Key
  1028.  
  1029. The execution of a function should provide the user with  convenience.
  1030. To  execute a defined function key, the user should need only to press
  1031. a dedicated function key or hold down  the  Meta  key  and  press  the
  1032. number  of  the function key.  This will start the transmission of the
  1033. key definition.  Typing Meta-A should abort a transmission once it has
  1034. started.
  1035.  
  1036.  
  1037.  
  1038. 5.8.2  The Function Key Menu
  1039.  
  1040. The creation and storage of function key definitions are not  frequent
  1041. operations so these are handled from a menu accessed by typing Meta-F.
  1042. After typing Meta-F, the user should be presented with  a  menu.   For
  1043. example:
  1044.  
  1045.      Enter D to display the function key definitions
  1046.         or L to load definitions from disk
  1047.         or S to save definitions to disk
  1048.                                                               Page 5-5
  1049.  
  1050.  
  1051.         or the key to define (0-9):
  1052.  
  1053. The user may type Meta-A to return to terminal mode directly.
  1054.  
  1055.  
  1056.  
  1057. 5.8.3  Defining A Function Key
  1058.  
  1059. The definition of a function key begins  with  Meta-F  to  access  the
  1060. menu.   The  user  should  be  prompted  to press the key they wish to
  1061. redefine.  The user need not  press  carriage  return.   VIDTEX  first
  1062. erases  the  the existing definition.  The user may then enter the new
  1063. definition.   The  creation  routine  should   accept   all   printing
  1064. characters  and  control  codes.   The routine need only display those
  1065. control codes supported by the video driver.  Unimplemented  codes  do
  1066. not  display.   If  a  carriage return is entered into a definition, a
  1067. line feed will also be displayed.  This is done to  make  the  display
  1068. readable.   To  end the definition, the user must type another Meta-F,
  1069. all other meta keys are discarded.  The user may clear a function  key
  1070. by  selecting  it  for  redefinition  and immediately typing a Meta-F.
  1071. This will cause the old definition to be erased without entering a new
  1072. definition.   The  total number of characters for all the function key
  1073. definitions will not exceed 255.
  1074.  
  1075.  
  1076.  
  1077. 5.8.4  Displaying The Function Keys
  1078.  
  1079. To display the current definitions of all the function keys, the  user
  1080. should  type  a  Meta-F  and  select the display option (D).  Each key
  1081. number will be displayed followed by a colon and the  key  definition.
  1082. When  the  definitions  are  displayed,  a  line feed is automatically
  1083. displayed after a carriage  return.   This  makes  viewing  multi-line
  1084. function   keys  easier.   Note  that  only  the  carriage  return  is
  1085. transmitted when the function key is executed.
  1086.  
  1087. Once the function keys are displayed, the user can press the number of
  1088. the  key they want to execute (the Meta key should not be required) or
  1089. they can press "F" to return to the function key menu.
  1090.  
  1091.  
  1092.  
  1093. 5.8.5  Function Key Disk Operations
  1094.  
  1095. The load and save function key options allow the user to keep  several
  1096. sets  of  definitions  with  different  filenames on disk at one time.
  1097. When VIDTEX is first executed, the function keys will be automatically
  1098. loaded from a specified file name.
  1099.                                                               Page 5-6
  1100.  
  1101.  
  1102. 5.8.5.1  Saving The Function Keys
  1103.  
  1104. To save the function key definitions to disk, the user should  type  a
  1105. Meta-F  and select the save option (S).  VIDTEX will then prompt for a
  1106. file name.  If the file specified already exits on disk,  VIDTEX  will
  1107. delete  the  existing file without notifying the user that it existed.
  1108. The definitions will then be written to the file specified.  A  Meta-A
  1109. at  the  file  name  prompt should abort the save option and return to
  1110. terminal mode.
  1111.  
  1112.  
  1113.  
  1114. 5.8.5.2  Loading The Function Keys
  1115.  
  1116. To load the function key definitions from a previously saved file, the
  1117. user should type a Meta-F and select the load option (L).  VIDTEX will
  1118. then prompt for a file name.  The existing definitions will be cleared
  1119. and replaced by those from the file.  Typing a Meta-A at the file name
  1120. prompt should abort the load option.  VIDTEX automatically  loads  the
  1121. definitions from a specified file name when it is first executed.
  1122.  
  1123.  
  1124.  
  1125. 5.9  ABORTING A META FUNCTION
  1126.  
  1127. Most meta key operations should be aborted using  Meta-A.   Meta-Abort
  1128. during  window  creation  will  set  the  window  to  the full screen.
  1129. Meta-Abort will terminate any function key or RAM buffer transmission.
  1130. To  abort  the  creation  of a new auto-logon file, type Meta-A at the
  1131. file name prompt.  Once the file name is  entered,  the  Autolog  file
  1132. creation cannot be aborted.
  1133.  
  1134.  
  1135.  
  1136. 5.10  EXITING VIDTEX
  1137.  
  1138. Meta-X will exit VIDTEX.  To prevent an accidental  exit,  VIDTEX  may
  1139. optionally  display  a message and request the user to verify the exit
  1140. request.  To continue the terminal session, the user must  reload  and
  1141. execute VIDTEX.
  1142.  
  1143. As an optional feature, VIDTEX will automatically load and  execute  a
  1144. program  (written  in  the native language of the computer) if certain
  1145. conditions are met at time of exit.  A typical implementation requries
  1146. three  components, all located one after another in memory.  First two
  1147. key letters such as "EX" must be present.  Next in memory will be  the
  1148. length  of  the  file  name  to  search for.  The length will be range
  1149. checked for validity.  Finally the file name  itself  will  be  stored
  1150. ascending in memory.  All of this information has to be present at the
  1151. time of exiting from of VIDTEX if auto load and execute on exit is  to
  1152. work.
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.                               CHAPTER 6
  1166.  
  1167.                             THE RAM BUFFER
  1168.  
  1169.  
  1170.  
  1171. VIDTEX will allow the user to save a copy of all  characters  received
  1172. in  the unused portion of RAM (the RAM buffer).  This is also known as
  1173. data-capturing since the received  data  is  saved  instead  of  being
  1174. discarded  as  soon as it is received.  The RAM buffer allows the user
  1175. to capture text from the host and save it for future reference.
  1176.  
  1177.  
  1178.  
  1179. 6.1  DATA CAPTURE
  1180.  
  1181. When VIDTEX is first run the RAM buffer is empty and closed.  To  open
  1182. the RAM buffer and start saving the data, the user types a Meta-O.  An
  1183. informative message should  be  displayed.   All  subsequent  received
  1184. characters  will be added to the RAM buffer.  The RAM buffer is closed
  1185. by typing a Meta-C.  Again the  user  should  be  informed.   the  RAM
  1186. buffer  may  be opened again to add more to it.  The RAM buffer can be
  1187. zeroed (emptied) by typing a Meta-Z.   The  message  displayed  should
  1188. show if the RAM buffer was empty or if it was emptied by the Meta-Z.
  1189.  
  1190. If the RAM buffer becomes almost full, a message will be displayed and
  1191. a  control-S transmitted which immediately suspends host output.  This
  1192. gives the user a chance to save the buffer,  zero  it,  and  continue.
  1193. The user must type the control-Q to resume transmission from the host.
  1194. If the host does not stop transmission or the user types an  control-Q
  1195. without zeroing the buffer, it will automatically be closed.
  1196.  
  1197.  
  1198.  
  1199. 6.2  SAVING THE SCREEN
  1200.  
  1201. A copy of the screen can be added to the RAM buffer by typing a Meta-G
  1202. (for  get  screen).   This  function  is  similar  to the screen print
  1203. function.  Each line is copied into the RAM  buffer  up  to  the  last
  1204. non-blank  character on the line.  After the last character on a line,
  1205. a Carriage Return/Line Feed is added.  If a line  is  entirely  blank,
  1206. only a Line Feed is added.
  1207.                                                               Page 6-2
  1208.  
  1209.  
  1210. 6.3  VIEWING THE RAM BUFFER
  1211.  
  1212. The contents of the RAM buffer can be displayed by  typing  a  Meta-D.
  1213. The  display  should  stop  immediately  if  a control-S is typed.  To
  1214. resume the display, the user types a control-Q.  The  display  can  be
  1215. stopped  at  the end of a line (after the next line feed character) by
  1216. typing a control-A.  To cancel the display, the user  types  control-O
  1217. or  control-C.   A  message indicating that display has been cancelled
  1218. and a prompt to press carriage return to continue will  be  displayed.
  1219. When  the display of RAM buffer contents is done, a message indicating
  1220. end of buffer will be displayed and the user will be prompted to press
  1221. carriage return to return to terminal mode.
  1222.  
  1223. The RAM buffer will be printed by typing a Meta-P.   The  printing  of
  1224. the RAM buffer will be aborted by typing a Meta-A.
  1225.  
  1226.  
  1227.  
  1228. 6.4  TRANSMITTING THE RAM BUFFER
  1229.  
  1230. Typing a Meta-V will transmit the RAM buffer continuously.   The  user
  1231. will  be  informed  that the transmission has begun.  The transmission
  1232. will stop only after all of the RAM buffer has been transmitted.  Flow
  1233. control  (Control-S  and Control-Q) from the host is recognized during
  1234. the transmission.  The transmission can be aborted by typing a Meta-A.
  1235.  
  1236. Typing a Meta-Y will initiate  a  prompted  transmission  of  the  RAM
  1237. buffer.   First  VIDTEX  will  prompt  for a prompt character;  then a
  1238. message displaying the prompt character will be displayed, and the RAM
  1239. buffer  will  be  transmitted one line at a time.  After each line has
  1240. been transmitted (a carriage return has been transmitted), VIDTEX will
  1241. wait for the prompt character specified to be received.  Note that the
  1242. first line of the RAM buffer  is  transmitted  before  prompt  seeking
  1243. begins.  The transmission can be aborted by typing a Meta-A.
  1244.  
  1245. The keyboard remains active during a  RAM  buffer  transmission.   The
  1246. keys  typed  by  the user should be transmitted with highest priority,
  1247. that is, without regard to prompt seeking or  the  transmission  of  a
  1248. line from the RAM buffer.
  1249.  
  1250.  
  1251.  
  1252. 6.5  SAVING THE RAM BUFFER TO DISK
  1253.  
  1254. There are two ways to  save  the  RAM  buffer  to  disk:   edited  and
  1255. unedited.   The  edited save converts the ASCII data in the RAM buffer
  1256. data to the character set normally used by the computer.   An  attempt
  1257. should be made to map as many components of the ASCII and semigraphics
  1258. 4 character sets into the native character set as the native character
  1259. set/video  driver  will  allow.  The unedited save will save a copy of
  1260. exactly what was received.  If the RAM  buffer  is  empty,  a  message
  1261. should  be  displayed  informing the user that the buffer is empty and
  1262. the save function aborted.
  1263.  
  1264. Typing a Meta-U will save the RAM buffer  to  disk  unedited.   VIDTEX
  1265.                                                               Page 6-3
  1266.  
  1267.  
  1268. will  first  prompt  for  the filename to save the RAM buffer to.  The
  1269. user may abort the save by typing a Meta-A at the file name prompt.
  1270.  
  1271. Typing a Meta-S will save an edited version of the RAM buffer to disk.
  1272. VIDTEX  will  first prompt for the filename to save the RAM buffer to.
  1273. The user may abort the save by  typing  a  Meta-A  at  the  file  name
  1274. prompt.   The  edited  save should be used for saving data to disk for
  1275. processing by another program.
  1276.  
  1277.  
  1278.  
  1279. 6.6  LOADING THE RAM BUFFER FROM DISK
  1280.  
  1281. Typing a Meta-L will load the RAM buffer  from  a  disk  file.   First
  1282. VIDTEX  will  prompt  for a file name to load from.  Meta-A will abort
  1283. the load function.  All data in the file will be added to the  current
  1284. contents  of  the RAM buffer.  If the file is too large to load or the
  1285. buffer  becomes  full  after  the  load,  an  error  message  will  be
  1286. displayed.   If  the  error  message  is displayed, the user should be
  1287. prompted to press RETURN to continue.  During a RAM buffer load,  text
  1288. is inserted into the buffer until the buffer is full.
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.                               CHAPTER 7
  1302.  
  1303.                                AUTOLOG
  1304.  
  1305.  
  1306.  
  1307. Autolog allows the user to keep logon information for  many  different
  1308. systems.   It  also has the capacity to act in place of the user for a
  1309. number of applications.
  1310.  
  1311.  
  1312.  
  1313. 7.1  CREATING A NEW AUTOLOG FILE
  1314.  
  1315. A new Autolog file will created with the following steps as  described
  1316. from the user's point of view:
  1317.  
  1318. 1. First type a Meta-I.  You will then be  prompted  for  the  Autolog
  1319.    file  name  to write.  If you only press carriage return, a default
  1320.    file name will be used.  If the file already exists, it will  first
  1321.    be  deleted.   To  abort the autolog creation, type a Meta-A at the
  1322.    file name prompt.
  1323.  
  1324. 2. You will then be asked for a prompt to wait for from the host.   If
  1325.    you  do  not want to wait for a prompt, just press carriage return.
  1326.    Otherwise  enter  the  host's  prompt.   The  prompt  sequence   is
  1327.    translated  to  upper  case  when  it  is  entered.   All  received
  1328.    characters are translated to upper case  for  testing  against  the
  1329.    prompt.  The maximum length for a prompt from the host is typically
  1330.    20 characters.  A prompt length of four to five characters or  less
  1331.    is recommended.  You may press the carriage return or ESCAPE key to
  1332.    terminate the prompt.  However, the carriage return  or  ESCAPE  is
  1333.    not included as part of the prompt.
  1334.  
  1335. 3. You will then be asked for a  response  to  transmit.   Enter  your
  1336.    response  terminated  with carriage return or the Escape character.
  1337.    The carriage return will be transmitted  with  the  response.   The
  1338.    Escape  will  transmit no terminator when the response is sent.  If
  1339.    you enter just an Escape for  a  response,  an  empty  response  is
  1340.    indicated.   The  maximum  length  for  a  response is typically 64
  1341.    characters.   A  response  longer  than  the  maximum   number   of
  1342.    characters  per line can be transmitted by entering the response in
  1343.    two or more parts,  each  less  than  the  maximum  characters  and
  1344.    entering a null prompt between each part of the response.
  1345.  
  1346. 4. Repeat the prompt/response sequence as many times as is  neccessary
  1347.                                                               Page 7-2
  1348.  
  1349.  
  1350.    to  complete  your  logon  sequence.   When  you have completed the
  1351.    sequence, enter a null entry at  both  a  prompt  and  a  response.
  1352.    After  you  have  completed  the  sequence,  VIDTEX  will return to
  1353.    terminal mode.
  1354.  
  1355. The prompt and response entries will be accepted as lines of  keyboard
  1356. input  (See Keyboard).  Note that the file may be optionally encrypted
  1357. on disk to protect the user's logon information.
  1358.  
  1359.  
  1360.  
  1361. 7.2  EXECUTING AN AUTOLOG
  1362.  
  1363. To execute an autolog file, the user will press Meta-J.   VIDTEX  will
  1364. then prompt for the Autolog file name to read.  Pressing only carriage
  1365. return will select a default file name.  Note that autolog  lacks  the
  1366. capability  to  verify that the file specified is a true autolog file.
  1367. To abort the initiation of an autolog execution, the user must type  a
  1368. Meta-A  at the file name prompt.  If the file exists VIDTEX will enter
  1369. autolog mode.  VIDTEX will automatically exit autolog  mode  when  all
  1370. prompts  are  found  and  all responses are sent.  The execution of an
  1371. autolog can be aborted by typing a Meta-A.
  1372.  
  1373. The keyboard remains active during an autolog execution.  This  allows
  1374. the  user  to type during an autolog execution.  The keys typed by the
  1375. user should be transmitted with highest  priority,  that  is,  without
  1376. regard   to   prompt  seeking  or  the  response  if  currently  being
  1377. transmitted.
  1378.  
  1379.  
  1380.  
  1381. 7.3  ADDITIONAL AUTOLOG FEATURES
  1382.  
  1383. VIDTEX 4.0 Autolog can do more than simply log  onto  a  host  system.
  1384. The  prompt  seeking function allows VIDTEX to act in the place of the
  1385. keyboard to provide a response to a host program.  Prompts can be  any
  1386. text that the host displays.
  1387.  
  1388. The response from autolog can be any text, control  characters,  or  a
  1389. command  to  VIDTEX  to  perform most any of the local meta functions.
  1390. The user can enter a control character into the response by typing  an
  1391. UP  ARROW then type the letter of the control key.  A meta key command
  1392. is entered into the response by typing LEFT ARROW then type the letter
  1393. of the meta key.
  1394.  
  1395. The user may obtain a delay of one  half  second  by  entering  Meta-&
  1396. (Meta-ampersand)  into a response.  A delay of two seconds is obtained
  1397. by entering  Meta-%  (Meta-percent)  into  a  response.   If  hardware
  1398. permits  carrier detection, VIDTEX should implement Meta-+ (Meta-plus)
  1399. as a meta key autolog response to delay until the modem indicates that
  1400. carrier  is  present  (carrier  detection).   VIDTEX  will delay after
  1401. carrier is present for 2 seconds to assure  that  carrier  is  stable.
  1402. Similarly,  a  delay until the modem indicates that carrier is lost is
  1403. obtained by entering Meta-- (Meta-minus)  into  a  response.   Meta-&,
  1404. Meta-%,  Meta-+,  and  Meta--  can  only  be  entered  into an autolog
  1405.                                                               Page 7-3
  1406.  
  1407.  
  1408. response and are not available from the keyboard or the Menu.
  1409.  
  1410. A single UP ARROW character is entered into a response by entering two
  1411. consecutive  UP  ARROWs.   Similarly  a single LEFT ARROW character is
  1412. also entered by two consecutive LEFT ARROWs.
  1413.  
  1414.  
  1415.  
  1416. 7.4  AUTOLOG FILE CHAINING
  1417.  
  1418. The execution of a new Autolog file can be  started  from  an  already
  1419. executing  autolog  file.  When the Meta-J is executed from an Autolog
  1420. file, the current file is  closed  and  the  file  specified  is  then
  1421. executed.     The   contents   of   the   Autolog   file   after   the
  1422. "Meta-Jfilename<RETURN>" is ignored.
  1423.  
  1424.  
  1425.  
  1426. 7.5  AUTOLOG EXAMPLES
  1427.  
  1428. A sample autolog creation sequence to logon  to  CompuServe  is  shown
  1429. below.
  1430.  
  1431.      Creating New Auto Logon
  1432.      Enter file name: compuserve auto  Select the file
  1433.      Prompt: <ESCAPE>                  Don't wait for prompt,
  1434.                                        transmit immediately
  1435.      Response: ^C<ESCAPE>              (<Up arrow><C>)
  1436.                                        Transmit a control-C
  1437.                                        with no carriage return
  1438.      Prompt: ID:                       Wait for 'USER ID:'
  1439.      Response: 70000,1                 Then send '70000,1'
  1440.      Prompt: word:                     Wait for 'PASSWORD:'
  1441.      Response: SECRET                  Then send 'SECRET'
  1442.      Prompt: !                         Wait until DISPLA
  1443.                                        prompts for input
  1444.      Response: GO HOM-1                Transmit 'GO HOM-1'
  1445.      Prompt: <ESCAPE>                  Terminate the input
  1446.      Response: <ESCAPE>                sequence by entering
  1447.                                        no prompt and no
  1448.                                        response
  1449.  
  1450.                                                               Page 7-4
  1451.  
  1452.  
  1453. The following Autolog could be used to get to the CB simulator program
  1454. from  most  any other menu on CompuServe.  The function key file named
  1455. "cb keys" must define key number 1 to be 'GO HOM-XX' where "XX" is the
  1456. page number of CB and key number 2 as the handle you want to use while
  1457. in CB.  HOM-21 is used for illustration only.  In this example a  left
  1458. arrow is represented by "-".
  1459.  
  1460.      Creating New Auto Logon
  1461.      Enter file name: cb auto          Select the file
  1462.      Prompt: <ESCAPE>                  Don't wait for prompt
  1463.      Response: <-FLcb keys             Load Function Keys
  1464.                                        from "cb keys"
  1465.      Prompt: <ESCAPE>                  Don't wait for prompt
  1466.      Response: T                       Send T for TOP
  1467.      Prompt: !                         Wait until top menu
  1468.                                        is displayed
  1469.      Response: <-1<ESCAPE>             Transmit Function
  1470.                                        Key One
  1471.      Prompt: ?                         Wait unitl CB prompts
  1472.                                        for handle
  1473.      Response: <-2<ESCAPE>             Transmit Function
  1474.                                        Key Two
  1475.      Prompt: <ESCAPE>                  Terminate the input
  1476.      Response: <ESCAPE>                sequence by entering
  1477.                                        no prompt and no
  1478.                                        response
  1479.  
  1480. The following shows how the autolog might execute.  It is initiated by
  1481. typing a Meta-J and responding with the the name "cb auto".
  1482.  
  1483.      T
  1484.      
  1485.      CompuServe            Page CIS-1
  1486.      CompuServe Information Service
  1487.      1 Home Services
  1488.      2 Business & Financial
  1489.      3 Personal Computing
  1490.      4 Services for Professionals
  1491.      5 User Information
  1492.      6 Index
  1493.      Enter your selection number,
  1494.      or H for more information.
  1495.                                   !GO HOM-21
  1496.      CompuServe           Page HOM-21
  1497.      
  1498.      Request Recorded,
  1499.      One Moment, Please
  1500.      Thank You for Waiting
  1501.      CB Simulator Ver 3(45)
  1502.      What's your handle? (your handle)
  1503.      (Channel) users tuned in
  1504.      Which channel: 1
  1505.      (1,Susana) Hi, CB'er
  1506.  
  1507.                                                               Page 7-5
  1508.  
  1509.  
  1510. The following example shows how the Autolog feature could be  used  to
  1511. set  the  communications  parameters  to  even  parity,  flow  control
  1512. disabled.  See the section "Modifying Communications  Characteristics"
  1513. for  details  on the Meta-Q function.  In this example a left arrow is
  1514. represented by "<-".
  1515.  
  1516.      Creating New Auto Logon
  1517.      Enter file name: setcom auto      Select the file
  1518.      Prompt: <ESCAPE>                  Don't wait for prompt
  1519.      Response: <-Q<ESCAPE>             Select Meta-Q
  1520.      Prompt: <ESCAPE>                  Don't wait for prompt
  1521.      Response: E<ESCAPE>               Set even parity
  1522.      Prompt: <ESCAPE>                  Don't wait for prompt
  1523.      Response: N<ESCAPE>               Set no flow control
  1524.      Prompt: <ESCAPE>                  Terminate the input
  1525.      Response: <ESCAPE>                sequence by entering
  1526.                                        no prompt and no
  1527.                                        response
  1528.  
  1529. The following  example  also  performs  the  same  function  and  then
  1530. initiates the Autolog file "login auto".  In this example a left arrow
  1531. is represented by "<-".
  1532.  
  1533.      Creating New Auto Logon
  1534.      Enter file name: setcom auto      Select the file
  1535.      Prompt: <ESCAPE>                  Don't wait for prompt
  1536.      Response: <-QEN                   Set the communications
  1537.                                        parameters
  1538.      Prompt: <ESCAPE>                  Don't wait for prompt
  1539.      Response: <-Jlogin auto           Start the Autolog file
  1540.                                        "login auto"
  1541.      Prompt: <ESCAPE>                  Terminate the input
  1542.      Response: <ESCAPE>                sequence by entering
  1543.                                        no prompt and no
  1544.                                        response
  1545.  
  1546.  
  1547.  
  1548. 7.6  AUTOLOG AUTO START UPON EXECUTION
  1549.  
  1550. VIDTEX  will  automatically  enter  autolog   execution   if   certain
  1551. conditions   are   met.    A  typical  implementation  requries  three
  1552. components, all located one after another in memory.   First  two  key
  1553. letters  such  as  "AL"  must  be present.  Next in memory will be the
  1554. length of the file name to begin the autolog with.  The length will be
  1555. range  checked  for  validity.   Finally  the file name itself will be
  1556. stored ascending in memory.  All of this information must  be  present
  1557. at the execution of VIDTEX before auto start will work.
  1558.                                                               Page 7-6
  1559.  
  1560.  
  1561. 7.7  MODIFYING COMMUNICATION CHARACTERISTICS
  1562.  
  1563. Meta-Q allows the user to  enable/disable  flow  control,  change  the
  1564. Parity  mode,  select  the  Baud Rate (if possible), change the Duplex
  1565. mode, and other communication parameters such as  printer  baud  rate.
  1566. Pressing Meta-Q will display the communications menu.  The menu should
  1567. indicate the current state of each feature.  The user  may  then  make
  1568. new  selections  for  each  feature.   Each  time the user makes a new
  1569. selection, the display should be updated.   The  user  types  carriage
  1570. return to return to terminal mode.
  1571.  
  1572. The disable flow control feature  will  disable  the  recoginition  of
  1573. received  flow control characters, but VIDTEX will still transmit flow
  1574. control to the host.
  1575.  
  1576. The parity modes available are 1) disabled, 8 bit data,  2)  Even,  3)
  1577. Odd,  4)  One,  and  5) Zero.  This feature only effects the parity of
  1578. characters typed by the user, or  auto  transmitted  from  an  autolog
  1579. response, function key execution, or RAM buffer transmission.
  1580.  
  1581. In Half Duplex mode, The character is echoed locally  by  calling  the
  1582. video  driver to display the character at the time it is placed in the
  1583. transmit buffer.  As an option, all ESCAPE  characters  typed  to  the
  1584. host will be diplayed as "$" to aid readability.
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.                               CHAPTER 8
  1598.  
  1599.                        B PROTOCOL:  PRIMITIVES
  1600.  
  1601.  
  1602.  
  1603. 8.1  PURPOSE
  1604.  
  1605. The CompuServe B Protocol is used to provides an error-free  means  of
  1606. exchanging  information  between  a  remote terminal or computer and a
  1607. CompuServe  host  computer   by   means   of   error   detection   and
  1608. retransmission.   The  CompuServe  B Protocol will only be used if the
  1609. remote device responds to an <ESC><I> sequence with PB in  its  option
  1610. list.   B Protocol  disk transfer will only be used if the interrogate
  1611. response of the remote device includes the DT option.
  1612.  
  1613.  
  1614.  
  1615. 8.2  GENERAL TERMINOLOGY
  1616.  
  1617. 8.2.1  Terminal Mode
  1618.  
  1619. Terminal mode refers to the videotex terminal processing described  in
  1620. the first part of this document.
  1621.  
  1622.  
  1623.  
  1624. 8.2.2  Protocol Mode
  1625.  
  1626. Protocol  mode  refers  to  the  special  processing  associated  with
  1627. protocol transmissions and function processing.  Protocol mode implies
  1628. an eight bit data path, disabled keyboard  processing,  nondisplay  of
  1629. received  data,  and  disabled termimal mode processing.  Protocol and
  1630. terminal modes are mutually exclusive in function.
  1631.  
  1632.  
  1633.  
  1634. 8.2.3  File Transfer Mode
  1635.  
  1636. File Transfer mode refers to a special mode within protocol mode which
  1637. is  characterized  by  an uninterrupted protocol mode session in which
  1638. the transfer of a file is accomplished.
  1639.                                                               Page 8-2
  1640.  
  1641.  
  1642. 8.2.4  Host
  1643.  
  1644. The host refers to the "master" portion of the protocol, the  computer
  1645. running  the  "master"  protocol and its associated telecommunications
  1646. network.  Only the host can initiate a B Protocol session.
  1647.  
  1648.  
  1649.  
  1650. 8.2.5  Remote
  1651.  
  1652. The remote refers to the "slave"  portion  of  the  protocol  and  the
  1653. microcomputer or smart terminal running the "slave" protocol.
  1654.  
  1655.  
  1656.  
  1657. 8.3  FLOW CONTROL
  1658.  
  1659. Flow control in protocol mode will regulate the transmissions  of  the
  1660. remote  only.   When  an XOFF (<DC3>) is received, the transmission of
  1661. data must cease immediately.  The transmission resumes upon  reception
  1662. of  an  XON (<DC1>).  The remote should never transmit flow control to
  1663. the host.
  1664.  
  1665.  
  1666.  
  1667. 8.4  PROTOCOL BUFFER LEVEL TERMINOLOGY
  1668.  
  1669. 8.4.1  Protocol Block Transmission
  1670.  
  1671. A block transmission refers to the transmission of  a  block  and  the
  1672. positive  acknowledgement  that the block was received correctly.  The
  1673. protocol block has several parts.
  1674.  
  1675.  
  1676.  
  1677. 8.4.2  Block Number
  1678.  
  1679. Each block transmitted has a block number  associated  with  it.   The
  1680. block  number  is  modulo 10, thus the block number after 9 is 0.  The
  1681. block number verification logic refers to the number  of  the  current
  1682. block  and  to  the  number of the last previously verified block.  At
  1683. program execution, the last block number is set  to  0.   The  current
  1684. block  is  therefore  1.   Each  time a block is verified the terminal
  1685. emulator should increment the current block number.  The host protocol
  1686. logic must syncronize its block number with the terminal emulator, not
  1687. vice versa.
  1688.  
  1689.  
  1690.  
  1691. 8.4.3  Command Field
  1692.  
  1693. The command field contains an ASCII string which specifies a  function
  1694. to be performed.  (See B Protocol Functions.)
  1695.                                                               Page 8-3
  1696.  
  1697.  
  1698. 8.4.4  Block Contents
  1699.  
  1700. The content of the protocol block is the data needed  to  perform  the
  1701. function  specified.  The data is transmitted "transparently" so as to
  1702. allow the receiver to distinguish between data and control codes.
  1703.  
  1704.  
  1705.  
  1706. 8.4.5  Transparency
  1707.  
  1708. Since some control  characters  are  used  by  the  protocol,  control
  1709. characters within the data are masked.  Control characters in the data
  1710. are transmitted transparently  by  the  sequence  <DLE><character+64>.
  1711. Using  this  rule a control-A (<SOH>) would be sent as <DLE><A>.  This
  1712. allows all 8 bit data to be transmitted unambiguously.  Currently, the
  1713. only  characters  that  NEED  to be transmitted transparently are ETX,
  1714. DLE, and ENQ.  The host may mask any other control  characters  during
  1715. transmission,  however,  and  thus  the  microcomputer must be able to
  1716. accept the masking of any character.  These rules apply  to  the  data
  1717. only  during  transmission;   the  data  is  converted to the original
  1718. character immediately upon reception.
  1719.  
  1720.  
  1721.  
  1722. 8.4.6  Checksum
  1723.  
  1724. The "checksum" is a value used to detect any errors.  At the beginning
  1725. of every attempt to send a protocol block, the checksum is initialized
  1726. to zero.  Then, for each character in  the  block  starting  with  the
  1727. block  number  and  ending  with the <ETX>, the following algorithm is
  1728. applied.  The old checksum is rotated left one bit with  bit  7  being
  1729. rotated into bit 0;  the new character is added;  if carry occurs, one
  1730. is added to the checksum.  The checksum is  computed  from  real  data
  1731. only  (that  is,  after  transparency  masking  has been removed.) The
  1732. checksum is sent as a transparent character.
  1733.  
  1734.  
  1735.  
  1736. 8.5  HOST PROTOCOL INITIALIZATION
  1737.  
  1738. The information required for the host  to  begin  a  protocol  session
  1739. consists of verifying that the remote has B Protocol and synchronizing
  1740. the host internal block number with the remote.
  1741.  
  1742. The host can determine if the remote  has  B Protocol  by  sending  an
  1743. <ESC><I>  in  terminal  mode.   The  remote  interrogate response must
  1744. contain "PB" for B Protocol and in addition  "DT"  for  file  transfer
  1745. mode.  (See Terminal Escape Processing)
  1746.  
  1747. The host may at any time during terminal processing transmit an  <ENQ>
  1748. to  the remote to obtain a positive acknowledgement which contains the
  1749. block number of the last block correctly transmitted.
  1750.                                                               Page 8-4
  1751.  
  1752.  
  1753. 8.6  BLOCK TRANSMISSION
  1754.  
  1755. The transmission  of  a  protocol  block  involves  four  parts:   the
  1756. preparation,  the  actual  sending  of  the  block,  and  the logic to
  1757. error-detect and retransmit a bad block, and the  logic  to  recognize
  1758. the receiver's positive acknowledgement.
  1759.  
  1760.  
  1761.  
  1762. 8.6.1  Preparation For Transmission
  1763.  
  1764. The remote will only transmit  a  protocol  block  in  response  to  a
  1765. protocol  function  request from the host.  Generally, the remote will
  1766. perform  the   required   function   before   sending   the   positive
  1767. acknowledgement   of   the  host  protocol  block.   Because  of  this
  1768. arrangement, the actions taken to prepare for  buffer  reception  will
  1769. still be in effect for buffer transmissions to the host.
  1770.  
  1771. The remote will begin reception of a protocol buffer when it  receives
  1772. a  <DLE>.   When the reception of a protocol buffer is intiated by the
  1773. host, the remote should (1) remember the  current  UART  masking  mode
  1774. (seven  or eight bit) and enter eight bit mode;  (2) close the capture
  1775. buffer to prevent the received block from  being  copied  to  the  Ram
  1776. Buffer;  and (3) disable the keyboard.
  1777.  
  1778.  
  1779.  
  1780. 8.6.2  Actual Block Transmission
  1781.  
  1782. The actual transmission of  a  single  protocol  buffer  involves  the
  1783. following:
  1784.                                                               Page 8-5
  1785.  
  1786.  
  1787. 8.6.2.1  Components Of A Block
  1788.  
  1789. The format of the B Protocol block as it is transmitted is:
  1790.  
  1791.      <DLE><B><blknum+48><command><contents><ETX><checksum>
  1792.  
  1793.  <DLE>  in  this  context  indicates  the  beginning  of  a   Protocol
  1794.      transmission.
  1795.  
  1796.  <B> indicates the start of a B protocol block.
  1797.  
  1798.  <blknum> is the sender's current block number.  The  receiver  should
  1799.      store  the  received block number for later comparison to its own
  1800.      internal block number.
  1801.  
  1802.  <command> field is  an  ASCII  string  which  indicates  the  desired
  1803.      function.
  1804.  
  1805.  <contents> field is the transparent data required by "command".
  1806.  
  1807.  <ETX> marks the end of the block.
  1808.  
  1809.  <checksum> is a value used to detect any  errors.   The  checksum  is
  1810.      initialized  to  zero.   The  received  checksum  is  transmitted
  1811.      transparently and must match the receiver's internally calculated
  1812.      checksum.
  1813.  
  1814.  
  1815.  
  1816. 8.6.2.2  User Assurance
  1817.  
  1818. During long protocol sessions the user may come to  believe  that  the
  1819. protocol has died.  To avoid this situation the remote should diplay a
  1820. "+" on the user's screen for 32  characters  received  or  transmitted
  1821. during a file transfer session.
  1822.  
  1823.  
  1824.  
  1825. 8.6.2.3  Maximum Block Length
  1826.  
  1827. The maximum  block  length,  from  the  initial  <DLE>  to  the  final
  1828. checksum,  not  including  transparent  characters  is  512.   If  the
  1829. terminal does not detect an <ETX> within this length, it has been lost
  1830. due to line noise and the block is bad.
  1831.  
  1832.  
  1833.  
  1834. 8.6.3  Error Detection And Retransmission
  1835.  
  1836. The protocol logic will handle the following error conditions:
  1837.                                                               Page 8-6
  1838.  
  1839.  
  1840.      8.6.3.1  Unidentified Protocol Block
  1841.  
  1842.      The protocol block reception begins  with  <DLE>.   If  the  next
  1843.      character  received  is  not <B> then the remote will display the
  1844.      character on the screen and exit protocol mode.
  1845.  
  1846.  
  1847.  
  1848.      8.6.3.2  <NAK> Negative Acknowledge
  1849.  
  1850.      The receiver will send a <NAK> if any of the following situations
  1851.      occur:
  1852.  
  1853.          1) If the block number is incorrect (that is;   the  received
  1854.             block  number  is  neither the receiver's current nor last
  1855.             block number)
  1856.          2) the receiver times out
  1857.          3) the checksum is incorrect
  1858.          4) an <ETX> is not received within the maximum block length
  1859.          5) an <ETX> is received in terminal mode
  1860.  
  1861.      If the remote is in file transfer mode, the  value  of  the  last
  1862.      correctly  acknowledged  block  number should be displayed on the
  1863.      screen when a <NAK> is transmitted to the host.
  1864.  
  1865.      The sender will attempt to retransmit a block  ten  times  before
  1866.      aborting   its   attempts  and  switching  back  to  non-protocol
  1867.      communication.  If the remote is  the  sender  and  an  <ENQ>  is
  1868.      received,  the  remote  will  assume  failure  and retransmit the
  1869.      block.
  1870.  
  1871.  
  1872.  
  1873.      8.6.3.3  Failure Acknowledge
  1874.  
  1875.      In the event that an error occurred during function processing by
  1876.      the  receiver, it responds with a protocol block with a "command"
  1877.      field of <F> (for failure) and the "contents" field containing  a
  1878.      single  letter error descriptor.  The error descriptor can be one
  1879.      of the following:
  1880.  
  1881.        <N>  the function is not implemented
  1882.        <C>  there is a capacity problem (for example,  there  are  not
  1883.             that many pages, or there is no RAM at that address)
  1884.        <E>  an error occurred during  processing  (for  example,  disk
  1885.             errors)
  1886.        <A>  the user typed a Meta-A to abort the protocol function
  1887.  
  1888.        Once the failure block has been acknowledged by the  host,  the
  1889.        remote will exit protocol mode and file transfer mode if active
  1890.        and return to terminal mode.
  1891.                                                               Page 8-7
  1892.  
  1893.  
  1894.        8.6.3.4  Time Outs
  1895.  
  1896.        It is necessary to  define  some  time  outs  which  allow  the
  1897.        protocol  to  continue  even  if  some  control  sequences  get
  1898.        garbled.  This allows the  protocol  to  properly  recover  and
  1899.        continue.
  1900.  
  1901.        After the checksum for a block has been transmitted, the sender
  1902.        initiates  a  10  second timer.  If some type of acknowledge is
  1903.        not received within that time, the sender transmits an  enquire
  1904.        to  determine the status of the receiver.  The sender will wait
  1905.        ten more seconds  before  transmitting  another  enquire.   The
  1906.        sender will issue ten enquires before aborting the protocol and
  1907.        returning to non-protocol mode.
  1908.  
  1909.        When a block is being received, the receiver  should  wait  for
  1910.        ten  seconds  for  a character.  If one is not received in that
  1911.        time, it should assume that the <ETX> was garbled and  transmit
  1912.        a negative acknowledge.
  1913.  
  1914.  
  1915.  
  1916.   8.6.4  Positive Acknowledgement
  1917.  
  1918.   Once a block has been transmitted and processed without  error,  the
  1919.   receiver should send a positive acknowledgement to the sender.
  1920.  
  1921.   A special case of error handling  occurs  when  the  received  block
  1922.   number  is  not the current block number but the block number of the
  1923.   last  block  that  was  correctly   processed   and   the   positive
  1924.   acknowledgement  was  sent.   If  the  positive  acknowledgement  is
  1925.   grabled, the sender will retransmit the block again.  In  this  case
  1926.   the  receiver  should  discard  this  duplicate  block (since it has
  1927.   already been processed once) and send a positive acknowledgement  to
  1928.   the sender.
  1929.  
  1930.   If the sender receives a positive acknowledgement on the last  block
  1931.   correctly acknowledged, it will ignore the acknowledgement and await
  1932.   the  positive  acknowledgement  for  the  current  block  from   the
  1933.   receiver.
  1934.  
  1935.   The normal case is  when  the  received  block  number  matches  the
  1936.   receiver's  current  internal  block  number.  If no other error has
  1937.   occurred, the receiver will proceed to process the block.  Depending
  1938.   on   the   function,   the   receiver   may  transmit  the  positive
  1939.   acknowledgement before or after the processing of  the  contents  of
  1940.   the block.  If an error occurs after the the protocol block has been
  1941.   determined  to  be  correct,  the  error  cannot  be  communications
  1942.   related.   The  remote  should  transmit  a  failure  block  with  a
  1943.   "contents" field that describes the error.
  1944.  
  1945.   Once the positive acknowledgement has been transmitted to verify the
  1946.   correct  reception  of a protocol block, the receiver will increment
  1947.   its internal current block number.  Upon reception of  the  positive
  1948.   acknowledgement,  the  sender  will  increment  its internal current
  1949.                                                               Page 8-8
  1950.  
  1951.  
  1952.   block number.
  1953.  
  1954.   If the sender receives  a  <DLE><B>  indicating  the  initiation  of
  1955.   reception  of  a  new  block,  the  last  block  sent  is implicitly
  1956.   acknowledged.
  1957.  
  1958.   During  the  time  the  remote   is   awaiting   reception   of   an
  1959.   acknowledgement  from the host, any unrecognized characters received
  1960.   will be displayed on the user's screen.
  1961.  
  1962.  
  1963.  
  1964.        8.6.4.1  <ENQ> Enquire
  1965.  
  1966.        When the remote receives an <ENQ>, it responds with a  positive
  1967.        acknowledge  of the last block correctly received.  If an <ENQ>
  1968.        is received before any block is received, the receiver responds
  1969.        with  a  logical  acknowledge of block 0.  If <ENQ> is received
  1970.        during the reception of a block, the remote  should  abort  the
  1971.        reception,  send  the  positive  acknowledge  of the last block
  1972.        correctly received, and return to terminal mode.  The host  can
  1973.        also send an <ENQ> without placing the remote in protocol mode.
  1974.        This allows the host to synchronize its internal  block  number
  1975.        with the remote's internal block number.
  1976.  
  1977.        Since the remote must respond to XOFF, the XOFF  received  flag
  1978.        should be reset in case data 93 hexadecimal was received.
  1979.  
  1980.  
  1981.  
  1982.        8.6.4.2  <DLE><blknum+48> Positive Acknowledge
  1983.  
  1984.        When a block has been correctly received,  i.e.   checksum  and
  1985.        block  number  correct,  the receiver acknowledges the block by
  1986.        sending a <DLE><blknum+48>, where "blknum" is the block number.
  1987.        If  the  checksum  is correct but the block number is logically
  1988.        one less than the expected block number, the receiver transmits
  1989.        a  positive  acknowledge  and  ignores the block because it has
  1990.        already been processed  but  the  acknowledge  must  have  been
  1991.        garbled.  Note that block 9 is logically one less than block 0.
  1992.  
  1993.        Since the remote must respond to XOFF, the XOFF  received  flag
  1994.        should be reset in case data 93 hexadecimal was received.
  1995.  
  1996.        During file transfer  mode,  the  transmission  of  a  positive
  1997.        acknowledgement  will  also display the current block number on
  1998.        the screen.
  1999.                                                               Page 8-9
  2000.  
  2001.  
  2002.        8.6.4.3  <DLE><;> Wait Acknowledge
  2003.  
  2004.        When a block has been correctly received but it may  take  some
  2005.        time  to  process  the block, the receiver requests the host to
  2006.        wait by sending a <DLE><;>.  This tells the sender to wait  for
  2007.        ten seconds and then send an enquire.  The receiver should then
  2008.        respond to the inquire  with  another  wait  acknowledge  or  a
  2009.        positive acknowledge.  During the sender wait period the remote
  2010.        can send any valid protocol response (after function processing
  2011.        is  complete).   The  remote  may  send multiple <DLE><;>'s one
  2012.        after another to obtain prolonged wait periods between <ENQ>'s.
  2013.  
  2014.  
  2015.  
  2016.   8.7  EXITING PROTOCOL MODE
  2017.  
  2018.   The remote will exit protocol mode as follows 1) enable the keyboard
  2019.   if  not  in  file transfer mode, 2) restore the status of RAM buffer
  2020.   capture,  and  3) restore  the  data  mode  (7  or  8  bit)  to  its
  2021.   pre-protocol status.
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.                               CHAPTER 9
  2035.  
  2036.                    B PROTOCOL:  FUNCTION PROCESSING
  2037.  
  2038.  
  2039.  
  2040. The functions which presently can be performed with the B Protocol are
  2041. described below.
  2042.  
  2043.  
  2044.  
  2045. 9.1  <B><LSB><MSB> BINARY LOAD
  2046.  
  2047. Memory is loaded with the data from the "contents" field  starting  at
  2048. the  location  <msb><lsb>.   This provides a mechanism for patches and
  2049. off-line programs to be loaded into the terminal or computer.  Address
  2050. space is limited to 16 bits, data to 8 bits.
  2051.  
  2052.  
  2053.  
  2054. 9.2  <G><LSB><MSB> EXECUTE MEMORY
  2055.  
  2056. Control of the processor is transferred to the location <msb><lsb> via
  2057. a  subroutine  call.  The terminal must not hang up the modem and must
  2058. continue to function when  control  is  returned  via  a  return  from
  2059. subroutine.   The  positive  acknowledge  is  sent  before  control is
  2060. transferred so the host must allow time for the subroutine to  execute
  2061. before  attempting futher B Protocol communications.  Address space is
  2062. restricted to 16 bits.
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.                               CHAPTER 10
  2076.  
  2077.                    B PROTOCOL:  FILE TRANSFER MODE
  2078.  
  2079.  
  2080.  
  2081. 10.1  INTRODUCTION
  2082.  
  2083. The B protocol provides a  method  for  transferring  files  from  the
  2084. Remote computer to the Host and vice-versa.  Most any type of file can
  2085. be transferred directly from disk to  disk.   Files  residing  on  the
  2086. Remote  computer's  disk  can optionally be erased or renamed from the
  2087. Host.
  2088.  
  2089. The B protocol is normally a noncontinuous protocol since  the  Remote
  2090. returns  to  text  mode  between  each  packet.   However, during file
  2091. transfer the Remote is be captive and is not allowed to return to text
  2092. mode  until  the  transfer  is completed.  For example, when a file is
  2093. being  transferred  from  the  Remote  to  the  Host,  the  Remote  is
  2094. continuously  sending  data  and  receiving  responses.   In  order to
  2095. preserve protocol integrity, the Remote must remove  itself  from  all
  2096. control of the user.  The only possible exception is allowing the user
  2097. to abort a transfer from the keyboard.  The Remote should  provide  an
  2098. indication  to  the user that the transfer is proceeding by displaying
  2099. block numbers and plus signs.
  2100.  
  2101.  
  2102.  
  2103. 10.2  FILE TRANSFER TYPES
  2104.  
  2105. There are three types of file  transfer:   ASCII,  binary,  and  image
  2106. (machine  dependent).  The ASCII transfer is used to transfer standard
  2107. ASCII text.  The binary transfer is  used  to  transfer  binary  data.
  2108. This  could  be  used to facilitate the transfer of pure data from one
  2109. microcomputer to another.  The image  transfer  is  used  to  transfer
  2110. machine specific files (e.g.  object code, executable files).
  2111.  
  2112.  
  2113.  
  2114. 10.2.1  ASCII Transfers
  2115.  
  2116. The download of an ASCII text file from the Host will produce  a  text
  2117. file  on disk containing an edited version of the text file in the the
  2118. Remote's native character set.
  2119.  
  2120. An ASCII upload to the Host performs the conversion  from  the  native
  2121.                                                              Page 10-2
  2122.  
  2123.  
  2124. acharacter  set  to  ASCII.  Any graphic characters that do not map to
  2125. ASCII will be replaced by space  on  upload.   Non-graphic  characters
  2126. that do not map to ASCII will be ignored.
  2127.  
  2128.  
  2129.  
  2130. 10.2.2  Binary File Transfer
  2131.  
  2132. A binary upload will transfer the contents of the Remote's  disk  file
  2133. to the Host.  The contents of disk file will be uploaded exactly as it
  2134. is on disk.  The Host will store the file  contents  in  an  arbitrary
  2135. form for later download.
  2136.  
  2137. On download, the Host will provide the Remote with the contents of the
  2138. file just at it was earlier uploaded.  If the Remote computer supports
  2139. file types, the default file type on download will be chosen to be the
  2140. type most descriptive of binary data.
  2141.  
  2142.  
  2143.  
  2144. 10.2.3  Image File Transfers
  2145.  
  2146. Image  file  transfer  will  transfer  a  header  containing  whatever
  2147. information  is  necessary to accurately recreate the file on download
  2148. and the contents of the Remote file.
  2149.  
  2150. The header  will  contain  1)  a  two  byte  (16  bit)  header  length
  2151. (transmitted Least Signifigant Byte, Most Signifigant Byte) and 2) the
  2152. machine identification code (See Interrogate Codes) as the next  three
  2153. bytes.   Additional bytes in the header (if any) will contain whatever
  2154. information is necessary for exact reproduction of the file.
  2155.  
  2156. On upload, the Remote will create the header  and  transmit  it.   The
  2157. contents of the disk file will follow.
  2158.  
  2159. On download, the Remote will first receive  the  header.   The  remote
  2160. will  use the information contained in the header to properly download
  2161. the disk file.  Note that the header length is generalized to 16  bits
  2162. and  that  the  header  may  span  a  protocol buffer.  If the machine
  2163. identification  code  of  the  header  does  not  match  the   machine
  2164. identification  code  of  the  Remote, the Remote will inform the user
  2165. that the file may not be compatible with their computer and prompt the
  2166. user  to  type  "Y"  for  Yes,  continue download or "N" for No, abort
  2167. transfer.  If the user continues, the header will  be  discarded.   If
  2168. the  user  aborts,  the Remote will respond to the host with a Failure
  2169. Abort block.
  2170.  
  2171.  
  2172.  
  2173. 10.3  INITIATING A TRANSFER
  2174.  
  2175. Only the Host  can  initiate  a  transfer.   When  the  file  transfer
  2176. initiation  block  is  received,  the  remote will enter file transfer
  2177. mode.  The transfer initiate block is as follows:
  2178.                                                              Page 10-3
  2179.  
  2180.  
  2181.      <T><direction><type><file name>
  2182.  
  2183.           and <direction> is <U> or <D>
  2184.  
  2185.           and <type> is <A> or <B> or <C> or <I>
  2186.  
  2187. The  <T>  indicates  a  file  transfer  mode  control  command.    The
  2188. <direction>  character is either <U> for upload from Remote to Host or
  2189. <D> for download from Host to Remote.  Note that the <T>  command  has
  2190. other  arguments.   The  <type> defines the type of the transfer to be
  2191. performed as follows:
  2192.  
  2193.      <A>    ASCII
  2194.      <B>    Binary
  2195.      <I>    Image
  2196.  
  2197. The <file name> is the name of the file that the Remote  will  use  to
  2198. download to or upload from.
  2199.  
  2200.  
  2201.  
  2202. 10.3.1  <T><D>  Download
  2203.  
  2204. This initiates the transfer of a file from  the  Host  to  the  Remote
  2205. computer.   If  the file already exists on the Remote computer's disk,
  2206. it responds with an Failure Error block;  it  must  not  overwrite  an
  2207. existing  file.   If there is not enough space on the disk, the Remote
  2208. will respond with a Capacity Failure block.  If an error occurs during
  2209. download,  the  Remote  will  delete  any  portion of the file that as
  2210. already been witten out to disk.  This will prevent the user from ever
  2211. mistaking a file fragment for a complete download.
  2212.  
  2213.  
  2214.  
  2215. 10.3.2  <T><U>  Upload
  2216.  
  2217. This initiates the transfer of a file from the Remote computer to  the
  2218. Host  computer.  If the file is not found, the Remote responds with an
  2219. Failure Error block.
  2220.  
  2221.  
  2222.  
  2223. 10.4  <N>  TRANSFERRING DATA
  2224.  
  2225. After a transfer has been initiated, the actual data  is  transmitted.
  2226. Each  block  of  data  has a "command" field of N for Next packet.  No
  2227. relationship exists between a packet of data and a physical or logical
  2228. record on the Host or the Remote.  Several records may be contained in
  2229. a packet and a record may span several packets.  The end of  a  packet
  2230. does not signify the end of a record.
  2231.  
  2232. The remote remains in file transfer mode throughout data transfer.
  2233.                                                              Page 10-4
  2234.  
  2235.  
  2236. 10.5  <T><C>  COMPLETING A TRANSFER
  2237.  
  2238. When the sender of the file (Host or Remote) detects the  end  of  the
  2239. file,  it  sends a block with a "command" of <T><C> for Transfer Close
  2240. (the file).  The receiver closes the file and sends an  acknowledgment
  2241. on  the  close  request.  The transfer is then complete and the Remote
  2242. exits file transfer mode and returns to terminal mode.
  2243.  
  2244.  
  2245.  
  2246. 10.6  ABORTING A TRANSFER
  2247.  
  2248. If the Host determines that the transfer can not be completed for  any
  2249. reason  (e.g.   line too noisy) or the Remote determines that the user
  2250. wants to abort the transfer, a Failure Abort  block  may  be  sent  in
  2251. response  to  or  instead of a data block.  If the Remote is sending a
  2252. file, it closes the file and returns to terminal mode.  If the  Remote
  2253. is  receiving  a  file, it closes the file, deletes it, and returns to
  2254. terminal mode.
  2255.  
  2256.  
  2257.  
  2258. 10.7  <T><E>  ERASE A REMOTE FILE
  2259.  
  2260. This optional function is used to erase a file on the  Remote's  disk.
  2261. The function block is as follows:
  2262.  
  2263.      <T><E><file name>.
  2264.  
  2265. The command of <T><E> refers to Transfer Erase a file.  The "contents"
  2266. field  is  the  name  of  the file to be erased.  If the file does not
  2267. exist, is protected, or can not be erased for any  other  reason,  the
  2268. Remote responds with an Failure Error block.
  2269.  
  2270. This could be used to upload a file from the Remote and  once  it  has
  2271. been sucessfully transmitted, erase it.
  2272.  
  2273.  
  2274.  
  2275. 10.8  <T><R>  RENAME
  2276.  
  2277. This optional function changes the name of a file that exists  on  the
  2278. Remote computer's disk.  The function block is as follows:
  2279.  
  2280.      <T><R><present><NUL><new>
  2281.  
  2282. The command is <T><R> for Transfer Rename a remote file.  The contents
  2283. of  the block is 1) <present> - the present name of the file, 2) <NUL>
  2284. - an ASCII null as a delimiter, and 3) <new> - the new  name  for  the
  2285. file.
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.                               APPENDIX A
  2299.  
  2300.                     CURRENTLY DEFINED OPTION CODES
  2301.  
  2302.  
  2303.  
  2304.   CB - Capture Buffer.  <ESC><ESC> O,C,Z,V,Y
  2305.  
  2306.   CC - Cursor control.  A, B, C, D, H, J, K, Y, and j
  2307.  
  2308.   CW - Wide character mode.  l and m
  2309.  
  2310.   DT - B Protocol Disk Transfer (in addition to PB).
  2311.  
  2312.   GH - High resolution graphics.  GH and GN
  2313.  
  2314.   GM - Medium resolution graphics.  GM and GN
  2315.  
  2316.   HC - Hard copy.  e and f (and <DC2> and <DC4>)
  2317.  
  2318.   SS<lin><col> - Screen Size (<lin> lines by <col> columns).
  2319.  
  2320.   PB - CompuServe B protocol.
  2321.  
  2322.   WC - Window Control.  <ESC><ESC><W>
  2323.  
  2324.   XX - Null Option Code.
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.                               APPENDIX B
  2338.  
  2339.     THE AMERICAN STANDARD CODE FOR INFORMATION INTERCHANGE (ASCII)                 ________
  2340.  
  2341.  
  2342.  
  2343.                   ASCII        Octal     Hex      Decimal
  2344.                 Character      Value     Value     Value
  2345.  
  2346.                    NUL          000       00        000
  2347.                    SOH          001       01        001
  2348.                    STX          002       02        002
  2349.                    ETX          003       03        003
  2350.                    EOT          004       04        004
  2351.                    ENQ          005       05        005
  2352.                    ACK          006       06        006
  2353.                    BEL          007       07        007
  2354.                    BS           010       08        008
  2355.                    HT           011       09        009
  2356.                    LF           012       0A        010
  2357.                    VT           013       0B        011
  2358.                    FF           014       0C        012
  2359.                    CR           015       0D        013
  2360.                    SO           016       0E        014
  2361.                    SI           017       0F        015
  2362.                    DLE          020       10        016
  2363.                    DC1 (X-ON)   021       11        017
  2364.                    DC2 (T-ON)   022       12        018
  2365.                    DC3 (X-OFF)  023       13        019
  2366.                    DC4 (T-OFF)  024       14        020
  2367.                    NAK          025       15        021
  2368.                    SYN          026       16        022
  2369.                    ETB          027       17        023
  2370.                    CAN          030       18        024
  2371.                    EM           031       19        025
  2372.                    SUB          032       1A        026
  2373.                    ESC          033       1B        027
  2374.                    FS           034       1C        028
  2375.                    GS           035       1D        029
  2376.                    RS           036       1E        030
  2377.                    US           037       1F        031
  2378.  
  2379.  
  2380.  
  2381.                   ASCII        Octal     Hex      Decimal
  2382.                 Character      Value     Value     Value
  2383.  
  2384.                    SP           040       20        032
  2385.                     !           041       21        033
  2386.                     "           042       22        034
  2387.                     #           043       23        035
  2388.                     $           044       24        036
  2389.                     %           045       25        037
  2390.                     &           046       26        038
  2391.                     '           047       27        039
  2392.                     (           050       28        040
  2393.                     )           051       29        041
  2394.                     *           052       2A        042
  2395.                     +           053       2B        043
  2396.                     ,           054       2C        044
  2397.                     -           055       2D        045
  2398.                     .           056       2E        046
  2399.                     /           057       2F        047
  2400.                     0           060       30        048
  2401.                     1           061       31        049
  2402.                     2           062       32        050
  2403.                     3           063       33        051
  2404.                     4           064       34        052
  2405.                     5           065       35        053
  2406.                     6           066       36        054
  2407.                     7           067       37        055
  2408.                     8           070       38        056
  2409.                     9           071       39        057
  2410.                     :           072       3A        058
  2411.                     ;           073       3B        059
  2412.                     <           074       3C        060
  2413.                     =           075       3D        061
  2414.                     >           076       3E        062
  2415.                     ?           077       3F        063
  2416.  
  2417.  
  2418.  
  2419.                   ASCII        Octal     Hex      Decimal
  2420.                 Character      Value     Value     Value
  2421.  
  2422.                     @           100       40        064
  2423.                     A           101       41        065
  2424.                     B           102       42        066
  2425.                     C           103       43        067
  2426.                     D           104       44        068
  2427.                     E           105       45        069
  2428.                     F           106       46        070
  2429.                     G           107       47        071
  2430.                     H           110       48        072
  2431.                     I           111       49        073
  2432.                     J           112       4A        074
  2433.                     K           113       4B        075
  2434.                     L           114       4C        076
  2435.                     M           115       4D        077
  2436.                     N           116       4E        078
  2437.                     O           117       4F        079
  2438.                     P           120       50        080
  2439.                     Q           121       51        081
  2440.                     R           122       52        082
  2441.                     S           123       53        083
  2442.                     T           124       54        084
  2443.                     U           125       55        085
  2444.                     V           126       56        086
  2445.                     W           127       57        087
  2446.                     X           130       58        088
  2447.                     Y           131       59        089
  2448.                     Z           132       5A        090
  2449.                     [           133       5B        091
  2450.                     \           134       5C        092
  2451.                     ]           135       5D        093
  2452.                     ^           136       5E        094
  2453.                     _           137       5F        095
  2454.  
  2455.  
  2456.  
  2457.                   ASCII        Octal     Hex      Decimal
  2458.                 Character      Value     Value     Value
  2459.  
  2460.                     `           140       60        096
  2461.                     a           141       61        097
  2462.                     b           142       62        098
  2463.                     c           143       63        099
  2464.                     d           144       64        100
  2465.                     e           145       65        101
  2466.                     f           146       66        102
  2467.                     g           147       67        103
  2468.                     h           150       68        104
  2469.                     i           151       69        105
  2470.                     j           152       6A        106
  2471.                     k           153       6B        107
  2472.                     l           154       6C        108
  2473.                     m           155       6D        109
  2474.                     n           156       6E        110
  2475.                     o           157       6F        111
  2476.                     p           160       70        112
  2477.                     q           161       71        113
  2478.                     r           162       72        114
  2479.                     s           163       73        115
  2480.                     t           164       74        116
  2481.                     u           165       75        117
  2482.                     v           166       76        118
  2483.                     w           167       77        119
  2484.                     x           170       78        120
  2485.                     y           171       79        121
  2486.                     z           172       7A        122
  2487.                     {           173       7B        123
  2488.                     |           174       7C        124
  2489.                     }           175       7D        125
  2490.                     ~           176       7E        126
  2491.                    DEL          177       7F        127
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.                               APPENDIX C
  2505.  
  2506.                     CONTROL CHARACTER DEFINITIONS
  2507.  
  2508.  
  2509.  
  2510.      NUL        Null, all zeroes         DC1  Device control 1 (X-ON)
  2511.      SOH        Start of heading         DC2  Device control 2 (T-ON)
  2512.      STX        Start of text            DC3  Device control 3 (X-OFF)
  2513.      ETX        End of text              DC4  Device control 4 (T-OFF)
  2514.      EOT        End of transmission      NAK  Negative acknowledge
  2515.      ENQ        Enquiry                  SYN  Synchronous idle
  2516.      ACK        Acknowledge              ETB  End of transmission block
  2517.      BEL        Bell, Alarm              CAN  Cancel
  2518.      BS         Backspace                EM   End of medium
  2519.      HT         Horizontal tab           SUB  Substitute
  2520.      LF         Line feed                ESC  Escape
  2521.      VT         Vertical tab             FS   File separator
  2522.      FF         Form feed                GS   Group separator
  2523.      CR         Carriage return          RS   Record separator
  2524.      SO         Shift out                US   Unit separator
  2525.      SI         Shift in                 SP   Space
  2526.      DLE        Data link escape         DEL  Delete
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.                                    APPENDIX D
  2540.  
  2541.                             ESCAPE SEQUENCE SUMMARY
  2542.  
  2543.  
  2544.  
  2545. Video Escape Sequences
  2546.  
  2547.      Sequence            Effect on Terminal
  2548.      
  2549.      <ESC><A>            Move cursor up one line
  2550.      <ESC><B>            Move cursor down one line
  2551.      <ESC><C>            Move cursor right one space
  2552.      <ESC><D>            Move cursor left one space
  2553.      <ESC><G><mode>      Change graphics mode
  2554.      <ESC><H>            Move cursor to the top left corner
  2555.      <ESC><K>            Clear from cursor to end of line
  2556.      <ESC><J>            Clear from cursor to end of screen
  2557.      <ESC><j>            Clear page - same as an ASCII form feed
  2558.      <ESC><l>            Set normal character width
  2559.      <ESC><m>            Set wide character width
  2560.      <ESC><Y><lin><col>  Set cursor position
  2561.  
  2562.  
  2563. Terminal Level Processing
  2564.  
  2565.      <ESC><I>            Interrogate Remote
  2566.      <ESC><e>            Disable Display
  2567.      <ESC><f>            Enable Display
  2568.      <ESC><b>            Disable Keyboard
  2569.      <ESC><c>            Enable Keyboard
  2570.      
  2571.      <ESC><ESC><O>       Open Ram Buffer
  2572.      <ESC><ESC><C>       Close Ram Buffer
  2573.      <ESC><ESC><Z>       Zero Ram Buffer
  2574.      <ESC><ESC><V>       Transmit Ram Buffer
  2575.      <ESC><ESC><Y><pmt>  Transmit RAM Buffer with prompt
  2576.      
  2577.      <ESC><ESC><W><lin1><col1><lin2><col2>     Window Control
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.                                    APPENDIX E
  2591.  
  2592.                                B PROTOCOL SUMMARY
  2593.  
  2594.  
  2595.  
  2596. Block Format:
  2597.  
  2598.      <DLE><B><blknum+48><command><contents><ETX><checksum>
  2599.  
  2600.  
  2601. Currently defined commands are:
  2602.  
  2603.  Remote Memory Reference
  2604.  
  2605.      B      Load memory
  2606.      G      Go execute at an address
  2607.  
  2608.  File Transfer Mode
  2609.  
  2610.      TE<file name>            Erase a file
  2611.      TR<present><0><new>      Rename a file
  2612.      TU<type><file name>      Transfer from Remote to Host
  2613.      TD<type><file name>      Transfer from Host to Remote
  2614.      N                        Next block of data
  2615.      TC                       Close file
  2616.  
  2617.           <type> is:
  2618.              A - ASCII
  2619.              B - Binary
  2620.              I - Image
  2621.  
  2622.  Failure Blocks
  2623.  
  2624.      FA Failure - Abort
  2625.      FC Failure - capacity problem
  2626.      FE Failure - error during processing of last block
  2627.      FN Failure - function not implemented
  2628.  
  2629.  
  2630.  
  2631.                      TABLE OF CONTENTS
  2632.  
  2633.  
  2634.  
  2635. Introduction  . . . . . . . . . . . . . . . . . . . . . . 1-1
  2636.   Purpose . . . . . . . . . . . . . . . . . . . . . . . . 1-1
  2637.   Conventions used in this document . . . . . . . . . . . 1-3
  2638. User Interface Requirements . . . . . . . . . . . . . . . 2-1
  2639.   Communications  . . . . . . . . . . . . . . . . . . . . 2-1
  2640.   Keyboard  . . . . . . . . . . . . . . . . . . . . . . . 2-1
  2641.   Minimum Video Display Requirements  . . . . . . . . . . 2-2
  2642. Video Driver Requirements . . . . . . . . . . . . . . . . 3-1
  2643.   Terminology . . . . . . . . . . . . . . . . . . . . . . 3-1
  2644.   Video Initialization  . . . . . . . . . . . . . . . . . 3-1
  2645.   Text Mode Processing  . . . . . . . . . . . . . . . . . 3-2
  2646.     Cursor Display  . . . . . . . . . . . . . . . . . . . 3-2
  2647.     Text Display  . . . . . . . . . . . . . . . . . . . . 3-2
  2648.     Scrolling . . . . . . . . . . . . . . . . . . . . . . 3-2
  2649.     ASCII Control Codes . . . . . . . . . . . . . . . . . 3-2
  2650.       <BEL> - Bell  . . . . . . . . . . . . . . . . . . . 3-2
  2651.       <BS> - Backspace  . . . . . . . . . . . . . . . . . 3-2
  2652.       <HT> - Horizontal Tab . . . . . . . . . . . . . . . 3-3
  2653.       <LF> - Line Feed  . . . . . . . . . . . . . . . . . 3-3
  2654.       <FF> - Form Feed  . . . . . . . . . . . . . . . . . 3-3
  2655.       <CR> - Carriage Return  . . . . . . . . . . . . . . 3-3
  2656.       Unimplemented Control Codes . . . . . . . . . . . . 3-3
  2657.     Word Cleaning . . . . . . . . . . . . . . . . . . . . 3-3
  2658.   Video Escape Sequences  . . . . . . . . . . . . . . . . 3-4
  2659.     Video ESCAPE Sequence Summary . . . . . . . . . . . . 3-4
  2660.     <ESC><A> - Cursor Up  . . . . . . . . . . . . . . . . 3-5
  2661.     <ESC><B> - Cursor Down  . . . . . . . . . . . . . . . 3-5
  2662.     <ESC><C> - Cursor Right . . . . . . . . . . . . . . . 3-5
  2663.     <ESC><D> - Cursor Left  . . . . . . . . . . . . . . . 3-5
  2664.     <ESC><H> - Home Cursor  . . . . . . . . . . . . . . . 3-6
  2665.     <ESC><Y><lin><col> - Position Cursor  . . . . . . . . 3-6
  2666.     <ESC><G> - Graphics Mode Control  . . . . . . . . . . 3-6
  2667.       <ESC><G><N> - Normal Mode . . . . . . . . . . . . . 3-6
  2668.       <ESC><G><H> - High Resolution Graphics  . . . . . . 3-6
  2669.       <ESC><G><M> - Medium Resolution Graphics  . . . . . 3-7
  2670.     <ESC><K> - Clear to End of Line . . . . . . . . . . . 3-7
  2671.     <ESC><J> - Clear to End of Page . . . . . . . . . . . 3-7
  2672.     <ESC><j> - Clear Page . . . . . . . . . . . . . . . . 3-7
  2673.     <ESC><l> - Set Normal Character Width . . . . . . . . 3-7
  2674.     <ESC><m> - Set Wide Character Width . . . . . . . . . 3-7
  2675. Terminal Level Processing . . . . . . . . . . . . . . . . 4-1
  2676.   Introduction  . . . . . . . . . . . . . . . . . . . . . 4-1
  2677.   Terminal Escape Processing  . . . . . . . . . . . . . . 4-1
  2678.     <ESC><I> - Interrogate Remote . . . . . . . . . . . . 4-1
  2679.     Video Enable and Disable  . . . . . . . . . . . . . . 4-2
  2680.     Keyboard Lock and Unlock  . . . . . . . . . . . . . . 4-2
  2681.     <ESC><ESC> - Hardware Specific Escape . . . . . . . . 4-2
  2682.       Capture Buffer Control  . . . . . . . . . . . . . . 4-2
  2683.       <W><lin1><col1><lin2><col2> - Window Control  . . . 4-3
  2684.   Flow Control  . . . . . . . . . . . . . . . . . . . . . 4-3
  2685.   Printer . . . . . . . . . . . . . . . . . . . . . . . . 4-4
  2686.  
  2687.  
  2688.  
  2689. Simple Meta Key Functions . . . . . . . . . . . . . . . . 5-1
  2690.   Copying Data to the Printer . . . . . . . . . . . . . . 5-1
  2691.   Screen Print  . . . . . . . . . . . . . . . . . . . . . 5-1
  2692.   The Help Page . . . . . . . . . . . . . . . . . . . . . 5-1
  2693.   Menu Page . . . . . . . . . . . . . . . . . . . . . . . 5-2
  2694.   Local Video Control . . . . . . . . . . . . . . . . . . 5-2
  2695.     Screen Clearing . . . . . . . . . . . . . . . . . . . 5-2
  2696.     Word Cleaning Control . . . . . . . . . . . . . . . . 5-2
  2697.     Wide Character Mode Control . . . . . . . . . . . . . 5-2
  2698.     Text Window Control . . . . . . . . . . . . . . . . . 5-3
  2699.   VIDTEX 4.0 Disk versus Tape . . . . . . . . . . . . . . 5-3
  2700.   Input to Disk Operations  . . . . . . . . . . . . . . . 5-4
  2701.   Function Keys . . . . . . . . . . . . . . . . . . . . . 5-4
  2702.     Executing A Function Key  . . . . . . . . . . . . . . 5-4
  2703.     The Function Key Menu . . . . . . . . . . . . . . . . 5-4
  2704.     Defining A Function Key . . . . . . . . . . . . . . . 5-5
  2705.     Displaying The Function Keys  . . . . . . . . . . . . 5-5
  2706.     Function Key Disk Operations  . . . . . . . . . . . . 5-5
  2707.       Saving The Function Keys  . . . . . . . . . . . . . 5-6
  2708.       Loading The Function Keys . . . . . . . . . . . . . 5-6
  2709.   Aborting a Meta Function  . . . . . . . . . . . . . . . 5-6
  2710.   Exiting VIDTEX  . . . . . . . . . . . . . . . . . . . . 5-6
  2711. The RAM Buffer  . . . . . . . . . . . . . . . . . . . . . 6-1
  2712.   Data Capture  . . . . . . . . . . . . . . . . . . . . . 6-1
  2713.   Saving the Screen . . . . . . . . . . . . . . . . . . . 6-1
  2714.   Viewing the RAM Buffer  . . . . . . . . . . . . . . . . 6-2
  2715.   Transmitting the RAM Buffer . . . . . . . . . . . . . . 6-2
  2716.   Saving the RAM Buffer to Disk . . . . . . . . . . . . . 6-2
  2717.   Loading the RAM Buffer from Disk  . . . . . . . . . . . 6-3
  2718. Autolog . . . . . . . . . . . . . . . . . . . . . . . . . 7-1
  2719.   Creating a New Autolog File . . . . . . . . . . . . . . 7-1
  2720.   Executing An Autolog  . . . . . . . . . . . . . . . . . 7-2
  2721.   Additional Autolog Features . . . . . . . . . . . . . . 7-2
  2722.   Autolog File Chaining . . . . . . . . . . . . . . . . . 7-3
  2723.   Autolog Examples  . . . . . . . . . . . . . . . . . . . 7-3
  2724.   Autolog Auto Start Upon Execution . . . . . . . . . . . 7-5
  2725.   Modifying Communication Characteristics . . . . . . . . 7-6
  2726. B Protocol:  Primitives . . . . . . . . . . . . . . . . . 8-1
  2727.   Purpose . . . . . . . . . . . . . . . . . . . . . . . . 8-1
  2728.   General Terminology . . . . . . . . . . . . . . . . . . 8-1
  2729.     Terminal Mode . . . . . . . . . . . . . . . . . . . . 8-1
  2730.     Protocol Mode . . . . . . . . . . . . . . . . . . . . 8-1
  2731.     File Transfer Mode  . . . . . . . . . . . . . . . . . 8-1
  2732.     Host  . . . . . . . . . . . . . . . . . . . . . . . . 8-2
  2733.     Remote  . . . . . . . . . . . . . . . . . . . . . . . 8-2
  2734.   Flow Control  . . . . . . . . . . . . . . . . . . . . . 8-2
  2735.   Protocol Buffer Level Terminology . . . . . . . . . . . 8-2
  2736.     Protocol Block transmission . . . . . . . . . . . . . 8-2
  2737.     Block Number  . . . . . . . . . . . . . . . . . . . . 8-2
  2738.     Command Field . . . . . . . . . . . . . . . . . . . . 8-2
  2739.     Block Contents  . . . . . . . . . . . . . . . . . . . 8-3
  2740.     Transparency  . . . . . . . . . . . . . . . . . . . . 8-3
  2741.     Checksum  . . . . . . . . . . . . . . . . . . . . . . 8-3
  2742.   Host Protocol Initialization  . . . . . . . . . . . . . 8-3
  2743.   Block Transmission  . . . . . . . . . . . . . . . . . . 8-4
  2744.  
  2745.  
  2746.  
  2747.     Preparation for Transmission  . . . . . . . . . . . . 8-4
  2748.     Actual Block Transmission . . . . . . . . . . . . . . 8-4
  2749.       Components of a Block . . . . . . . . . . . . . . . 8-5
  2750.       User Assurance  . . . . . . . . . . . . . . . . . . 8-5
  2751.       Maximum Block Length  . . . . . . . . . . . . . . . 8-5
  2752.     Error Detection and Retransmission  . . . . . . . . . 8-5
  2753.       Unidentified Protocol Block . . . . . . . . . . . . 8-6
  2754.       <NAK> Negative Acknowledge  . . . . . . . . . . . . 8-6
  2755.       Failure Acknowledge . . . . . . . . . . . . . . . . 8-6
  2756.       Time Outs . . . . . . . . . . . . . . . . . . . . . 8-7
  2757.     Positive Acknowledgement  . . . . . . . . . . . . . . 8-7
  2758.       <ENQ> Enquire . . . . . . . . . . . . . . . . . . . 8-8
  2759.       <DLE><blknum+48> Positive Acknowledge . . . . . . . 8-8
  2760.       <DLE><;>  Wait Acknowledge  . . . . . . . . . . . . 8-9
  2761.   Exiting Protocol Mode . . . . . . . . . . . . . . . . . 8-9
  2762. B Protocol:  Function Processing  . . . . . . . . . . . . 9-1
  2763.   <B><lsb><msb> Binary Load . . . . . . . . . . . . . . . 9-1
  2764.   <G><lsb><msb> Execute Memory  . . . . . . . . . . . . . 9-1
  2765. B Protocol:  File Transfer Mode  . . . . . . . . . . . . 10-1
  2766.   Introduction . . . . . . . . . . . . . . . . . . . . . 10-1
  2767.   File Transfer Types  . . . . . . . . . . . . . . . . . 10-1
  2768.     ASCII Transfers  . . . . . . . . . . . . . . . . . . 10-1
  2769.     Binary File Transfer . . . . . . . . . . . . . . . . 10-2
  2770.     Image File Transfers . . . . . . . . . . . . . . . . 10-2
  2771.   Initiating a Transfer  . . . . . . . . . . . . . . . . 10-2
  2772.     <T><D>  Download . . . . . . . . . . . . . . . . . . 10-3
  2773.     <T><U>  Upload . . . . . . . . . . . . . . . . . . . 10-3
  2774.   <N>  Transferring data . . . . . . . . . . . . . . . . 10-3
  2775.   <T><C>  Completing a Transfer  . . . . . . . . . . . . 10-4
  2776.   Aborting a Transfer  . . . . . . . . . . . . . . . . . 10-4
  2777.   <T><E>  Erase a Remote File  . . . . . . . . . . . . . 10-4
  2778.   <T><R>  Rename . . . . . . . . . . . . . . . . . . . . 10-4
  2779. Currently Defined Option Codes  . . . . . . . . . . . . . A-1
  2780. The American Standard Code for Information Interchange  . B-1
  2781. Control Character Definitions . . . . . . . . . . . . . . C-1
  2782. Escape Sequence Summary . . . . . . . . . . . . . . . . . D-1
  2783. B Protocol Summary  . . . . . . . . . . . . . . . . . . . E-1
  2784.