[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Control characters in # macro.

    Date: 11 September 1979 10:16-EDT
    From: Carl W. Hoffman <CWH at MIT-MC>

    The idea of a character called Control-C is the same when typed on the Lisp
    Machine as when typed on an ascii keyboard.
There are two ways of typing a Control-C from a Knight keyboard to MacLisp: You can
hold down CTRL and type C, or you can hold down TOP and type X. The two cases are the
same for a keyboard open in the vanilla way. If you hack 12 bit input however, you
get extra high-order bits telling you just how the character was typed.
						 I simply want ONE way of
    writing this object.
The problem is it isn't ONE object!
			  There's no reason why a piece of code which does
    (= (TYI) #/C) can't work on both the Lisp Machine and in TOPS-20 MacLisp.
OK lets think it through. Lets try and figure out what fixnum #/C should be. Since
the tty is normally open in a vanilla way it can't return a number greater than 177, so
the only reasonable choice is for #/C to read in as 3. (presumably #/C errs out
in some reasonable way.) Now suppose the tty was open in 12 bit mode how are we to
generate the 12 bit character code? #/C can't read the users mind (or his code).

    The problem which Alan tries to solve with his #^ hack is the fact that two
    character sets are available in ITS MacLisp.  #/C can read as two different
    things -- Control-C as represented in ascii or as represented in the ITS
    12-bit character set.  This could be controlled by a read-time switch.
OK so instead of reading my mind I have to tell the reader what I am thinking,
This isn't to bad (I have to tell it what base I have in mind too!)
    hacking both character sets would presumably canonicalize to a single form.
If you are hacking both "character sets" you have to have #/C generate the 12 bit code.
This is why this should be the default meaning for #/C. (In the other mode
you are going to have to deal with the meaning of #/c and #/C somehow!)

The point of #^C is for hacking the strict ASCII character set in a mnemonic way.
It is only for MacLisp because only maclisp has this restriction. It is still true
that #/ (which reads the same) looks funny on some terminals. So if we try and create
a # macro that MacLisp users can use (even when they are not writing compatable code)
It should have this ability.