aboutsummaryrefslogtreecommitdiff
path: root/unix/boot/spp/rpp/ratlibr/mntoc.r
blob: 55d3fedd59db2391acaf459efd3a4b6f89194da7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
include	defs

# mntoc --- translate ASCII mnemonic into a character

   character function mntoc (buf, p, defalt)
   character buf (ARB), defalt
   integer p

   integer i, tp
   integer equal

   character c, tmp (MAXLINE)

   character text (170)
   data text / _
      ACK, LETA, LETC, LETK, EOS,
      BEL, LETB, LETE, LETL, EOS,
      BS,  LETB, LETS, EOS,  EOS,
      CAN, LETC, LETA, LETN, EOS,
      CR,  LETC, LETR, EOS,  EOS,
      DC1, LETD, LETC, DIG1, EOS,
      DC2, LETD, LETC, DIG2, EOS,
      DC3, LETD, LETC, DIG3, EOS,
      DC4, LETD, LETC, DIG4, EOS,
      DEL, LETD, LETE, LETL, EOS,
      DLE, LETD, LETL, LETE, EOS,
      EM,  LETE, LETM, EOS,  EOS,
      ENQ, LETE, LETN, LETQ, EOS,
      EOT, LETE, LETO, LETT, EOS,
      ESC, LETE, LETS, LETC, EOS,
      ETB, LETE, LETT, LETB, EOS,
      ETX, LETE, LETT, LETX, EOS,
      FF,  LETF, LETF, EOS,  EOS,
      FS,  LETF, LETS, EOS,  EOS,
      GS,  LETG, LETS, EOS,  EOS,
      HT,  LETH, LETT, EOS,  EOS,
      LF,  LETL, LETF, EOS,  EOS,
      NAK, LETN, LETA, LETK, EOS,
      NUL, LETN, LETU, LETL, EOS,
      RS,  LETR, LETS, EOS,  EOS,
      SI,  LETS, LETI, EOS,  EOS,
      SO,  LETS, LETO, EOS,  EOS,
      SOH, LETS, LETO, LETH, EOS,
      SP,  LETS, LETP, EOS,  EOS,
      STX, LETS, LETT, LETX, EOS,
      SUB, LETS, LETU, LETB, EOS,
      SYN, LETS, LETY, LETN, EOS,
      US,  LETU, LETS, EOS,  EOS,
      VT,  LETV, LETT, EOS,  EOS/

   tp = 1
   repeat {
      tmp (tp) = buf (p)
      tp = tp + 1
      p = p + 1
      } until (! (IS_LETTER(buf (p)) | IS_DIGIT(buf (p)))
		  | tp >= MAXLINE)
   tmp (tp) = EOS

   if (tp == 2)
      c = tmp (1)
   else {
      call lower (tmp)
      for (i = 1; i < 170; i = i + 5)  # should use binary search here
	 if (equal (tmp, text (i + 1)) == YES)
	    break
      if (i < 170)
	 c = text (i)
      else
	 c = defalt
      }

   return (c)
   end