BSD 3 development
authorKen Thompson <ken@research.uucp>
Sat, 24 Nov 1979 21:46:17 +0000 (13:46 -0800)
committerKen Thompson <ken@research.uucp>
Sat, 24 Nov 1979 21:46:17 +0000 (13:46 -0800)
Work on file usr/src/cmd/apl/asciiterm.c

Co-Authored-By: Ross Harvey <x-rh@ucbvax.Berkeley.EDU>
Co-Authored-By: Douglas Lanam <x-dl@ucbvax.Berkeley.EDU>
Synthesized-from: 3bsd

usr/src/cmd/apl/asciiterm.c [new file with mode: 0644]

diff --git a/usr/src/cmd/apl/asciiterm.c b/usr/src/cmd/apl/asciiterm.c
new file mode 100644 (file)
index 0000000..3deab62
--- /dev/null
@@ -0,0 +1,115 @@
+#include "apl.h"
+
+asciich() {
+       extern unsigned char    *iline;
+       extern struct asoperbox charconv[OPERBOXSIZE];
+       register D,E,F,I;
+       
+       F = *iline++;
+       if ( ( F == '.') && ( digit(*iline) == 0 ) ) {
+               D = (int)*iline++;
+               E = (int)*iline++;
+               for (I = 0; I <= OPERBOXSIZE;I++) {
+                       if (( D== (charconv[I].letters[0]) ) &&
+                           ( E== (charconv[I].letters[1]) ) ) {
+                               F = charconv[I].returnchar;
+                               goto out;
+                       }
+               }
+               --iline;--iline;
+       }
+out:   return(F);
+};
+
+/* eventually this should be replaces with arrays that hae a better    */
+/*     method of selecting and returning the lexical value, but        */
+/*     for now, this is a quick implementation                         */
+/*                                                                     */
+/*     use char as subscript from ascii - get apl character hopefully  */
+/*     for character conversion from ascii to apl char set ---         */
+/* see files write2.c and write3.c for more recent version             */
+
+struct asoperbox charconv[OPERBOXSIZE] = {
+/* ascii mnemonic ( from HP  APL ascii char mnemonics and              */
+/*     equivalent apl character value.                                 */
+/*     all are two lowercase letters preceeded by a dot.               */
+/*     letters for identifiers are lowercase or uppercase              */
+/*     lowercase corresponding to apl uppercase and                    */
+/*     uppercase corresponding to apl underscored letters.             */
+
+"le",  /* less than or equal   */ '$',
+"ge",  /* greater than or equal*/ '^',
+"ne",  /* not equal            */ '*',
+"om",  /* omega ( not used )   */ 'W',
+"ep",  /* epsilon              */ 'E',
+"rh",  /* shape (rho)          */ 'R',
+"nt",  /* not ( also '~' )     */ 'T',
+"tk",  /* take ( also '^' )    */ 'Y',
+"dr",  /* drop                 */ 'U',
+"it",  /* iota                 */ 'I',
+"ci",  /* circular function    */ 'O',
+"al",  /* alpha ( not used )   */ 'A',
+"cl",  /* maximum ( ceiling )  */ 'S',
+"fl",  /* minimum ( floor )    */ 'D',
+"dl",  /* del ( not used )     */ 'G',
+"de",  /* upside down del      */ 'H',
+"jt",  /* small circle ( null )*/ 'J',
+"qd",  /* quad                 */ 'L',
+"ss",  /* right U ( not used ) */ 'Z',
+"sc",  /* left U ( not used )  */ 'X',
+"si",  /* Down U               */ 'C',
+"su",  /* U ( not used )       */ 'V',
+"[^",  /* upside-down del      */ 'H',
+"bv",  /* decode ( base )      */ 'B',
+"rp",  /* encode ( rep )       */ 'N',
+"br",  /* residue ( mod )      */ 'M',
+"sp",  /* assignment           */ '[',
+"go",  /* goto                 */ ']',
+"or",  /* or                   */ '(',
+"nn",  /* nand                 */ 0205,
+"nr",  /* nor                  */ 0206,
+"lg",  /* log                  */ 0207, 
+"rv",  /* reversal             */ 0217,
+"tr",  /* transpose            */ 0212,
+"rb",  /* reverse bar          */ 0214,
+"cb",  /* comma bar ( not used)*/ 0,
+"sb",  /* slash bar            */ 0200,
+"bb",  /* blackslash bar       */ 0201,
+"gu",  /* grade up             */ 0215,
+"gd",  /* grade down           */ 0216,
+"qq",  /* quote quad           */ 0202,
+"dm",  /* domino               */ 0214,
+"lm",  /* lamp                 */ 0204,
+"ib",  /* i - beam             */ 0213,
+"ex",  /* execute ( not used ) */ 0,
+"fr",  /* format( not used )   */ 0,
+"di",  /* diamond ( not used ) */ 0,
+"ot",  /* out ( not used )     */ 0,
+"ld",  /* locked del (not used)*/ 0,
+"[a",  /* alias for 'A'        */ 0220,
+"[b",  /* alias for 'B'        */ 0221,
+"[c",  /* alias for 'C'        */ 0222,
+"[d",  /* alias for 'D'        */ 0223,
+"[e",  /* alias for 'E'        */ 0224,
+"[f",  /* alias for 'F'        */ 0225,
+"[g",  /* alias for 'G'        */ 0226,
+"[h",  /* alias for 'H'        */ 0227,
+"[i",  /* alias for 'I'        */ 0230,
+"[j",  /* alias for 'J'        */ 0231,
+"[k",  /* alias for 'K'        */ 0232,
+"[l",  /* alias for 'L'        */ 0233,
+"[m",  /* alias for 'M'        */ 0234,
+"[n",  /* alias for 'N'        */ 0235,
+"[o",  /* alias for 'O'        */ 0236,
+"[p",  /* alias for 'P'        */ 0237,
+"[q",  /* alias for 'Q'        */ 0240,
+"[r",  /* alias for 'R'        */ 0241,
+"[s",  /* alias for 'S'        */ 0242,
+"[t",  /* alias for 'T'        */ 0243,
+"[u",  /* alias for 'U'        */ 0244,
+"[v",  /* alias for 'V'        */ 0245,
+"[w",  /* alias for 'W'        */ 0246,
+"[x",  /* alias for 'X'        */ 0247,
+"[y",  /* alias for 'Y'        */ 0250,
+"[z",  /* alias for 'Z'        */ 0251
+};