view etc/emacskeys.sco @ 4690:257b468bf2ca

Move the #'query-coding-region implementation to C. This is necessary because there is no reasonable way to access the corresponding mswindows-multibyte functionality from Lisp, and we need such functionality if we're going to have a reliable and portable #'query-coding-region implementation. However, this change doesn't yet provide #'query-coding-region for the mswindow-multibyte coding systems, there should be no functional differences between an XEmacs with this change and one without it. src/ChangeLog addition: 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> Move the #'query-coding-region implementation to C. This is necessary because there is no reasonable way to access the corresponding mswindows-multibyte functionality from Lisp, and we need such functionality if we're going to have a reliable and portable #'query-coding-region implementation. However, this change doesn't yet provide #'query-coding-region for the mswindow-multibyte coding systems, there should be no functional differences between an XEmacs with this change and one without it. * mule-coding.c (struct fixed_width_coding_system): Add a new coding system type, fixed_width, and implement it. It uses the CCL infrastructure but has a much simpler creation API, and its own query_method, formerly in lisp/mule/mule-coding.el. * unicode.c: Move the Unicode query method implementation here from unicode.el. * lisp.h: Declare Fmake_coding_system_internal, Fcopy_range_table here. * intl-win32.c (complex_vars_of_intl_win32): Use Fmake_coding_system_internal, not Fmake_coding_system. * general-slots.h: Add Qsucceeded, Qunencodable, Qinvalid_sequence here. * file-coding.h (enum coding_system_variant): Add fixed_width_coding_system here. (struct coding_system_methods): Add query_method and query_lstream_method to the coding system methods. Provide flags for the query methods. Declare the default query method; initialise it correctly in INITIALIZE_CODING_SYSTEM_TYPE. * file-coding.c (default_query_method): New function, the default query method for coding systems that do not set it. Moved from coding.el. (make_coding_system_1): Accept new elements in PROPS in #'make-coding-system; aliases, a list of aliases; safe-chars and safe-charsets (these were previously accepted but not saved); and category. (Fmake_coding_system_internal): New function, what used to be #'make-coding-system--on Mule builds, we've now moved some of the functionality of this to Lisp. (Fcoding_system_canonical_name_p): Move this earlier in the file, since it's now called from within make_coding_system_1. (Fquery_coding_region): Move the implementation of this here, from coding.el. (complex_vars_of_file_coding): Call Fmake_coding_system_internal, not Fmake_coding_system; specify safe-charsets properties when we're a mule build. * extents.h (mouse_highlight_priority, Fset_extent_priority, Fset_extent_face, Fmap_extents): Make these available to other C files. lisp/ChangeLog addition: 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> Move the #'query-coding-region implementation to C. * coding.el: Consolidate code that depends on the presence or absence of Mule at the end of this file. (default-query-coding-region, query-coding-region): Move these functions to C. (default-query-coding-region-safe-charset-skip-chars-map): Remove this variable, the corresponding C variable is Vdefault_query_coding_region_chartab_cache in file-coding.c. (query-coding-string): Update docstring to reflect actual multiple values, be more careful about not modifying a range table that we're currently mapping over. (encode-coding-char): Make the implementation of this simpler. (featurep 'mule): Autoload #'make-coding-system from mule/make-coding-system.el if we're a mule build; provide an appropriate compiler macro. Do various non-mule compatibility things if we're not a mule build. * update-elc.el (additional-dump-dependencies): Add mule/make-coding-system as a dump time dependency if we're a mule build. * unicode.el (ccl-encode-to-ucs-2): (decode-char): (encode-char): Move these earlier in the file, for the sake of some byte compile warnings. (unicode-query-coding-region): Move this to unicode.c * mule/make-coding-system.el: New file, not dumped. Contains the functionality to rework the arguments necessary for fixed-width coding systems, and contains the implementation of #'make-coding-system, which now calls #'make-coding-system-internal. * mule/vietnamese.el (viscii): * mule/latin.el (iso-8859-2): (windows-1250): (iso-8859-3): (iso-8859-4): (iso-8859-14): (iso-8859-15): (iso-8859-16): (iso-8859-9): (macintosh): (windows-1252): * mule/hebrew.el (iso-8859-8): * mule/greek.el (iso-8859-7): (windows-1253): * mule/cyrillic.el (iso-8859-5): (koi8-r): (koi8-u): (windows-1251): (alternativnyj): (koi8-ru): (koi8-t): (koi8-c): (koi8-o): * mule/arabic.el (iso-8859-6): (windows-1256): Move all these coding systems to being of type fixed-width, not of type CCL. This allows the distinct query-coding-region for them to be in C, something which will eventually allow us to implement query-coding-region for the mswindows-multibyte coding systems. * mule/general-late.el (posix-charset-to-coding-system-hash): Document why we're pre-emptively persuading the byte compiler that the ELC for this file needs to be written using escape-quoted. Call #'set-unicode-query-skip-chars-args, now the Unicode query-coding-region implementation is in C. * mule/thai-xtis.el (tis-620): Don't bother checking whether we're XEmacs or not here. * mule/mule-coding.el: Move the eight bit fixed-width functionality from this file to make-coding-system.el. tests/ChangeLog addition: 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Check a coding system's type, not an 8-bit-fixed property, for whether that coding system should be treated as a fixed-width coding system. * automated/query-coding-tests.el: Don't test the query coding functionality for mswindows-multibyte coding systems, it's not yet implemented.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 19 Sep 2009 22:53:13 +0100
parents 376386a54a3c
children
line wrap: on
line source

#
# SCO(tm) keyboard mapping file with Emacs meta-keys
# Automatically generated using the emap utility
#
# Below is the uuencoded source for the emap utility. This program
# will, when run on an SCO console, take the current keyboard
# map and set the 'meta' bit for all keys. To make this usable
# under Emacs, edit your termcap and terminfo entries for the
# sco console (the ansi entries) and add the 'km' capability.
# Usage:
# emap [-o] [-f filename]
# If you run the utility with no flags, it will simply modify the
# current keyboard map in kernel memory for the multiscreen on
# which it was invoked. Specifying -f and a filename will cause
# a file suitable for input to the mapkey(M) utility to be generated.
# Specifying -o will produce, on stdout, a file suitable for input
# to the mapkey(M) utility but will NOT modify the in-memory
# map.
# I personally run this utility once, and replace /usr/lib/keyboard/keys
# with the result. You may prefer to run it in your .profile or
# via a shell-script which will in turn invoke emacs.
#
# begin 600 emap.c.gz
# M'XL("'F'RC " V5M87 N8P"=5VUOXC@0_LZOF$W50KIT%^AM[U2V>Z*HW%9+
# MH2JL=*<6H6"<$A&27&RZ1;?][S=C.X&$%'H7(>S8\\R;QS.3 R]@_G+*X;.0
# M4R_\,/M2.DB7EH&'J]DUL1(?Y2KB8GMYSE>3T(D5H,2?)8\#8#,GAN,PDD[\
# MV$P6O4 "+GG!M$HCCV,UXJ]9*FF$(UC@++BX'\$%_%,"L(*E;U5I(L*9F<AG
# M/>'I))1F$ORM)PZ;Z\F$&_A$Z'%F2 .S_I2\1WID<2+.C)X>ISXW$U9/)HUD
# M<II,?C','"->K()$UXGA[R0K"T.R-#M<,#UQC:J/9HS-& BK])*ZJH1^][V 
# M0X7\RJJ [PLG&DLXGB_L$CE/2$=Z3!]&_'3?^'0V:N*R>I>BKA:J.&ND6\1*
# MSJO@H1C$1S$NN%!!XBI8AY^FJ$45F-U4S&,6K: 2/Q&+NJT0;ABC/GAVM29X
# M\!EZWV_&@V%K>#7 ]_?O;20!=:[TR#D2DO;V?''R!=6_9Z,/:,*]-U+,Z/%0
# M^O5@/+B]:E^WNE!!VZIDK&?;AF+-CQ[QPY-LAAK/[8W5+ UZP!$<OHU[_=OS
# MU YM8Q!&EMV$2<R=>;,(TQU\S6-\,?-<N1MVMPV+WP!K=[_E8<P/,;AWHGK;
# MJ& _:K"-$OM1E\/691XVD<YD-ZK5'>9!CK_/A06@>"^J/>QN>5#&_AY1!:AX
# M/ZSWYZ"]Y7B!&:48->6NL_3E>691ASS&+WRYH$-IWW5L.#JBB(;/9J5KVSG,
# MUEU%J8=3O*L$.TGYO(>ZW<Q!N8^Z9V1VOO=R,G'E#3)=O,(9H9K1:T+WL=-7
# M,4/U4LK/,HPV+SE91.K#:2.K>.9XTGHCYZ.,K-0KE*0NH-[X=0<7:\I]JQAN
# MG(I*;#BTWCC+>3-G>OE0'+(R>=+(+S^4RS;\_ GI^T/9MN%WL!X>+#@'2U6(
# M@@?S8%ZO78)KSX>U!E;5+"YQ]@9Q@^K!R9F@>J"S_]HOCDRJ0L.LOZAJ8E)S
# M92/;N_ZC@".H/==.[<WBH"Y4=]P_+V!K]7/WR1"W"XG;Q<2]0N)>,?%E(?%E
# MCIB\%'.YQ$X'"=!RM)KJZ<+Q EVDL1G"TJ7+]S&^/.DRK?NBBQIV0^Y%+:W0
# MQVZ ]1'[!(<)=)>@TFC1;N>Z>X6[-$UK/OXG]=NK,E4^?\P\'[N#>K;H,N3Y
# MR*GI@HK6AQ1!<T+W?!W#%+J, NVJWUE':B:'I2&NZ,IA>4T71BBD_@JA6RZN
# MW*&[":)'V9_TD&^^^$F,6M^%\\C/ ?T7P?U).,(_%UST"=WXT4.0N['/GB1G
# MY26IT"6G>2&3/E3PE/ZX[H^_7?UUT[JMPA%R5QAMX#OL?++^CK#-I:;(6J/6
# M@K70S"TA/N0*]$66$;G'#2..L>0&>%X_LJ>E(!4=&G:MV,6I+NUPZ4\A"+%O
# MQ".5',*EC)92>:?(+8V"9. FCG91F8--=V9W8-#N5^3"AN0[@6(U\H)')0TP
# M*<S@BF(<%EPZ)Q3I.YBUEC)<4%?K^/X* SG@,>H_A:4@CG+&]7DOI>=[<O4Z
# MHQTB_N>#G<@.I@+[_F(<"["OR+!9#V:/NK =O%F(GV(PH5P%JJ=,@>;-<"O<
# MHV\$_A8_O:3]/=/]/</BBK[^$(SIS/ ]W]]36+[;;-Z16C7OO?[=36NSH2 V
# M&_T_-GHCLW.1W]/8$?S$HO%;K;E/U.#K=6>X4]+@:V=4*$E!WRRH/;S;;1&V
# ME,5R"/D?[.D@HWT&*5D%!NF-1-2&+,K8:<;)9-%#NHWJXU)_;#*3\S+))Y.P
# MMH)H#XOBM.?B=PX&=,75'Y9K)6O;]6R=FF^+4O.ZH*W3\ZNI\;8@3>]*A/2O
# .]VJJY/\+D-=?N%H1  #5
#  
# end
#
# The output below is the result of running emap on the default
# SCO keymap as installed by SCO. It is the equivalent of the
# at.ibm.usa key map file in /usr/lib/keyboard/keys, but with
# the meta bits set properly. Note that for meta keys to work correctly
# you MUST edit /etc/termcap and /usr/lib/terminfo/terminfo.src and add
# the 'km' capability for the 'ansi' entry, and you must disable channel
# mapping in /etc/default/mapchan for the console screens. Extra function
# keys have been added, and the matching emacsstrs.sco is in this
# directory to make a map which scoansi.el can use. So the sequence of
# events should be:
# a) Copy this file to /usr/lib/keyboard/keys
# b) copy emacsstrs.sco to /usr/lib/keyboard/stings
# c) run mapkey and mapstr and set MAPKEY=yes in /etc/default/boot
# d) Add mapstr -f to your /etc/profile or your shell startup
# e) Arrange to have scoansi.el loaded from your .emacs file.
#
#                                                        alt
# scan                      cntrl          alt    alt   cntrl  lock
# code  base  shift  cntrl  shift   alt   shift  cntrl  shift  state
#
    0  nop    nop    nop    nop    nop    nop    nop    nop    O
    1  esc    esc    esc    esc    0x9b   0x9b   0x9b   0x9b   O
    2  '1'    '!'    nop    nop    0xb1   0xa1   nop    nop    O
    3  '2'    '@'    nul    nul    0xb2   0xc0   0x80   0x80   O
    4  '3'    '#'    nop    nop    0xb3   0xa3   nop    nop    O
    5  '4'    '$'    nop    nop    0xb4   0xa4   nop    nop    O
    6  '5'    '%'    nop    nop    0xb5   0xa5   nop    nop    O
    7  '6'    '^'    rs     rs     0xb6   0xde   0x9e   0x9e   O
    8  '7'    '&'    nop    nop    0xb7   0xa6   nop    nop    O
    9  '8'    '*'    nop    nop    0xb8   0xaa   nop    nop    O
   10  '9'    '('    nop    nop    0xb9   0xa8   nop    nop    O
   11  '0'    ')'    nop    nop    0xb0   0xa9   nop    nop    O
   12  '-'    '_'    ns     ns     0xad   0xdf   0x9f   0x9f   O
   13  '='    '+'    nop    nop    0xbd   0xab   nop    nop    O
   14  bs     bs     del    del    0x88   0x88   0xff   0xff   O
   15  ht     btab   nop    nop    0x89   btab   nop    nop    O
   16  'q'    'Q'    dc1    dc1    0xf1   0xd1   0x91   0x91   C
   17  'w'    'W'    etb    etb    0xf7   0xd7   0x97   0x97   C
   18  'e'    'E'    enq    enq    0xe5   0xc5   0x85   0x85   C
   19  'r'    'R'    dc2    dc2    0xf2   0xd2   0x92   0x92   C
   20  't'    'T'    dc4    dc4    0xf4   0xd4   0x94   0x94   C
   21  'y'    'Y'    em     em     0xf9   0xd9   0x99   0x99   C
   22  'u'    'U'    nak    nak    0xf5   0xd5   0x95   0x95   C
   23  'i'    'I'    ht     ht     0xe9   0xc9   0x89   0x89   C
   24  'o'    'O'    si     si     0xef   0xcf   0x8f   0x8f   C
   25  'p'    'P'    dle    dle    0xf0   0xd0   0x90   0x90   C
   26  '['    '{'    esc    esc    0xdb   0xfb   0x9b   0x9b   O
   27  ']'    '}'    gs     gs     0xdd   0xfd   0x9d   0x9d   O
   28  cr     cr     nl     nl     0x8d   0x8d   0x8a   0x8a   O
   29  ctrl   ctrl   ctrl   ctrl   ctrl   ctrl   ctrl   ctrl   O
   30  'a'    'A'    soh    soh    0xe1   0xc1   0x81   0x81   C
   31  's'    'S'    dc3    dc3    0xf3   0xd3   0x93   0x93   C
   32  'd'    'D'    eot    eot    0xe4   0xc4   0x84   0x84   C
   33  'f'    'F'    ack    ack    0xe6   0xc6   0x86   0x86   C
   34  'g'    'G'    bel    bel    0xe7   0xc7   0x87   0x87   C
   35  'h'    'H'    bs     bs     0xe8   0xc8   0x88   0x88   C
   36  'j'    'J'    nl     nl     0xea   0xca   0x8a   0x8a   C
   37  'k'    'K'    vt     vt     0xeb   0xcb   0x8b   0x8b   C
   38  'l'    'L'    np     np     0xec   0xcc   0x8c   0x8c   C
   39  ';'    ':'    nop    nop    0xbb   0xba   nop    nop    O
   40  '\''   '"'    nop    nop    0xa7   0xa2   nop    nop    O
   41  '`'    '~'    nop    nop    0xe0   0xfe   nop    nop    O
   42  lshift lshift lshift lshift lshift lshift lshift lshift O
   43  '\\'   '|'    fs     fs     0xdc   0xfc   0x9c   0x9c   O
   44  'z'    'Z'    sub    sub    0xfa   0xda   0x9a   0x9a   C
   45  'x'    'X'    can    can    0xf8   0xd8   0x98   0x98   C
   46  'c'    'C'    etx    etx    0xe3   0xc3   0x83   0x83   C
   47  'v'    'V'    syn    syn    0xf6   0xd6   0x96   0x96   C
   48  'b'    'B'    stx    stx    0xe2   0xc2   0x82   0x82   C
   49  'n'    'N'    so     so     0xee   0xce   0x8e   0x8e   C
   50  'm'    'M'    cr     cr     0xed   0xcd   0x8d   0x8d   C
   51  ','    '<'    nop    nop    0xac   0xbc   nop    nop    O
   52  '.'    '>'    nop    nop    0xae   0xbe   nop    nop    O
   53  '/'    '?'    nop    nop    0xaf   0xbf   nop    nop    O
   54  rshift rshift rshift rshift rshift rshift rshift rshift O
   55  '*'    '*'    nscr   nscr   0xaa   0xaa   nscr   nscr   O
   56  alt    alt    alt    alt    alt    alt    alt    alt    O
   57  ' '    ' '    ' '    ' '    0xa0   0xa0   0xa0   0xa0   O
   58  clock  clock  clock  clock  clock  clock  clock  clock  O
   59  fkey1  fkey13 fkey25 fkey37 scr1   scr11  scr1   scr11  O
   60  fkey2  fkey14 fkey26 fkey38 scr2   scr12  scr2   scr12  O
   61  fkey3  fkey15 fkey27 fkey39 scr3   scr13  scr3   scr13  O
   62  fkey4  fkey16 fkey28 fkey40 scr4   scr14  scr4   scr14  O
   63  fkey5  fkey17 fkey29 fkey41 scr5   scr15  scr5   scr15  O
   64  fkey6  fkey18 fkey30 fkey42 scr6   scr16  scr6   scr16  O
   65  fkey7  fkey19 fkey31 fkey43 scr7   scr7   scr7   scr7   O
   66  fkey8  fkey20 fkey32 fkey44 scr8   scr8   scr8   scr8   O
   67  fkey9  fkey21 fkey33 fkey45 scr9   scr9   scr9   scr9   O
   68  fkey10 fkey22 fkey34 fkey46 scr10  scr10  scr10  scr10  O
   69  nlock  nlock  dc3    dc3    nlock  nlock  0x93   0x93   O
   70  slock  slock  del    del    slock  slock  0xff   0xff   O
   71  fkey49 '7'    '7'    '7'    '7'    0xb7   0xb7   0xb7   N
   72  fkey50 '8'    '8'    '8'    '8'    0xb8   0xb8   0xb8   N
   73  fkey51 '9'    '9'    '9'    '9'    0xb9   0xb9   0xb9   N
   74  fkey52 '-'    '-'    '-'    '-'    0xad   0xad   0xad   N
   75  fkey53 '4'    '4'    '4'    '4'    0xb4   0xb4   0xb4   N
   76  fkey54 '5'    '5'    '5'    '5'    0xb5   0xb5   0xb5   N
   77  fkey55 '6'    '6'    '6'    '6'    0xb6   0xb6   0xb6   N
   78  fkey56 '+'    '+'    '+'    '+'    0xab   0xab   0xab   N
   79  fkey57 '1'    '1'    '1'    '1'    0xb1   0xb1   0xb1   N
   80  fkey58 '2'    '2'    '2'    '2'    0xb2   0xb2   0xb2   N
   81  fkey59 '3'    '3'    '3'    '3'    0xb3   0xb3   0xb3   N
   82  fkey60 '0'    '0'    '0'    '0'    0xb0   0xb0   0xb0   N
   83  del    '.'    del    del    0xff   0xae   0xff   0xff   N
   84  ns     ns     ns     ns     0x9f   0x9f   0x9f   0x9f   O
   85  nop    nop    nop    nop    nop    nop    nop    nop    O
   86  nop    nop    nop    nop    nop    nop    nop    nop    O
   87  fkey11 fkey23 fkey35 fkey47 scr11  scr11  scr11  scr11  O
   88  fkey12 fkey24 fkey36 fkey48 scr12  scr12  scr12  scr12  O
   89  nop    nop    nop    nop    nop    nop    nop    nop    O
   90  nop    nop    nop    nop    nop    nop    nop    nop    O
   91  nop    nop    nop    nop    nop    nop    nop    nop    O
   92  nop    nop    nop    nop    nop    nop    nop    nop    O
   93  nop    nop    nop    nop    nop    nop    nop    nop    O
   94  nop    nop    nop    nop    nop    nop    nop    nop    O
   95  nop    nop    nop    nop    nop    nop    nop    nop    O
   96  fkey50 fkey62 fkey72 fkey50 fkey82 fkey62 fkey72 fkey50 N
   97  fkey53 fkey64 fkey74 fkey53 fkey84 fkey64 fkey74 fkey53 N
   98  fkey58 fkey67 fkey77 fkey58 fkey87 fkey67 fkey77 fkey58 N
   99  fkey55 fkey65 fkey75 fkey55 fkey85 fkey65 fkey75 fkey55 N
  100  fkey49 fkey61 fkey71 fkey49 fkey81 fkey61 fkey71 fkey49 N
  101  nop    nop    nop    nop    nop    nop    nop    nop    O
  102  fkey57 fkey66 fkey76 fkey57 fkey86 fkey66 fkey76 fkey57 N
  103  fkey59 fkey68 fkey78 fkey59 fkey88 fkey68 fkey78 fkey59 N
  104  fkey60 fkey69 fkey79 fkey60 fkey89 fkey69 fkey79 fkey60 N
  105  del    del    del    del    0xff   0xff   0xff   0xff   N
  106  fkey54 fkey54 fkey93 fkey54 fkey96 fkey54 fkey54 fkey54 N
  107  nop    nop    nop    nop    nop    nop    nop    nop    O
  108  nop    nop    nop    nop    nop    nop    nop    nop    O
  109  nop    nop    nop    nop    nop    nop    nop    nop    O
  110  nop    nop    nop    nop    nop    nop    nop    nop    O
  111  nop    nop    nop    nop    nop    nop    nop    nop    O
  112  nop    nop    nop    nop    nop    nop    nop    nop    O
  113  nop    nop    nop    nop    nop    nop    nop    nop    O
  114  nop    nop    nop    nop    nop    nop    nop    nop    O
  115  nop    nop    nop    nop    nop    nop    nop    nop    O
  116  nop    nop    nop    nop    nop    nop    nop    nop    O
  117  nop    nop    nop    nop    nop    nop    nop    nop    O
  118  nop    nop    nop    nop    nop    nop    nop    nop    O
  119  nop    nop    nop    nop    nop    nop    nop    nop    O
  120  nop    nop    nop    nop    nop    nop    nop    nop    O
  121  nop    nop    nop    nop    nop    nop    nop    nop    O
  122  nop    nop    nop    nop    nop    nop    nop    nop    O
  123  nop    nop    nop    nop    nop    nop    nop    nop    O
  124  nop    nop    nop    nop    nop    nop    nop    nop    O
  125  nop    nop    nop    nop    nop    nop    nop    nop    O
  126  nop    nop    nop    nop    nop    nop    nop    nop    O
  127  nop    nop    nop    nop    nop    nop    nop    nop    O
  128  rctrl  rctrl  rctrl  rctrl  rctrl  rctrl  rctrl  rctrl  O
  129  ralt   ralt   ralt   ralt   ralt   ralt   ralt   ralt   O
  130  fkey60 fkey69 fkey79 fkey60 fkey89 fkey69 fkey79 fkey60 O
  131  del    del    del    del    0xff   0xff   0xff   0xff   N
  132  fkey49 fkey61 fkey71 fkey49 fkey81 fkey61 fkey71 fkey49 N
  133  fkey57 fkey66 fkey76 fkey57 fkey86 fkey66 fkey76 fkey57 N
  134  fkey51 fkey63 fkey73 fkey51 fkey83 fkey63 fkey73 fkey51 N
  135  fkey59 fkey68 fkey78 fkey59 fkey88 fkey68 fkey78 fkey59 N
  136  fkey55 fkey65 fkey75 fkey55 fkey85 fkey65 fkey75 fkey55 N
  137  fkey53 fkey64 fkey74 fkey53 fkey84 fkey64 fkey74 fkey53 N
  138  fkey50 fkey62 fkey72 fkey50 fkey82 fkey62 fkey72 fkey50 N
  139  fkey58 fkey67 fkey77 fkey58 fkey87 fkey67 fkey77 fkey58 N
  140  '/'    nop    nop    nop    0xaf   nop    nop    nop    O
  141  cr     cr     nl     nl     0x8d   0x8d   0x8a   0x8a   O