[net.lang.apl] APL character set

perl@rdin2.UUCP (Robert Perlberg) (09/12/84)

<APL n. [A Personal Language, A Packed Language, or (rarely)
A Programming Language.]  A language, devised by K. Iverson
(1961), so compacted that the source code can be freely
disseminated without revealing the programmer's intentions
or jeopardizing proprietary rights.>

Several months ago I posted the following:

|We have a legally obtained but unsupported version of apl\11
|on a MASSCOMP MC500.  We have no documentation.  Could
|someone send me some documentation for it?  I at least need
|to know how to use it with a regular ascii terminal.  I have
|tried some of the commands I have seen in this newsgroup.
|The ones which don't require APL characters work, but using
|words like 'rho' and 'iota' don't.

I got many responses.  Unfortunately, none of them were
really helpful.  I suspect that something must be wrong with
our APL.  Nothing conventional or intuitive works.

The responses fell into two categories: the APL-ASCII
mapping and the "dot" conventions.  Here are representative
samples of each:

From: philabs!allegra!watmath!ljdickey (Lee Dickey)

Note that the ASCII character set for uses both upper-case and lower-case.
	a-z		letter
	0-9		digit
	`		negative sign
	'--'		string
	C <bs> J	comment
	( )
	[ ; ]		indexing
	L		quad
	L <bs> '	quote quad

			dyadic		monadic
			------		-------
	+		add		plus
	-		sub		negate
	X		mult		sign
	%		div		reciprocal
	|		mod		absolute value
	D		min		floor
	S		max		ceiling
	*		pwr		exp
	O <bs> *	log		ln (log base e)
	O		circle funct	pi times
	' <bs> .	combinatorial	factorial
	!		combinatorial	factorial
	^		and
	V		or
	^ <bs> ~	nand
	V <bs> ~	nor
	<		lt
	>		gt
	$		le
	&		ge
	=		eq
	#		ne
	~				not
	?		deal		random number
	R		rho		rho
	I		iota		iota
	E		epsilon
	N		encode
	B		decode
	\ <bs> O	transpose	transpose
	,		catenate	ravel		*
	Y		take
	U		drop
	{		assign
	}		goto
	B <bs> N	i-beam		i-beam
	L <bs> %	matrix div	matrix inverse
	| <bs> H	grade up			*
	G <bs> |	grade down			*
	B <bs> J			execute
	N <bs> J			format
	/		compress			*
	/ <bs> -	compress
	\		expand				*
	\ <bs> -	expand
	O <bs> |	rotate		reverse		*
	O <bs> -	rotate		reverse
	op/				reduce		*
	op / <bs> -			reduce
	J.op		outer product
	op.op		inner product

* may be subscripted with a scalar
<bs> means backspace (ctrl h)


From: philabs!seismo!ut-sally!mordor!jdb

There are a couple of different versions of APL\11 floating around.
If your version originally came from Yale or Toronto (circa 1975)
or from 3BSD, then I can't help much.  It is likely, though, that
what you have is based upon the Purdue/EE version.  I worked on it
during the later years it was at Purdue.  We distributed it to any
site with a source license >= V6 (some of the original code was
written in the days of the Fifth Edition!) and it was distributed
with 4.2BSD.

If you have a source license for UNIX you might want to contact my
ex-major professor, now at Cornell, for a current distribution copy.
(For various reasons I cannot distribute copies from LLNL, where I
now work.)  If the machine you are using doesn't look a LOT like a
PDP/VAX-11, then someone probably put some changes in to support
your machine and the distribution probably won't run unless you
can reinstall those mods.  However, the documentation that comes
on the distribution tape may be helpful.  While maintaining APL, I
wrote a manual describing the idiosyncracies of its use: the
character set, Unix-I/O quad functions, function editing, etc.

If you don't want the tape, send me your U.S. mail address and I'll
try to dig up a hardcopy of the manual to send to you.

My former major professor can be reached at

	Dr. Anthony P. Reeves
	School of Electrical Engineering
	Cornell University, Phillips Hall
	Ithaca, NY  14853
	(607) 256-4296


To answer your immediate problem, here is the ASCII character set.
By the way, if you have one of my more recent versions it may be able
to deal with APL terminals.  Check to see if there is an include file
"aplmap.h".

Note that the ASCII character set uses both upper-case and lower-case.

	a-z             letter
	0-9             digit
	`               negative sign
	'--'            string
	C <bs> J  C     comment
	.
	( )
	[ ; ]           indexing
	L               quad
	L <bs> '        quote quad
	
	                dyadic          monadic
	                ------          -------
	+               add             plus
	-               sub             negate
	X               mult            sign
	%               div             reciprical
	|               mod             absolute value
	D               min             floor
	S               max             ceiling
	*               pwr             exp
	O <bs> *        log             ln (log base e)
	O               circle funct    pi times
	' <bs> .        combinatorial   factorial
	!               combinatorial   factorial
	^               and
	V               or
	^ <bs> ~        nand
	V <bs> ~        nor
	<               lt
	>               gt
	$               le
	&               ge
	=               eq
	#               ne
	~                               not
	?               deal            random number
	R               rho             rho
	I               iota            iota
	E               epsilon
	N               encode
	B               decode
	\ <bs> O        transpose       transpose
	,               catenate        ravel           *
	Y               take
	U               drop
	{               assign
	}                               goto
	B <bs> N        i-beam          i-beam
	L <bs> %        matrix div      matrix inverse
	| <bs> H        grade up                        *
	G <bs> |        grade down                      *
	B <bs> J                        execute
	N <bs> J                        format
	/               compress                        *
	/ <bs> -        compress
	\               expand                          *
	\ <bs> -        expand
	O <bs> |        rotate          reverse         *
	O <bs> -        rotate          reverse
	op /                            reduce          *
	op / <bs> -                     reduce
	J.op            outer product
	op.op           inner product
	
	* may be subscripted with a scalar
	<bs>  backspace (ctrl h)


While I don't do much in the way of maintenance of APL any more (I just
don't have the time these days), I am interested in any comments you may
have.
--
  John Bruner (S-1 Project, Lawrence Livermore National Laboratory)
  MILNET: jdb@mordor.ARPA [jdb@s1-c]	(415) 422-0758
  UUCP: ...!ucbvax!dual!mordor!jdb 	...!decvax!decwrl!mordor!jdb



From: Matthew J Weinstein <philabs!seismo!matt@UCLA-LOCUS.ARPA>


An old APL\10 implementation book I have (c. 1973) has two alternate
sets, a set beginning with `.', and a set beginning with `@'.  In
addition, I have seen sets that begin with `$' or <ESC>.

The @, $, and <ESC> characters are used to indicate that the following
character be interpreted as a standard apl character (e.g. @G == DEL).

The `.' set in the DEC-10 book are in all uppercase, I have transcribed to
lower:

dotconvention	APL char
.al		alpha
.de		decode
.du		intersection (upside down u)
.fl		floor
.ep		epsilon
.us		underscore
.dl		del
.ld		upside down del
.io		iota
.so		degrees
'		quote
.bx		box
.ab		absolute (vert bar)
.en		encode
.lo		circle
*		*
?		?
.ro		rho
.ce		ceiling
.nt		~
.da		down arro
.uu		real union (u)
.om		omega
.lu		left union
^		uparrow
.ru		right union

.dd		double dots (umlaut)
.ge		greater equal >=
.go		right arrow (goto)
.le		<=
.ne		!= (not equal)
.ng		negate
.or		or

funny overstrikes:

.cb		-\
.cr		-circle
.cs		-/
.dq		domino quad
.gd		grade down
.gu		grade up
.ib		ibeam
.iq		left arrow quad (is this insert quad?)
.lg		log (circle star)
.nn		nand
.nr		nor
.oq		right arrow quad (ahha output quad)
.ou		can't decipher this one
.pd		del squiggle (locked del)
.qd		quad del
.qq		quote quad
.rv		reverse?  (circle with abs)
.tr		translate?  (circle with \)
.xq		or over and (this may be  a funny form of execute?)
.za		a underscore
.zb		b underscore
.zc		c underscore
etc.

Hope this is the weird code you're using.

IF not, do try @, '$', <ESC>, and any other character (`.') you can
think of followed by `G' and 'g', and see if any get you into a
function.

Let me know if this helps (in fact, plz reply anyway, cause I'm
not sure the path I picked is right).

					- Matt

-------

UUCP:	{ucbvax,ihnp4}!ucla-cs!locus.matt
ARPA:	matt@ucla-locus


From: blickstein@orphan.DEC (Dave Blickstein)

The APL-11 documentation is still (and only) available from digital.  You'll
have to get in touch with a dec salesman to order it.   There is no on-line
documentation.

What follows is a table of mnemonics used in ASCII mode for the APL characters.
The TTY mode in APL-11 doesn't use keywords (like "rho").  Instead it uses
either single character substitutions ("#" for multiply/signum) or "dot 
mnemonics"  like  .RO for rho.

Here is the table.  This table is actually for VAX-11 APL and so not all of
these are available in APL-11, but the standard APL symbols are the same
as in APL-11.  (Things like control characters probably aren't in APL-11).
Hope this helps.


                              APL Character Set

                         APL Single Strike Characters


       TTY    TTY     Name               TTY     TTY     Name
       Set    Mnemonic                   Set     Mnemonic

       A-Z            letters                    .NE     Not Equal
       0-9            numbers                    .LE     < or =
       +              plus                       .GE     > or =
       -              minus              (               left parenthesis
       #              times              )               right parenthesis
       %              divide             [               left bracket
       *              star               ]               right bracket
              .NG     high minus         {       .LB     Left Brace
              .US     UnderScore         }       .RB     Right Brace
       ,              comma              \               backslash
       .              period             /               slash
       :              colon                      .CE     CEiling
       ;              semicolon                  .FL     FLoor
       $              dollar sign                .SO     jot (Small O)
       '              quote                      .LO     circle (Large O)
       ?              question mark              .LD     delta (Lower Del)
       ~      .NT     tilde (NoT)                .DM     DiaMond
       |      .AB     stile                      .DL     DeL
              .AL     ALpha              _               left arrow
              .BX     quad (BoX)                 .GO     right arrow
              .DD     Dieresis           ^               up arrow
              .EP     EPsilon                    .DA     Down Arrow
              .IO     IOta                       .LU     Left U
              .OM     OMega                      .RU     Right U
              .RO     RhO                        .UU     Up U
       &              and                        .DU     Down U
              .OR     OR                         .LK     Left tacK
       <              less than                  .RK     Right tacK
       >              greater than               .EN     represent
       =              equals                     .DE     base


                      APL Overstruck Characters


       TTY    Name                               TTY     Name
       Set                                       Set

       .ZA-.ZZ Underscored letters               .PD     Protected Del
       .UD     Underscored Delta                 .NR     NoR
       !       shriek                            .NN     NaNd
       "       lamp                              .LG     LoGarithm
       .IB     I-Beam                            .RV     ReVerse
       .XQ     hydrant (eXecute)                 .TR     TRanspose
       .FM     thorn (ForMat)                    .CR     Column Reverse
       .DQ     Divide Quad                       .CC     Column Comma
       .IQ     Input Quad                        .CS     Column Slash
       .OQ     Output Quad                       .CB     Column Backslash
       .QQ     Quote Quad                        .SS     SubSet
       .QD     Quad Del                          .CO     COntains
       .GU     Grade Up                          .SQ     Squish Quad
       .GD     Grade Down


                      APL Support for ASCII Graphics

                   ASCII          TTY       Name
                   Graphic                  Set

                   `              .AG       Accent Grave
                   @              @         AT sign
                   "              .QU       double QUote
                   #              .PS       Pound Sign
                   %              .PC       PerCent sign
                   &              .AP       AmPersand
                   a-z            .JA-.JZ   Lower case letters


                      APL Support for ASCII Control Characters


       ASCII  TTY     Name                       ASCII   TTY     Name
       Set    Set                                Set     Set

       NUL    .WN     CTRL/@ (NULl)              DC1     .KQ     CTRL/Q
       SOH    .KA     CTRL/A                     DC2     .KR     CTRL/R
       STX    .KB     CTRL/B                     DC3     .KS     CTRL/S
       ETX    .KC     CTRL/C                     DC4     .KT     CTRL/T
       EOT    .KD     CTRL/D                     NAK     .KU     CTRL/U
       ENQ    .KE     CTRL/E                     SYN     .KV     CTRL/V
       ACK    .KF     CTRL/F                     ETB     .KW     CTRL/W
       BEL    .KG     CTRL/G (BELl)              CAN     .KX     CTRL/X
       BS     .KH     CTRL/H (BackSpace)         EM      .KY     CTRL/Y
       HT     .KI     CTRL/I (Horizontal Tab)    SUB     .KZ     CTRL/Z
       LF     .KJ     CTRL/J (Line Feed)         ESC     .WE     CTRL/[ (ESC)
       VT     .KK     CTRL/K (Vertical Tab)      FS      .WF     CTRL/\
       FF     .KL     CTRL/L (Form Feed)         GS      .WG     CTRL/]
       CR     .KM     CTRL/M (Carriage Return)   RS      .WR     CTRL/^
       SO     .KN     CTRL/N (Shift Out)         US      .WU     CTRL/_
       SI     .KO     CTRL/O (Shift In)          DEL     .WD     DEL
       DLE    .KP     CTRL/P
{
====================================================================

My APL does not accept any of the APL-ASCII mappings.  It also does not
accept any of the "dot" conventions, or the "@", "$", or "ESC"
contructs.  It does, however, accept the single character operators
which are listed with the dot conventions.

Robert Perlberg
Resource Dynamics Inc.
New York
philabs!rdin!rdin2!perl

reid@Cascade.ARPA (09/20/84)

Here at Stanford we have a version of apl\11, which we got from the UCSF
Computer Graphics Lab; I have no idea where they got it from, and we have
made a lot of changes to it (but none to the character set) It obviously is
rooted in the same Ken Thompson original Yale version that the Purdue apl\11
comes from, but I don't really know what disparate path it took.

I am busily converting our apl\11 to work under 4.2 because the Purdue APL,
though much nicer, is just too deeply in bed with overstruck characters and
wants its own editor; we like to use Emacs with an "apl mode" for editing.

Ours uses dot codes, but they are not the same as any of the other dot codes
you were given. Try
	.it 10
	20 20 .rh 'abc'
	.qd _ 'Hi mom'
and see what happens. If that does anything useful I can send you the whole
character table.
		Brian Reid