Subject: Re: Linefeed character in SBCL
From: rpw3@rpw3.org (Rob Warnock)
Date: Sun, 30 Mar 2008 20:46:59 -0500
Newsgroups: comp.lang.lisp
Message-ID: <2bidnWMR76wO323anZ2dnUVZ_gGdnZ2d@speakeasy.net>
Kent M Pitman  <pitman@nhplace.com> wrote:
+---------------
|   http://common-lisp.net/project/bknr/static/lmman/fd-str.xml
| Note that the codes there are shown in octal, not decimal, which was
| for a very long time the default ibase/base for Zetalisp, and that in
| octal LF is 12 and CR is 15.  Note also that Return is 215 OCTAL, that
| is, an ASCII CR with the 200 octal bit (010 000 000 binary) set. (The
| number of codes that had the 200 bit set on top of what would have
| been the ASCII coding is something I never really noticed until just
| this minute looking at that table, but I'm quite sure it was not
| accidental.  
+---------------

Heh! For a second I thought it was just "7+1" even parity,
which was once upon a time the most common flavor of ASCII
used for Teletypes:

    > (defun even-parity/7+1 (x)     
	(let ((x7 (logand x #o177)))
	  (+ x7 (if (oddp (logcount x7)) #o200 0))))

    EVEN-PARITY/7+1
    > (write (mapcar 'even-parity/7+1 (iota 16 8)) :base 8)
    (210 11 12 213 14 215 216 17 220 21 22 223 24 225 226 27)
    (136 9 10 139 12 141 142 15 144 17 18 147 20 149 150 23)
    > 

But looking at the URL you reference shows that that's incorrect.
Zetalisp just stuck all the "control" codes up at #o200+x for its
own weird reasons, and the fact that "x" happens to match the
corresponding ASCII control code for just a few of them was just a
convenience for the designers (and confusion for everyone else!).


-Rob

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607