GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:rfc452

Network Working Group J. Winett Request for Comments: 452 JMW NIC: 14136 8 February 1973

                     TELNET Command at Host LL
 The attached writeup documents the use of the TELNET command at Host
 LL for uses under the CP/CMS time-sharing system.  This command
 provides for use in a HALF DUPLEX or FULL DUPLEX mode and can be used
 with ASCII codes or with EBCDIC codes (i.e., transparent mode).  The
 keyboard conventions allow for entering all ASCII codes using a
 CONTROL character followed by another character for the codes not
 present on an IBM 2741 terminal.  In addition a number of local
 TELNET control commands have been defined which allows the mode of
 operation to be changed, the redefinition of special characters, the
 sending of TELNET control codes, as well as for obtaining input from
 a file instead of from the terminal.  These later features provide
 for a rudimentary file transfer facility.
 This material has not been reviewed for public release and is
 intended only for use with the ARPA network.  It should not be quoted
 or cited in any publication not related to the ARPA network.
 TELNET
 Purpose:
    To access another terminal oriented system on the ARPA network.
 Format:
    TELNET host <tag> RESUME     EBCDIC      HALFDUP
                  1    OPEN       ASCII      FULLDUP
    host - either the hexadecimal code for a foreign network service
            site or a standard mnemonic for a foreign site.  See
            Figure 1.
    tag - the identifier for the local connections to the network.
            The tag is used together with the address of the virtual
            machine descriptor table (UTABLE) to form local socket
            numbers which are used in the network protocol.
    RESUME - used to reactivate communications with a foreign site
            after having previously left the TELNET command leaving
            the connections open.

Winett [Page 1] RFC 452 TELNET Command at Host LL February 1973

    EBCDIC - to communicate with EBCDIC codes.  The default is network
            ASCII.
    HALFDUP - to operate under a half duplex protocol, i.e. with a
            locked keyboard.
            The EBCDIC HALFDUP the protocol assumes that the TELNET
            break code (circle C) will be received to indicate when
            the keyboard should be locked for input.
            In ASCII HALFDUP the keyboard will lock after a line of
            input and will unlock after one or more lines have been
            received for output.  An external interrupt will also
            unlock a locked keyboard.
            The default is full duplex where the keyboard is always
            unlocked for input.  A null line is required to
            temporarily lock the keyboard in order to receive output.
 Usage:
    A number of hosts on the ARPA network provide TELNET service.  A
    Network Virtual Terminal (NVT) has been specified so that using
    sites can write one TELNET program which maps a local terminal
    into the NVT to access any serving site on the network.  Once
    communication has been established between a using site and a
    serving site, keyed input is sent to the serving system and output
    from the serving site, when received, is typed on the local
    terminal.
    The NVT protocol requires that the keyboard be capable of entering
    all of the 128 ASCII codes together with a number of the TELNET
    control codes.  To support an NVT with an IBM 2741 terminal, it is
    necessary to adapt a control convention for entering codes which
    are not associated with single keys on the keyboard.  In addition,
    since CP/CMS processes input from a 2741 on a line at a time
    terminated with a newline, a means must be establish for entering
    a sequence of characters for transmission which is not terminated
    with a newline code.
    When TELNET is initiated the message
                         ENTER CONTROL CHARACTER
    is typed.  A non-blank character should then be entered which
    defines the character which, in combination with another
    character, will be used to enter codes not associated with single

Winett [Page 2] RFC 452 TELNET Command at Host LL February 1973

    keys.  The control character is also used for other special
    control functions as described below.
 Codes:
    The NVT usually requires that characters be transmitted in an
    eight bit ASCII code.  Since the TELNET command is written to
    process EBCDIC codes ASCII codes received are translated into
    ASCII before being sent to a serving site.  Figure 2 gives the
    complete definition of EBCDIC indicating the EBCDIC controls and
    EBCDIC graphics.  Figure 3 gives the codes for the ASCII controls
    and graphics.  The complete mapping between 8-bit EBCDIC codes and
    8-bit network ASCII codes is shown in Figure 4.  The EBCDIC
    newline code (NL) is mapped into the ASCII codes for the pair of
    characters CR-IF.
    The following ASCII/EBCDIC mapping is used for the non-EBCDIC
    graphics:
                      ASCII   EBCDIC
                 TILDE (7E) = (A1) NOT
                   BAR (7C) = (6A) OR
            BACK SLASH (5C) = (EO)
                 CARAT (5E) = (71)
                 GRAVE (6O) = (79)
            LEFT BRACE (7B) = (8B)
           RIGHT BRACE (7D) = (9B)
          LEFT BRACKET (5B) = (AD)
         RIGHT BRACKET (5D) = (BD)
    The ASCII control DC3 (X' 13') maps to the EBCDIC control TM
    (X'13').  The ASCII control NUL (X' oo') is sent to the terminal
    as the EBCDIC code for NULL (X' oo') and is not mapped into an
    IDLE (X'17').
    The TELNET control hide-your-input is mapped into the EBCDIC code
    for bypass (print suppress) and the TELNET control noecho is
    mapped into the EBCDIC code for restore (print restore).  If the
    TELNET control for echo is received, a message is printed and it
    is mapped into an IDLE.  Similarly, if the TELNET control for
    break is received, a message is printed and it is mapped into an
    IDLE unless operation is in EBCDIC HALFDUP mode in which case the
    break is used to indicate that any received characters should be
    printed and the keyboard unlocked for input.  If a data mark or an
    interrupt is received, no action is taken except to print a
    message to notify the user of this occurrence.

Winett [Page 3] RFC 452 TELNET Command at Host LL February 1973

 Input:
    When the control character is entered, the following character is
    mapped into a different code than that which it is normally mapped
    into, except when the following character is a space or a
    character not defined to have a meaning when preceded by the
    control character.  Figure 5 gives the mapping of the characters
    on a 2741 keyboard when preceded by a control character.  The
    following 2741 keyboard characters do not have a different meaning
    when preceded by the control character.
    $ # * % &
    + - = _
    . , : ;
    ! | ? (cent sign)
    SPACE
    BACKSPACE
    TAB
    When a character is mapped into its control code, the control
    character is mapped into the code for IDLE.  If the control
    character is entered as the last character before the newline key
    is entered, the sequence of characters entered is transmitted
    without the newline code.  That is, the newline code is not
    transmitted when it is preceded by the control character.
    When the 2741 keyboard is unlocked for input, characters received
    cannot be typed until the keyboard is locked again.  After a line
    is entered, received characters can then be typed.  When operating
    in full duplex or ASCII half duplex, a null line entered will
    allow received characters to be typed but will not cause the new
    line code to be transmitted.  To cause a null line, i.e., just the
    new line code to be transmitted, the control character should be
    entered as the only character in the input line.  In EBCDIC
    HALFDUP a null line entered will cause a null line to be
    transmitted.
 Output:
    ASCII output received from the NVT is converted into EBCDIC with
    the sequences CR-LF converted into IDLE-NL.  The EBCDIC characters
    are then sent to the terminal.  Note that not all 128 ASCII codes
    when converted to EBCDIC will print on a 2741.  Of the 95 ASCII
    graphics and the 8 ASCII controls which are defined for the NVT
    printer, the following are not visible or audible:

Winett [Page 4] RFC 452 TELNET Command at Host LL February 1973

          CARAT
          GRAVE
          BACK SLASH
          LEFT BRACE
          RIGHT BRACE
          LEFT BRACKET
          RIGHT BRACKET
          ASCII CONTROL BELL (BEL)
          ASCII CONTROL VERTICAL TAB (HT)
          ASCII CONTROL FORM FEED (FF)
          ASCII CONTROL CARRIAGE RETURN (CR)
    Figure 6 shows how the EBCDIC codes from X' 40' through X' FF'
    will appear on a 2741 terminal.  Figure 7 shows how the EBCDIC
    codes will appear when printed with a PN train on the offline
    printer and Figure 8 shows how these codes appear when printed
    with a TN train.
 Controls:
    If the first character in an input line is the control character
    and the next character is a space, the rest of the line is
    interpreted as a TELNET control command.  A control command
    consists of a control word and parameters separated by spaces.
    Controls are defined which permit TELNET controls to be
    transmitted to the serving site, allow input to come from a file
    or output to go to a file, allow CMS functions or transient
    commands to be issued, redefine the control character or TELNET
    mode, close connections or leave the TELNET command with
    connections still open, as well as controls to support a reader,
    punch, and printer with RJS operation.  The controls are described
    below.
 CONTROL x
    Where x is the new control character
 CLOSE
    To close all connections and quit
 QUIT
    To leave TELNET
 EBCDIC
    To go into transparent mode, i.e., no translation

Winett [Page 5] RFC 452 TELNET Command at Host LL February 1973

 ASCII
    To translate input and output to network ASCII
 Break
    To send the TELNET break code
 SYNC
    To send the TELNET data mark code and an interrupt
 AATN
    To send a TELNET break and a SYNC
 HIDE-YOUR-INPUT
    To send the TELNET hide you input code
 NOECHO
    To send the TELNET noecho code
 ECHO
    To send the TELNET echo code
 CMS command arg1...argN
    To issue CMS core resident function or transient command.
 INPUT fn ft
       *  TERMIN
       *  *
    To get input from a file If fn is defaulted, input is reset to
    come from the terminal.  If fn is * file input resumes after the
    last line read.  After an EOF, the next line read will be the
    first line of the file.
    An external interrupt while input is coming from a file will cause
    the line number of the next line to be read from the file to be
    typed and input to be reset to come from the terminal.

Winett [Page 6] RFC 452 TELNET Command at Host LL February 1973

 OUTPUT fn OFF TERM    INPUT    INOUT
        *  ON  NOTERM  NOINPUT  OUTPUT
    To write output to the file "fn TERMOUT".  If fn is defaulted,
    output is reset to go to the terminal.  If fn is *, file OUTPUT is
    resumed with the same options as were last used.
 For Output to the Terminal:
    If the last character is a CR, a line with just the control
    character is typed on the next line (with a NL)
    If the last character is not a NL or a CR, the line is typed
    without a NL (i.e., with TYPE).
 For Output to a File:
    If just a NL is in the line, just the control character is sent to
    the file.
    If the last CHAR is not NL or CR, the control character is added
    after the last character, except if 130 characters must be sent to
    the file.
    If the last CHAR is a CR, it is included in the file.
    OFF causes all output to be discarded.
    ON is the default, and causes output to the terminal.
    TERM causes output to also go to the terminal.
    NOTERM is the default, and causes output to go the file but not to
    the terminal.
    OUTPUT is the default and causes just terminal output to be put to
    the file "FN termout".
    INPUT causes both terminal input but not output to be put to the
    output file.
    NOINPUT is defaulted and causes input to not go to the file.
 PURGE
    To purge all output currently received by the NCP.
    *****NOT YET IMPLEMENTED*****

Winett [Page 7] RFC 452 TELNET Command at Host LL February 1973

 READER fn ft
        * READER
    To send a job to the RJS system at UCLA's CCN.
    If fn and ft are defaulted, input will come from the card reader.
 PRINTER fn ft
         *  PRINTER
 To receive printer output from the RJS system at UCLA's CCN.
 To receive punch output from the RJS system at UCLA's CCN.
 If fn and ft are defaulted, output goes to the printer.
 PUNCH fn ft
       *  PUNCH
    If fn and ft are defaulted, output goes to the punch.
 HOST      SITE      MACHINE   SYSTEM      HOST NUMBER
                                         DEC   OCT   HEX
 NMC       UCLA      SIGNA-7   SEX         1     1    01
 ARC       SRI       PDP-10    NIC         2     2    02
 UCSB      UCSB      360/75    OS/MVT      3     3    03
 UTAH      UTAH      PDP-10    TENEX       4     4    04
 MULTICS   MIT       H-645     MULTICS     6     6    06
 SDC       SDC       370/155   ADEPT       8    10    08
 HARV      HARVARD   PDP-10    4S72        9    11    09
 LL        LL        360/67    CP/CMS     10    12    0A
 CASE      CASE      PDP-10    10/50      13    15    0D
 CMU       CMU       PDP-10    TOPS-10    14    16    0E
 ILLIAC    AMES      360/67    TTS/360    16    18    10
 AMES      AMES      B-6500    ?          15    17    0F
 CCN       UCLA      360/91    OS/MVT     65   101    41
 SRI       SRI-AI    PDP-10    TENEX      66   102    42
 BBNA      BBN       PDP-10    TENEX      69   105    45
 DMCG      MIT       PDP-10    ITS        70   106    46
 RAND      RAND-RCC  PDP-10    TENEX      71   107    47
 TX2       LL        TX-2      APEX       74   112    4A
 BBNB      BBN       PDP-10    TENEX     133   205    85
 MIATI     MIT       PDP-10    ITS       134   206    86
                   Serving Hosts on the APRA Network
                               Figure 1

Winett [Page 8] RFC 452 TELNET Command at Host LL February 1973

                     [[See Figure 2 in PDF file.]]
        Extended Binary-Coded Decimal Interchange Code (EBCDIC)
                               FIGURE 2
 and
                     [[See Figure 3 in PDF file.]]
        USA Standard Code for Information Interchange (USASCII)
                               FIGURE 3
 ASCII    ASCII    ASCII    SYMBOLS    EBCDIC    EBCDIC
 DEC      OCT      HEX                 HEX       DEC
   0        0      (00)      NUL       (00)      00
   1        1      (01)      SOH       (01)      01
   2        2      (02)      STX       (02)      02
   3        3      (03)      ETX       (03)      03
   4        4      (04)      EOT       (37)      55
   5        5      (05)      ENQ       (2D)      45
   6        6      (06)      ACK       (2E)      46
   7        7      (07)      BEL       (2F)      47
   8       10      (08)      BS        (16)      22
   9       11      (09)      HT        (05)      05
  10       12      (0A)      LF        (25)      37
  11       13      (0B)      VT        (0B)      11
  12       14      (0C)      FF        (0C)      12
  13       15      (0D)      CR        (0D)      13
  14       16      (0E)      SO        (0E)      14
  15       17      (0F)      SI        (0F)      15
  16       20      (10)      DLE       (10)      16
  17       21      (11)      DC1       (11)      17
  18       22      (12)      DC2       (12)      18
  19       23      (13)      DC3       (13)      19
  20       24      (14)      DC4       (3C)      60
  21       25      (15)      NAK       (3D)      61
  22       26      (16)      SYN       (32)      50
  23       27      (17)      ETB       (26)      38
  24       30      (18)      CAN       (18)      24
  25       31      (19)      EM        (19)      25
  26       32      (1A)      SUB       (3F)      63
  27       33      (1B)      CTL       (27)      39
  28       34      (1C)      FS        (1C)      28
  29       35      (1D)      GS        (1D)      29
  30       36      (1E)      RS        (1E)      30
  31       37      (1F)      US        (1F)      31
  32       40      (20)      SP        (40)      64
  33       41      (21)      !         (5A)      90

Winett [Page 9] RFC 452 TELNET Command at Host LL February 1973

  34       42      (22)      "         (7F)     127
  35       43      (23)      #         (7B)     123
  36       44      (24)      $         (5B)      91
  37       45      (25)      %         (6C)     108
  38       46      (26)      &         (50)      80
  39       47      (27)      '        (7D)     124
  40       50      (28)      (         (4D)      77
  41       51      (29)      )         (5D)      93
  42       52      (2A)      *         (5C)      92
  43       53      (2B)      +         (4E)      78
  44       54      (2C)      ,         (6D)     109
  45       55      (2D)      -         (60)      96
  46       56      (2E)      .         (4B)      75
  47       57      (2F)      /         (61)      97
  48       60      (30)      0         (F0)     240
  49       61      (31)      1         (F1)     241
  50       62      (32)      2         (F2)     242
  51       63      (33)      3         (F3)     243
  52       64      (34)      4         (F4)     244
  53       65      (35)      5         (F5)     245
  54       66      (36)      6         (F6)     246
  55       67      (37)      7         (F7)     247
  56       70      (38)      8         (F8)     248
  57       71      (39)      9         (F9)     249
  58       72      (3A)      :         (7A)     122
  59       73      (3B)      ;         (5E)      94
  60       74      (3C)      <         (4C)      76
  61       75      (3D)      =         (7E)     126
  62       76      (3E)      >         (6E)     110
  63       77      (3F)      ?         (6F)     111
  64      100      (40)      @         (7C)     124
  65      101      (41)      A         (C1)     193
  66      102      (42)      B         (C2)     194
  67      103      (43)      C         (C3)     195
  68      104      (44)      D         (C4)     196
  69      105      (45)      E         (C5)     197
  70      106      (46)      F         (C6)     198
  71      107      (47)      G         (C7)     199
  72      110      (48)      H         (C8)     200
  73      111      (49)      I         (C9)     201
  74      112      (4A)      J         (D1)     209
  75      113      (4B)      K         (D2)     210
  76      114      (4C)      L         (D3)     211
  77      115      (4D)      M         (D4)     212
  78      116      (4E)      N         (D5)     213
  79      117      (4F)      O         (D6)     214
  80      120      (50)      P         (D7)     215
  81      121      (51)      Q         (D8)     216

Winett [Page 10] RFC 452 TELNET Command at Host LL February 1973

  82      122      (52)      R         (D9)     217
  83      123      (53)      S         (E2)     226
  84      124      (54)      T         (E3)     227
  85      125      (55)      U         (E4)     228
  86      126      (56)      V         (E5)     229
  87      127      (57)      W         (E6)     230
  88      130      (58)      8         (E7)     231
  89      131      (59)      Y         (E8)     232
  90      132      (5A)      Z         (E9)     233
  91      133      (5B)      [         (AD)     173
  92      134      (5C) (cent sign)    (4A)      74  (BACK-SLASH)
  93      135      (5D)      ]         (BD)     189
  94      136      (5E)                (71)     113  (CARAT)
  95      137      (5F)      _         (6D)     109
  96      140      (60)                (79)     121  (GRAVE)
  97      141      (61)      a         (81)     129
  98      142      (62)      b         (82)     130
  99      143      (63)      c         (83)     131
 100      144      (64)      d         (84)     132
 101      145      (65)      e         (85)     133
 102      146      (66)      f         (86)     134
 103      147      (67)      g         (87)     135
 104      150      (68)      h         (88)     136
 105      151      (69)      i         (89)     137
 106      152      (6A)      j         (91)     145
 107      153      (6B)      k         (92)     146
 108      154      (6C)      l         (93)     147
 109      155      (6D)      m         (94)     148
 110      156      (6E)      n         (95)     149
 111      157      (6F)      o         (96)     150
 112      160      (70)      p         (97)     151
 113      161      (71)      q         (98)     152
 114      162      (72)      r         (99)     153
 115      163      (73)      s         (A2)     162
 116      164      (74)      t         (A3)     163
 117      165      (75)      u         (A4)     164
 118      166      (76)      v         (A5)     165
 119      167      (77)      w         (A6)     166
 120      170      (78)      x         (A7)     167
 121      171      (79)      y         (A8)     168
 122      172      (7A)      z         (A9)     169
 123      173      (7B)      {         (8B)     139
 124      174      (7C)      |         (4F)      79  (BAR/OR)
 125      175      (7D)      }         (9B)     155
 126      176      (7E) (broken bar)   (5F)      95  (TILDE/NOT)
 127      177      (7F)      DEL       (07)       7

Winett [Page 11] RFC 452 TELNET Command at Host LL February 1973

 ASCII   ASCII   ASCII    TELNET         EBCDIC     EBCDIC
 DEC     OCT     HEX     CONTROLS        HEX        DEC
 128     100     (80)   DATA-MARK        (80)       128
 129     101     (81)   BREAK            (38)        56
 130     102     (82)   NOP              (17)        23  IDLE
 131     103     (83)   NOECHO           (14)        20  RESTORE
 132     104     (84)   ECHO             (23)        35
 133     105     (85)   HIDE-YOUR INPUT  (24)        36  BYPASS
                      ASCII/EBCDIC Code Mappings
                               FIGURE 4
 EBCDIC                  EBCDIC ASCII
 CENT    (4A) = ESC             (27)   (1B)
 CTL <   (4C) = LEFT BRACKET    (AD)   (5B)
 CTL >   (6E) = RIGHT BRACKET   (BD)   (5D)
 CTL (   (4D) = LEFT BRACE      (8B)   (7B)
 CTL )   (5D) = RIGHT BRACE     (9B)   (7D)
 CTL /   (61) = BACK SLASH      (4A)   (5C)
 CTL "   (7F) = CARAT           (71)   (5E)
 CTL '  (7D) = GRAVE            (79)   (60)
 CTL 6   (F6) = FS              (1C)   (1C)
 CTL 7   (F7) = GS              (1D)   (1D)
 CTL 8   (F8) = RS              (1E)   (1E)
 CTL 9   (F9) = US              (1F)   (1F)
 CTL _   (6D) = US              (1F)   (1F)
 CTL (broken bar) (5F) = DEL             (07)   (7F)
 CTL @   (7C) = NUL             (00)   (00)
 CTL A   (C1) = SOH             (01)   (01)
 CTL B   (C2) = STX             (02)   (02)
 CTL C   (C3) = ETX             (03)   (03)
 CTL D   (C4) = EOT             (37)   (04)
 CTL E   (C5) = ENQ             (2D)   (05)
 CTL F   (C6) = ACK             (2E)   (06)
 CTL G   (C7) = BEL             (2F)   (07)
 CTL H   (C8) = BS              (16)   (08)
 CTL I   (C9) = HT              (05)   (09)
 CTL J   (D1) = LF              (25)   (0A)
 CTL K   (D2) = VT              (0B)   (0B)
 CTL L   (D3) = FF              (0C)   (0C)
 CTL M   (D4) = CR              (0D)   (0D)

Winett [Page 12] RFC 452 TELNET Command at Host LL February 1973

 CTL N   (D5) = SO              (0E)   (0E)
 CTL O   (D6) = SI              (0F)   (0F)
 CTL P   (D7) = DLE             (10)   (10)
 CTL Q   (D8) = DC1             (11)   (11)
 CTL R   (D9) = DC2             (12)   (12)
 CTL S   (E2) = DC3             (13)   (13)
 CTL T   (E3) = DC4             (3C)   (14)
 CTL U   (E4) = NAK             (3D)   (15)
 CTL V   (E5) = SYN             (32)   (16)
 CTL W   (E6) = ETB             (26)   (17)
 CTL X   (E7) = CAN             (18)   (18)
 CTL Y   (E8) = EM              (19)   (19)
 CTL Z   (E9) = SUB             (3F)   (1A)
      EBCDIC                   EBCDIC ASCII
 CTL 1 (F1) = BREAK          (38)  (81) - CIRCLE C
 CTL 2 (F2) = NOP            (17)  (82) - IDLE
 CTL 3 (F3) = NO ECHO        (14)  (83) - RESTORE
 CTL 4 (F4) = ECHO           (23)  (84)
 CTL 5 (F5) = HIDE YOU INPUT (24)  (85) - BYPASS
 DATA MARK (80) CANNOT BE ENTERED FROM THE KEYBOARD
 THE FOLLOWING 2741 KEYBOARD CHARACTERS DO NOT
 HAVE A MEANING AS A CONTROL:
       $ # * % &
       + - = _
       . , :
       ! | ? (cent sign)
       SPACE
       BACKSPACE
       TAB
                  Keyboard Control Character Mappings
                         FIGURE 5 (CONTINUED)

Winett [Page 13] RFC 452 TELNET Command at Host LL February 1973

 [[See Figure in PDF file.]]
 Hex Code X'xy' for Characters on a 2741 Terminal
 [[See Figure in PDF file.]]
 Decimal Code D 'xxy" for Characters on a 2741 terminal
 HT  X'05' = D'005' Horizontal Tab
 LC  X'06' = D'006' Lower Case
 RES X'14' = D'020' Print Restore
 NL  X'15' = D'021' New Line
 BS  X'16' = D'022' Back Space
 IL  X'17' = D'023' Idle
 BYP X'24' = D'036' Print Bypass
 LF  X'25' = D'037' Line Feed
 UC  X'36' = D'054' Upper Case
 Hex Code X'xy' and Decimal Code D'xxy' for 2741 Control Codes
 [[See Figure in PDF file.]]
 Hex Code X'xy' for Characters on the PN train
 [[See Figure in PDF file.]]
 Decimal Code D'xxy' for characters on the PN train
 [[See Figure in PDF file.]]
 Hex Code X'xy' for Characters on th TN train
 [[See Figure in PDF file.]]
 Decimal Code D'xxy' for Characters on the TN train
        [This RFC was put into machine readable form for entry]
   [into the online RFC archives by Helene Morin, Via Genie,12/1999]

Winett [Page 14]

/data/webs/external/dokuwiki/data/pages/rfc/rfc452.txt · Last modified: 2008/07/18 00:24 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki