home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume2 / tools / part2 < prev    next >
Encoding:
Internet Message Format  |  1986-11-30  |  47.1 KB

  1. From: ihnp4!mnetor!clewis (Chris Lewis)
  2. Subject: Software Tools in Pascal (Part 1 of 6)
  3. Newsgroups: mod.sources
  4. Approved: john@genrad.UUCP
  5.  
  6. Mod.sources:  Volume 2, Issue 7
  7. Submitted by: ihnp4!mnetor!clewis (Chris Lewis)
  8.  
  9. #!/bin/sh
  10. echo 'Start of pack.out, part 01 of 06:'
  11. echo 'x - deskcalc.pascal'
  12. sed 's/^X//' > deskcalc.pascal << '/'
  13. X{
  14. X    Copyright (c) 1982
  15. X    By:    Chris Lewis
  16. X
  17. X    Right is hereby granted to freely distribute or duplicate this
  18. X    software, providing distribution or duplication is not for profit
  19. X    or other commerical gain and that this copyright notice remains 
  20. X    intact.
  21. X}
  22. Xprogram DeskCalculator;
  23. X%include swtools
  24. Xconst
  25. X    maxStackIndex = 500;
  26. X    maxRegisterIndex = 500;
  27. Xtype
  28. X    StackIndexType      = 0..maxStackIndex;
  29. X    StackElementType    = Real;
  30. X    RegisterIndexType   = 0..maxRegisterIndex;
  31. Xvar
  32. X    stack: array [StackIndexType] of StackElementType;
  33. X    stackPointer: StackIndexType;
  34. X    registers: array [RegisterIndexType] of StackElementType;
  35. X%page
  36. Xprocedure StackPush(const val: Real);
  37. Xbegin
  38. X    if stackPointer < maxStackIndex then begin
  39. X        stack[stackPointer] := val;
  40. X        stackPointer := Succ(stackPointer)
  41. X    end {then}
  42. X    else
  43. X        Message('Stack overflow, value ignored');
  44. Xend; {StackPush}
  45. X
  46. X
  47. Xprocedure StackPop(var val: Real);
  48. Xbegin
  49. X    if stackPointer > Lowest(StackIndexType) then begin
  50. X        stackPointer := Pred(stackPointer);
  51. X        val := stack[stackPointer]
  52. X    end {then}
  53. X    else begin
  54. X        Message('Stack Underflow, replaced with zero');
  55. X        val := 0
  56. X    end {if};
  57. Xend; {StackPop}
  58. X%page
  59. XProcedure PrintHelp;
  60. Xbegin
  61. X    MPutStr('Desk Calculator HELP:$N$N$N$E', STDOUT);
  62. X    MPutStr('DeskCalc implements a reverse Polish calculator$N' ||
  63. X           '(or RPN) similar to a Hewlett Packard Calculator$N$E',
  64. X           STDOUT);
  65. X    MPutStr('There are the basic operators as well as a stack of$N' ||
  66. X           'up to 500 deep and 500 registers for SAVE/READ$N$N$E',
  67. X           STDOUT);
  68. X    MPutStr('*   Multiply$N$E',STDOUT);
  69. X    MPutStr('/   Divide$N$E', STDOUT);
  70. X    MPutStr('+   Plus$N$E', STDOUT);
  71. X    MPutStr('-   Minus$N$E', STDOUT);
  72. X    MPutStr('%   Modulo (integer)$N$E', STDOUT);
  73. X    MPutStr('_   Unary negate$N$N$E',STDOUT);
  74. X    MPutStr('Other commands, only first letter significant$N$N$E',
  75. X        STDOUT);
  76. X    MPutStr('Print   Print top of stack$N$E',STDOUT);
  77. X    MPutStr('Clear   Clear stack$N$E',STDOUT);
  78. X    MPutStr('Quit    Quit$N$E', STDOUT);
  79. X    MPutStr('Help    Help (you''re reading it)$N$E',STDOUT);
  80. X    MPutStr('Save    Save TOS-1 in register TOS,$N$E' ||
  81. X           '        pops TOS-1 and TOS$N$E', STDOUT);
  82. X    MPutStr('Read    Read register TOS into TOS$N$E', STDOUT);
  83. X    MPutStr('Drop    Pop and ignore top of stack$N$E', STDOUT);
  84. X    MPutStr('Trace   If TOS 0, turn off tracing, else on$N$E', STDOUT);
  85. X    MPutStr('Wap     sWap TOS and TOS-1$N$E', STDOUT);
  86. Xend {PrintHelp};
  87. X%page
  88. Xfunction Calculate(const arg: StringType):Boolean;
  89. X
  90. Xvar
  91. X    val, left, right: StackElementType;
  92. X    temp: String(MAXSTR);
  93. X    outVal: StringType;
  94. X    i,j,k: Integer;
  95. X
  96. Xstatic
  97. X    traceFlag: Boolean;
  98. Xvalue
  99. X    traceFlag := false;
  100. X
  101. X
  102. Xbegin
  103. X    Calculate := true;
  104. X
  105. X    if traceFlag then begin
  106. X        PutDec(stackPointer, 4);
  107. X        PutC(BLANK);
  108. X        PutStr(arg, STDOUT);
  109. X        PutC(NEWLINE);
  110. X    end;
  111. X
  112. X    if arg[1] in [DIG0..DIG9,PERIOD] then begin
  113. X        ReadStr(Str(arg), val);
  114. X        StackPush(val)
  115. X    end
  116. X
  117. X    else begin
  118. X        case arg[1] of
  119. X            STAR, MINUS, PLUS, SLASH, PERCENT: begin
  120. X                StackPop(right);
  121. X                StackPop(left);
  122. X                case arg[1] of
  123. X                    STAR:
  124. X                        left := left * right;
  125. X                    MINUS:
  126. X                        left := left - right;
  127. X                    PLUS:
  128. X                        left := left + right;
  129. X                    SLASH:
  130. X                        left := left / right;
  131. X                    PERCENT:
  132. X                        left := Round(left) mod Round(right)
  133. X                end {case};
  134. X                StackPush(left)
  135. X            end; { Dyadic operators }
  136. X
  137. X            UNDERLINE: begin
  138. X                StackPop(left);
  139. X                StackPush(- left)
  140. X            end {UNDERLINE (unary negate)};
  141. X
  142. X            LETD, BIGD: StackPop(left);
  143. X
  144. X            LETC, BIGC: stackPointer :=
  145. X                            Lowest(StackIndexType);
  146. X
  147. X            LETH, BIGH: PrintHelp;
  148. X
  149. X            LETW, BIGW: begin
  150. X                StackPop(right);
  151. X                StackPop(left);
  152. X                StackPush(right);
  153. X                StackPush(left);
  154. X            end {LETW, BIGW};
  155. X
  156. X            LETQ, BIGQ: Calculate := false;
  157. X
  158. X            LETP, BIGP: begin
  159. X                StackPop(left);
  160. X                StackPush(left);
  161. X                if (left > 1.0e11) or (left < 1.0e-5) then
  162. X                    WriteStr(temp, left:20)
  163. X                else
  164. X                    WriteStr(temp, left:20:10);
  165. X                outVal := temp;
  166. X                outVal[Length(temp) + 1] := ENDSTR;
  167. X                PutStr(outVal, STDOUT);
  168. X                PutC(NEWLINE)
  169. X            end {LETP, BIGP};
  170. X
  171. X            LETT, BIGT: begin
  172. X                StackPop(left);
  173. X                if left = 0 then
  174. X                    traceFlag := false
  175. X                else
  176. X                    traceFlag := true
  177. X            end {LETT, BIGT};
  178. X
  179. X            LETR, BIGR: begin
  180. X                StackPop(right);
  181. X                j := Round(right);
  182. X                if (j >= Lowest(RegisterIndexType)) and
  183. X                  (j <= Highest(RegisterIndexType)) then
  184. X                    StackPush(registers[j])
  185. X                else begin
  186. X                    Message('READ: Bad register number');
  187. X                    StackPush(0.0)
  188. X                end
  189. X            end {LETR, BIGR};
  190. X
  191. X            LETS, BIGS: begin
  192. X                StackPop(right);
  193. X                StackPop(left);
  194. X                j := Round(right);
  195. X                if (j >= Lowest(RegisterIndexType)) and
  196. X                  (j <= Highest(RegisterIndexType)) then
  197. X                    registers[j] := left
  198. X                else
  199. X                    Message('SAVE: Bad register number');
  200. X            end {LETR, BIGR}
  201. X
  202. X            otherwise begin
  203. X                PutCF(NEWLINE, STDERR);
  204. X                PutCF(SQUOTE, STDERR);
  205. X                PutStr(arg, STDERR);
  206. X                Message('''is illegal input.');
  207. X            end {otherwise}
  208. X
  209. X        end {case}
  210. X
  211. X    end {if};
  212. X
  213. Xend {Calculate};
  214. X%page
  215. Xvar
  216. X    lin: StringType;
  217. X    arg: StringType;
  218. X    lineIndex, nextLineIndex: 0..MAXSTR;
  219. X    argNumber: Integer;
  220. X    notDone: Boolean;
  221. X
  222. Xbegin
  223. X    ToolInit;
  224. X    stackPointer := 0;
  225. X    notDone := true;
  226. X    if NArgs> 0 then begin
  227. X        argNumber := 1;
  228. X        while notDone and GetArg(argNumber, lin, MAXSTR) do begin
  229. X        /*  PutDec(argNumber, 1); PutC(BLANK);
  230. X            PutStr(lin, STDOUT);
  231. X            PutC(NEWLINE);  */
  232. X            notDone := Calculate(lin);
  233. X            argNumber := argNumber + 1
  234. X        end {while}
  235. X    end
  236. X    else begin
  237. X        MPutStr('Desk Calculator V0.00 (type H for help)$N$E', STDOUT);
  238. X        while notDone and GetLine(lin, STDIN, MAXSTR) do begin
  239. X            lineIndex := 1;
  240. X            nextLineIndex := GetWord(lin, lineIndex, arg);
  241. X            while notDone and (nextLineIndex > 0) do begin
  242. X                notDone := Calculate(arg);
  243. X                lineIndex := nextLineIndex;
  244. X                nextLineIndex := GetWord(lin, lineIndex, arg)
  245. X            end {while}
  246. X        end {while}
  247. X    end {if}
  248. Xend.
  249. /
  250. echo 'x - fontinit.B'
  251. sed 's/^X//' > fontinit.B << '/'
  252. X{'d'}
  253. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  254. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  255. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  256. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  257. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  258. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  259. X        '0000000000000000'B,'0000000000000000'B,'0001111111000000'B,
  260. X        '0000000000000000'B,'0001111110000000'B,'0001111111100000'B,
  261. X        '0000000000000000'B,'0001111111000000'B,'0000110001100000'B,
  262. X        '0001111100000000'B,'0000100011000000'B,'0000110001100000'B,
  263. X        '0000100010000000'B,'0000100011000000'B,'0000110001100000'B,
  264. X        '0000100010000000'B,'0000100011000000'B,'0000110001100000'B,
  265. X        '0000100010000000'B,'0001111111000000'B,'0001111111100000'B,
  266. X        '0001111100000000'B,'0001111110000000'B,'0001111111000000'B,
  267. X{'e'}
  268. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  269. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  270. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  271. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  272. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  273. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  274. X        '0000000000000000'B,'0000000000000000'B,'0001111111100000'B,
  275. X        '0000000000000000'B,'0001111111000000'B,'0001111111100000'B,
  276. X        '0000000000000000'B,'0001111111000000'B,'0001100000000000'B,
  277. X        '0001111110000000'B,'0001100000000000'B,'0001111110000000'B,
  278. X        '0001000000000000'B,'0001111100000000'B,'0001111110000000'B,
  279. X        '0001111000000000'B,'0001100000000000'B,'0001100000000000'B,
  280. X        '0001000000000000'B,'0001111111000000'B,'0001111111100000'B,
  281. X        '0001111110000000'B,'0001111111000000'B,'0001111111100000'B,
  282. X{'f'}
  283. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  284. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  285. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  286. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  287. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  288. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  289. X        '0000000000000000'B,'0000000000000000'B,'0001111111100000'B,
  290. X        '0000000000000000'B,'0001111111000000'B,'0001111111100000'B,
  291. X        '0000000000000000'B,'0001111111000000'B,'0001100000000000'B,
  292. X        '0001111110000000'B,'0001100000000000'B,'0001111110000000'B,
  293. X        '0001000000000000'B,'0001111100000000'B,'0001111110000000'B,
  294. X        '0001111000000000'B,'0001100000000000'B,'0001100000000000'B,
  295. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  296. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  297. X%PAGE
  298. X{'g'}
  299. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  300. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  301. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  302. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  303. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  304. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  305. X        '0000000000000000'B,'0000000000000000'B,'0000111111000000'B,
  306. X        '0000000000000000'B,'0000111110000000'B,'0001111111100000'B,
  307. X        '0000000000000000'B,'0001111111000000'B,'0001100001100000'B,
  308. X        '0000111110000000'B,'0001100000000000'B,'0001100000000000'B,
  309. X        '0001000000000000'B,'0001101111000000'B,'0001100111100000'B,
  310. X        '0001001110000000'B,'0001100011000000'B,'0001100001100000'B,
  311. X        '0001000010000000'B,'0001111111000000'B,'0001111111100000'B,
  312. X        '0000111100000000'B,'0000111110000000'B,'0000111111000000'B,
  313. X{'h'}
  314. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  315. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  316. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  317. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  318. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  319. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  320. X        '0000000000000000'B,'0000000000000000'B,'0001100001100000'B,
  321. X        '0000000000000000'B,'0001100011000000'B,'0001100001100000'B,
  322. X        '0000000000000000'B,'0001100011000000'B,'0001100001100000'B,
  323. X        '0001000100000000'B,'0001100011000000'B,'0001111111100000'B,
  324. X        '0001000100000000'B,'0001111111000000'B,'0001111111100000'B,
  325. X        '0001111100000000'B,'0001100011000000'B,'0001100001100000'B,
  326. X        '0001000100000000'B,'0001100011000000'B,'0001100001100000'B,
  327. X        '0001000100000000'B,'0001100011000000'B,'0001100001100000'B,
  328. X{'i'}
  329. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  330. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  331. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  332. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  333. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  334. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  335. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  336. X        '0000000000000000'B,'0001111110000000'B,'0001111110000000'B,
  337. X        '0000000000000000'B,'0001111110000000'B,'0000011000000000'B,
  338. X        '0001110000000000'B,'0000011000000000'B,'0000011000000000'B,
  339. X        '0000100000000000'B,'0000011000000000'B,'0000011000000000'B,
  340. X        '0000100000000000'B,'0000011000000000'B,'0000011000000000'B,
  341. X        '0000100000000000'B,'0001111110000000'B,'0001111110000000'B,
  342. X        '0001110000000000'B,'0001111110000000'B,'0001111110000000'B,
  343. X%PAGE
  344. X{'j'}
  345. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  346. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  347. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  348. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  349. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  350. X        '0000000000000000'B,'0000000000000000'B,'0000111111110000'B,
  351. X        '0000000000000000'B,'0000000000000000'B,'0000111111110000'B,
  352. X        '0000000000000000'B,'0000011111100000'B,'0000000110000000'B,
  353. X        '0000000000000000'B,'0000000110000000'B,'0000000110000000'B,
  354. X        '0000011100000000'B,'0000000110000000'B,'0000000110000000'B,
  355. X        '0000001000000000'B,'0000000110000000'B,'0000000110000000'B,
  356. X        '0000001000000000'B,'0001100110000000'B,'0001100110000000'B,
  357. X        '0001001000000000'B,'0001100110000000'B,'0001100110000000'B,
  358. X        '0000110000000000'B,'0000111100000000'B,'0000111100000000'B,
  359. X{'k'}
  360. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  361. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  362. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  363. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  364. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  365. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  366. X        '0000000000000000'B,'0000000000000000'B,'0001100011000000'B,
  367. X        '0000000000000000'B,'0001100011000000'B,'0001100110000000'B,
  368. X        '0000000000000000'B,'0001100110000000'B,'0001101100000000'B,
  369. X        '0001001000000000'B,'0001101100000000'B,'0001111000000000'B,
  370. X        '0001010000000000'B,'0001111000000000'B,'0001111000000000'B,
  371. X        '0001100000000000'B,'0001101100000000'B,'0001101100000000'B,
  372. X        '0001010000000000'B,'0001100110000000'B,'0001100110000000'B,
  373. X        '0001001000000000'B,'0001100011000000'B,'0001100011000000'B,
  374. X{'l'}
  375. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  376. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  377. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  378. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  379. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  380. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  381. X        '0000000000000000'B,'0000000000000000'B,'0001100000000000'B,
  382. X        '0000000000000000'B,'0001100000000000'B,'0001100000000000'B,
  383. X        '0000000000000000'B,'0001100000000000'B,'0001100000000000'B,
  384. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  385. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  386. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  387. X        '0001000000000000'B,'0001111111000000'B,'0001111111000000'B,
  388. X        '0001111000000000'B,'0001111111000000'B,'0001111111000000'B,
  389. X%PAGE
  390. X{'m'}
  391. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  392. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  393. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  394. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  395. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  396. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  397. X        '0000000000000000'B,'0000000000000000'B,'0001100000110000'B,
  398. X        '0000000000000000'B,'0001100000110000'B,'0001110001110000'B,
  399. X        '0000000000000000'B,'0001110001110000'B,'0001111011110000'B,
  400. X        '0001100110000000'B,'0001111011110000'B,'0001101110110000'B,
  401. X        '0001011010000000'B,'0001101110110000'B,'0001100100110000'B,
  402. X        '0001000010000000'B,'0001100100110000'B,'0001100000110000'B,
  403. X        '0001000010000000'B,'0001100000110000'B,'0001100000110000'B,
  404. X        '0001000010000000'B,'0001100000110000'B,'0001100000110000'B,
  405. X{'n'}
  406. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  407. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  408. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  409. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  410. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  411. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  412. X        '0000000000000000'B,'0000000000000000'B,'0001100000110000'B,
  413. X        '0000000000000000'B,'0001100001100000'B,'0001110000110000'B,
  414. X        '0000000000000000'B,'0001110001100000'B,'0001111000110000'B,
  415. X        '0001000100000000'B,'0001111001100000'B,'0001101100110000'B,
  416. X        '0001100100000000'B,'0001101101100000'B,'0001100110110000'B,
  417. X        '0001010100000000'B,'0001100111100000'B,'0001100011110000'B,
  418. X        '0001001100000000'B,'0001100011100000'B,'0001100001110000'B,
  419. X        '0001000100000000'B,'0001100001100000'B,'0001100000110000'B,
  420. X{'o'}
  421. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  422. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  423. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  424. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  425. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  426. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  427. X        '0000000000000000'B,'0000000000000000'B,'0000111111000000'B,
  428. X        '0000000000000000'B,'0000111110000000'B,'0001111111100000'B,
  429. X        '0000000000000000'B,'0001111111000000'B,'0001100001100000'B,
  430. X        '0001111100000000'B,'0001100011000000'B,'0001100001100000'B,
  431. X        '0001000100000000'B,'0001100011000000'B,'0001100001100000'B,
  432. X        '0001000100000000'B,'0001100011000000'B,'0001100001100000'B,
  433. X        '0001000100000000'B,'0001111111000000'B,'0001111111100000'B,
  434. X        '0001111100000000'B,'0000111110000000'B,'0000111111000000'B,
  435. X%PAGE
  436. X{'p'}
  437. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  438. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  439. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  440. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  441. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  442. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  443. X        '0000000000000000'B,'0000000000000000'B,'0001111111000000'B,
  444. X        '0000000000000000'B,'0001111110000000'B,'0001111111100000'B,
  445. X        '0000000000000000'B,'0001111111000000'B,'0001100001100000'B,
  446. X        '0001111000000000'B,'0001100011000000'B,'0001111111100000'B,
  447. X        '0001000100000000'B,'0001111110000000'B,'0001111111000000'B,
  448. X        '0001111000000000'B,'0001100000000000'B,'0001100000000000'B,
  449. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  450. X        '0001000000000000'B,'0001100000000000'B,'0001100000000000'B,
  451. X{'q'}
  452. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  453. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  454. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  455. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  456. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  457. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  458. X        '0000000000000000'B,'0000000000000000'B,'0000111111000000'B,
  459. X        '0000000000000000'B,'0000111110000000'B,'0001111111100000'B,
  460. X        '0000000000000000'B,'0001100011000000'B,'0001100001100000'B,
  461. X        '0000111100000000'B,'0001100011000000'B,'0001100001100000'B,
  462. X        '0001000010000000'B,'0001101011000000'B,'0001101101100000'B,
  463. X        '0001001010000000'B,'0001100111000000'B,'0001100111000000'B,
  464. X        '0001000100000000'B,'0001100010000000'B,'0001111111000000'B,
  465. X        '0000111010000000'B,'0000111101000000'B,'0000111101100000'B,
  466. X{'r'}
  467. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  468. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  469. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  470. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  471. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  472. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  473. X        '0000000000000000'B,'0000000000000000'B,'0001111111000000'B,
  474. X        '0000000000000000'B,'0001111110000000'B,'0001111111100000'B,
  475. X        '0000000000000000'B,'0001111111000000'B,'0001100001100000'B,
  476. X        '0001111000000000'B,'0001100011000000'B,'0001111111100000'B,
  477. X        '0001000100000000'B,'0001111110000000'B,'0001111111000000'B,
  478. X        '0001111000000000'B,'0001101100000000'B,'0001100110000000'B,
  479. X        '0001001000000000'B,'0001100110000000'B,'0001100011000000'B,
  480. X        '0001000100000000'B,'0001100011000000'B,'0001100001100000'B,
  481. X%PAGE
  482. X{'s'}
  483. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  484. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  485. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  486. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  487. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  488. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  489. X        '0000000000000000'B,'0000000000000000'B,'0000111111000000'B,
  490. X        '0000000000000000'B,'0000111111000000'B,'0001111111100000'B,
  491. X        '0000000000000000'B,'0001100001100000'B,'0001100000100000'B,
  492. X        '0001111100000000'B,'0001100000000000'B,'0000111100000000'B,
  493. X        '0001000000000000'B,'0000111111000000'B,'0000001111000000'B,
  494. X        '0001111100000000'B,'0000000001100000'B,'0001000001100000'B,
  495. X        '0000000100000000'B,'0001100001100000'B,'0001111111100000'B,
  496. X        '0001111100000000'B,'0000111111000000'B,'0000111111000000'B,
  497. X{'t'}
  498. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  499. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  500. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  501. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  502. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  503. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  504. X        '0000000000000000'B,'0000000000000000'B,'0001111111100000'B,
  505. X        '0000000000000000'B,'0001111111100000'B,'0001111111100000'B,
  506. X        '0000000000000000'B,'0001111111100000'B,'0000001100000000'B,
  507. X        '0001111100000000'B,'0000001100000000'B,'0000001100000000'B,
  508. X        '0000010000000000'B,'0000001100000000'B,'0000001100000000'B,
  509. X        '0000010000000000'B,'0000001100000000'B,'0000001100000000'B,
  510. X        '0000010000000000'B,'0000001100000000'B,'0000001100000000'B,
  511. X        '0000010000000000'B,'0000001100000000'B,'0000001100000000'B,
  512. X{'u'}
  513. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  514. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  515. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  516. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  517. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  518. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  519. X        '0000000000000000'B,'0000000000000000'B,'0001100001100000'B,
  520. X        '0000000000000000'B,'0001100001100000'B,'0001100001100000'B,
  521. X        '0000000000000000'B,'0001100001100000'B,'0001100001100000'B,
  522. X        '0001000100000000'B,'0001100001100000'B,'0001100001100000'B,
  523. X        '0001000100000000'B,'0001100001100000'B,'0001100001100000'B,
  524. X        '0001000100000000'B,'0001100001100000'B,'0001100001100000'B,
  525. X        '0001000100000000'B,'0001111111100000'B,'0001111111100000'B,
  526. X        '0000111000000000'B,'0000111111000000'B,'0000111111000000'B,
  527. X%PAGE
  528. X{'v'}
  529. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  530. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  531. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  532. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  533. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  534. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  535. X        '0000000000000000'B,'0000000000000000'B,'0001100000011000'B,
  536. X        '0000000000000000'B,'0001100001100000'B,'0001100000011000'B,
  537. X        '0000000000000000'B,'0001100001100000'B,'0001100000011000'B,
  538. X        '0001000100000000'B,'0001100001100000'B,'0001100000011000'B,
  539. X        '0001000100000000'B,'0001100001100000'B,'0000110000110000'B,
  540. X        '0001000100000000'B,'0000110011000000'B,'0000011001100000'B,
  541. X        '0000101000000000'B,'0000011110000000'B,'0000001111000000'B,
  542. X        '0000010000000000'B,'0000001100000000'B,'0000000110000000'B,
  543. X{'w'}
  544. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  545. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  546. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  547. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  548. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  549. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  550. X        '0000000000000000'B,'0000000000000000'B,'0001100000011000'B,
  551. X        '0000000000000000'B,'0001100000011000'B,'0001100000011000'B,
  552. X        '0000000000000000'B,'0001100000011000'B,'0001100000011000'B,
  553. X        '0001000001000000'B,'0001100000011000'B,'0001100000011000'B,
  554. X        '0001000001000000'B,'0001100000011000'B,'0001100000011000'B,
  555. X        '0001001001000000'B,'0001100110011000'B,'0001100110011000'B,
  556. X        '0000111110000000'B,'0000111111110000'B,'0000111111110000'B,
  557. X        '0000010100000000'B,'0000011001100000'B,'0000011001100000'B,
  558. X{'x'}
  559. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  560. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  561. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  562. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  563. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  564. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  565. X        '0000000000000000'B,'0000000000000000'B,'0001100000110000'B,
  566. X        '0000000000000000'B,'0001100001100000'B,'0000110001100000'B,
  567. X        '0000000000000000'B,'0000110011000000'B,'0000011011000000'B,
  568. X        '0001000100000000'B,'0000011110000000'B,'0000001110000000'B,
  569. X        '0000101000000000'B,'0000001100000000'B,'0000001110000000'B,
  570. X        '0000010000000000'B,'0000011110000000'B,'0000011011000000'B,
  571. X        '0000101000000000'B,'0000110011000000'B,'0000110001100000'B,
  572. X        '0001000100000000'B,'0001100001100000'B,'0001100000110000'B,
  573. X%PAGE
  574. X{'y'}
  575. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  576. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  577. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  578. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  579. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  580. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  581. X        '0000000000000000'B,'0000000000000000'B,'0001100000011000'B,
  582. X        '0000000000000000'B,'0001100000011000'B,'0000110000110000'B,
  583. X        '0000000000000000'B,'0000110000110000'B,'0000011001100000'B,
  584. X        '0001000100000000'B,'0000011001100000'B,'0000001111000000'B,
  585. X        '0000101000000000'B,'0000001111000000'B,'0000000110000000'B,
  586. X        '0000010000000000'B,'0000000110000000'B,'0000000110000000'B,
  587. X        '0000010000000000'B,'0000000110000000'B,'0000000110000000'B,
  588. X        '0000010000000000'B,'0000000110000000'B,'0000000110000000'B,
  589. X{'z'}
  590. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  591. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  592. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  593. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  594. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  595. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  596. X        '0000000000000000'B,'0000000000000000'B,'0001111111000000'B,
  597. X        '0000000000000000'B,'0001111110000000'B,'0001111111000000'B,
  598. X        '0000000000000000'B,'0001111110000000'B,'0000000110000000'B,
  599. X        '0001111100000000'B,'0000001100000000'B,'0000001100000000'B,
  600. X        '0000001000000000'B,'0000011000000000'B,'0000011000000000'B,
  601. X        '0000010000000000'B,'0000110000000000'B,'0000110000000000'B,
  602. X        '0000100000000000'B,'0001111110000000'B,'0001111111000000'B,
  603. X        '0001111100000000'B,'0001111110000000'B,'0001111111000000'B,
  604. X%PAGE
  605. X{'0'}
  606. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  607. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  608. X        '0000000000000000'B,'0000111111000000'B,'0001110000000111'B,
  609. X        '0000000000000000'B,'0001111111100000'B,'0001110000000111'B,
  610. X        '0000111111000000'B,'0001100001100000'B,'0001110000000111'B,
  611. X        '0001111111100000'B,'0001100001100000'B,'0001110000000111'B,
  612. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  613. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  614. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  615. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  616. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  617. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  618. X        '0001111111100000'B,'0001111111100000'B,'0000111111111110'B,
  619. X        '0000111111000000'B,'0000111111000000'B,'0000011111111100'B,
  620. X{'1'}
  621. X        '0000000000000000'B,'0000000000000000'B,'0000011100000000'B,
  622. X        '0000000000000000'B,'0000000000000000'B,'0000111100000000'B,
  623. X        '0000000000000000'B,'0000011000000000'B,'0001111100000000'B,
  624. X        '0000000000000000'B,'0000111000000000'B,'0000011100000000'B,
  625. X        '0000011000000000'B,'0001111000000000'B,'0000011100000000'B,
  626. X        '0000111000000000'B,'0000011000000000'B,'0000011100000000'B,
  627. X        '0001111000000000'B,'0000011000000000'B,'0000011100000000'B,
  628. X        '0000011000000000'B,'0000011000000000'B,'0000011100000000'B,
  629. X        '0000011000000000'B,'0000011000000000'B,'0000011100000000'B,
  630. X        '0000011000000000'B,'0000011000000000'B,'0000011100000000'B,
  631. X        '0000011000000000'B,'0000011000000000'B,'0000011100000000'B,
  632. X        '0000011000000000'B,'0000011000000000'B,'0000011100000000'B,
  633. X        '0001111110000000'B,'0001111110000000'B,'0001111111000000'B,
  634. X        '0001111110000000'B,'0001111110000000'B,'0001111111000000'B,
  635. X{'2'}
  636. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  637. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  638. X        '0000000000000000'B,'0000011111100000'B,'0001110000000111'B,
  639. X        '0000000000000000'B,'0000111111110000'B,'0001110000000111'B,
  640. X        '0000111100000000'B,'0001100000110000'B,'0000000000000111'B,
  641. X        '0001111110000000'B,'0000000000110000'B,'0000000000000111'B,
  642. X        '0001100011000000'B,'0000000001100000'B,'0000000000111110'B,
  643. X        '0000000011000000'B,'0000000011000000'B,'0000000011111000'B,
  644. X        '0000000110000000'B,'0000000110000000'B,'0000001110000000'B,
  645. X        '0000001100000000'B,'0000001100000000'B,'0000011100000000'B,
  646. X        '0000011000000000'B,'0000011000000000'B,'0000111000000000'B,
  647. X        '0000110000000000'B,'0000110000000000'B,'0001110000000000'B,
  648. X        '0001111111000000'B,'0001111111110000'B,'0001111111111111'B,
  649. X        '0001111111000000'B,'0001111111110000'B,'0001111111111111'B,
  650. X%PAGE
  651. X{'3'}
  652. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  653. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  654. X        '0000000000000000'B,'0000011110000000'B,'0001110000000111'B,
  655. X        '0000000000000000'B,'0000111111000000'B,'0001110000000111'B,
  656. X        '0000011110000000'B,'0001100001100000'B,'0000000000000111'B,
  657. X        '0000111111000000'B,'0000000001100000'B,'0000000000000111'B,
  658. X        '0001100001100000'B,'0000000001100000'B,'0000000011111110'B,
  659. X        '0000000001100000'B,'0000011111000000'B,'0000000011111110'B,
  660. X        '0000011111000000'B,'0000011111000000'B,'0000000000000111'B,
  661. X        '0000011111000000'B,'0000000001100000'B,'0000000000000111'B,
  662. X        '0000000001100000'B,'0000000001100000'B,'0001110000000111'B,
  663. X        '0001100001100000'B,'0001100001100000'B,'0001110000000111'B,
  664. X        '0000111111000000'B,'0000111111000000'B,'0000111111111110'B,
  665. X        '0000011110000000'B,'0000011110000000'B,'0000011111111100'B,
  666. X{'4'}
  667. X        '0000000000000000'B,'0000000000000000'B,'0000000000000100'B,
  668. X        '0000000000000000'B,'0000000000000000'B,'0000000000001100'B,
  669. X        '0000000000000000'B,'0000000001100000'B,'0000000000011100'B,
  670. X        '0000000000000000'B,'0000000011100000'B,'0000000000111100'B,
  671. X        '0000000011000000'B,'0000000111100000'B,'0000000001111100'B,
  672. X        '0000000111000000'B,'0000001101100000'B,'0000000011111100'B,
  673. X        '0000001111000000'B,'0000011001100000'B,'0000000111011100'B,
  674. X        '0000011011000000'B,'0000110001100000'B,'0000001110011100'B,
  675. X        '0000110011000000'B,'0001111111111000'B,'0000011100011100'B,
  676. X        '0001111111110000'B,'0001111111111000'B,'0000111000011100'B,
  677. X        '0001111111110000'B,'0000000001100000'B,'0001111111111111'B,
  678. X        '0000000011000000'B,'0000000001100000'B,'0001111111111111'B,
  679. X        '0000000011000000'B,'0000000001100000'B,'0000000000011100'B,
  680. X        '0000000011000000'B,'0000000001100000'B,'0000000000011100'B,
  681. X{'5'}
  682. X        '0000000000000000'B,'0000000000000000'B,'0001111111111111'B,
  683. X        '0000000000000000'B,'0000000000000000'B,'0001111111111111'B,
  684. X        '0000000000000000'B,'0001111111110000'B,'0001110000000000'B,
  685. X        '0000000000000000'B,'0001111111110000'B,'0001110000000000'B,
  686. X        '0001111111100000'B,'0001100000000000'B,'0001111111111100'B,
  687. X        '0001111111100000'B,'0001100000000000'B,'0001111111111110'B,
  688. X        '0001100000000000'B,'0001111111100000'B,'0000000000000111'B,
  689. X        '0001111111000000'B,'0001111111110000'B,'0000000000000111'B,
  690. X        '0001111111100000'B,'0000000000110000'B,'0000000000000111'B,
  691. X        '0000000001100000'B,'0000000000110000'B,'0000000000000111'B,
  692. X        '0000000001100000'B,'0000000000110000'B,'0001110000000111'B,
  693. X        '0001100001100000'B,'0001100000110000'B,'0001110000000111'B,
  694. X        '0001111111000000'B,'0001111111110000'B,'0000111111111110'B,
  695. X        '0000111110000000'B,'0000111111100000'B,'0000011111111100'B,
  696. X%PAGE
  697. X{'6'}
  698. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  699. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  700. X        '0000000000000000'B,'0000111111111000'B,'0001110000000111'B,
  701. X        '0000000000000000'B,'0001111111111100'B,'0001110000000111'B,
  702. X        '0000111111000000'B,'0001100000001100'B,'0001110000000000'B,
  703. X        '0001111111100000'B,'0001100000000000'B,'0001110000000000'B,
  704. X        '0001100001100000'B,'0001100000000000'B,'0001111111111100'B,
  705. X        '0001100000000000'B,'0001111111111000'B,'0001111111111110'B,
  706. X        '0001111111000000'B,'0001111111111100'B,'0001110000000111'B,
  707. X        '0001111111100000'B,'0001100000001100'B,'0001110000000111'B,
  708. X        '0001100001100000'B,'0001100000001100'B,'0001110000000111'B,
  709. X        '0001100001100000'B,'0001100000001100'B,'0001110000000111'B,
  710. X        '0001111111100000'B,'0001111111111100'B,'0000111111111110'B,
  711. X        '0000111111000000'B,'0000111111111000'B,'0000011111111100'B,
  712. X{'7'}
  713. X        '0000000000000000'B,'0000000000000000'B,'0001111111111111'B,
  714. X        '0000000000000000'B,'0000000000000000'B,'0001111111111111'B,
  715. X        '0000000000000000'B,'0001111111111100'B,'0000000000000111'B,
  716. X        '0000000000000000'B,'0001111111111100'B,'0000000000001110'B,
  717. X        '0001111111110000'B,'0000000000011000'B,'0000000000011100'B,
  718. X        '0001111111110000'B,'0000000000110000'B,'0000000000111000'B,
  719. X        '0000000001100000'B,'0000000001100000'B,'0000000001110000'B,
  720. X        '0000000011000000'B,'0000000011000000'B,'0000000011100000'B,
  721. X        '0000000110000000'B,'0000000110000000'B,'0000000111000000'B,
  722. X        '0000001100000000'B,'0000001100000000'B,'0000001110000000'B,
  723. X        '0000011000000000'B,'0000011000000000'B,'0000011100000000'B,
  724. X        '0000110000000000'B,'0000110000000000'B,'0000111000000000'B,
  725. X        '0001100000000000'B,'0001100000000000'B,'0001110000000000'B,
  726. X        '0001100000000000'B,'0001100000000000'B,'0001110000000000'B,
  727. X{'8'}
  728. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  729. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  730. X        '0000000000000000'B,'0000111111111000'B,'0001110000000111'B,
  731. X        '0000000000000000'B,'0001111111111100'B,'0001110000000111'B,
  732. X        '0000111111100000'B,'0001100000001100'B,'0001110000000111'B,
  733. X        '0001111111110000'B,'0001100000001100'B,'0001110000000111'B,
  734. X        '0001100000110000'B,'0001100000001100'B,'0000011111111100'B,
  735. X        '0001100000110000'B,'0000111111111000'B,'0000011111111100'B,
  736. X        '0000111111100000'B,'0000111111111000'B,'0001110000000111'B,
  737. X        '0000111111100000'B,'0001100000001100'B,'0001110000000111'B,
  738. X        '0001100000110000'B,'0001100000001100'B,'0001110000000111'B,
  739. X        '0001100000110000'B,'0001100000001100'B,'0001110000000111'B,
  740. X        '0001111111110000'B,'0001111111111100'B,'0000111111111110'B,
  741. X        '0000111111100000'B,'0000111111111000'B,'0000011111111100'B,
  742. X{'9'}
  743. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  744. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  745. X        '0000000000000000'B,'0000111111111000'B,'0001110000000111'B,
  746. X        '0000000000000000'B,'0001111111111100'B,'0001110000000111'B,
  747. X        '0000111111100000'B,'0001100000001100'B,'0001110000000111'B,
  748. X        '0001111111110000'B,'0001100000001100'B,'0001110000000111'B,
  749. X        '0001100000110000'B,'0001100000001100'B,'0000111111111111'B,
  750. X        '0001100000110000'B,'0001111111111100'B,'0000011111111111'B,
  751. X        '0001111111110000'B,'0000111111111100'B,'0000000000000111'B,
  752. X        '0000111111110000'B,'0000000000001100'B,'0000000000000111'B,
  753. X        '0000000000110000'B,'0000000000001100'B,'0001110000000111'B,
  754. X        '0001100000110000'B,'0001100000001100'B,'0001110000000111'B,
  755. X        '0001111111110000'B,'0001111111111100'B,'0000111111111110'B,
  756. X        '0000111111100000'B,'0000111111111000'B,'0000011111111100'B,
  757. X%PAGE
  758. X{'.'}
  759. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  760. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  761. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  762. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  763. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  764. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  765. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  766. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  767. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  768. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  769. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  770. X        '0001111000000000'B,'0001111100000000'B,'0001111110000000'B,
  771. X        '0001111000000000'B,'0001111100000000'B,'0001111110000000'B,
  772. X        '0001111000000000'B,'0001111100000000'B,'0001111110000000'B,
  773. X{':'}
  774. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  775. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  776. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  777. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  778. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  779. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  780. X        '0001111000000000'B,'0001111100000000'B,'0000000000000000'B,
  781. X        '0001111000000000'B,'0001111100000000'B,'0001111110000000'B,
  782. X        '0001111000000000'B,'0001111100000000'B,'0001111110000000'B,
  783. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  784. X        '0000000000000000'B,'0000000000000000'B,'0001111110000000'B,
  785. X        '0001111000000000'B,'0001111100000000'B,'0000000000000000'B,
  786. X        '0001111000000000'B,'0001111100000000'B,'0000000000000000'B,
  787. X        '0001111000000000'B,'0001111100000000'B,'0000000000000000'B,
  788. X{'/'}
  789. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  790. X        '0000000000000000'B,'0000000000000000'B,'0000000000000000'B,
  791. X        '0000000000000000'B,'0000000011000000'B,'0000000000000000'B,
  792. X        '0000000000000000'B,'0000000011000000'B,'0000000000000111'B,
  793. X        '0000000110000000'B,'0000000110000000'B,'0000000000001110'B,
  794. X        '0000000110000000'B,'0000000110000000'B,'0000000000011100'B,
  795. X        '0000001100000000'B,'0000001100000000'B,'0000000000111000'B,
  796. X        '0000001100000000'B,'0000001100000000'B,'0000000001110000'B,
  797. X        '0000001100000000'B,'0000001100000000'B,'0000000011100000'B,
  798. X        '0000011000000000'B,'0000011000000000'B,'0000000111000000'B,
  799. X        '0000011000000000'B,'0000011000000000'B,'0000001110000000'B,
  800. X        '0000110000000000'B,'0000110000000000'B,'0000011100000000'B,
  801. X        '0001100000000000'B,'0001100000000000'B,'0000111000000000'B,
  802. X        '0001100000000000'B,'0001100000000000'B,'0001110000000000'B,
  803. X%PAGE
  804. X{'$'}
  805. X        '0000000000000000'B,'0000000000000000'B,'0000001111110000'B,
  806. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  807. X        '0000000000000000'B,'0000000110000000'B,'0001110011100111'B,
  808. X        '0000000000000000'B,'0000111111110000'B,'0001110011100111'B,
  809. X        '0000001100000000'B,'0001111111111000'B,'0000111011100000'B,
  810. X        '0000111111000000'B,'0001100110011000'B,'0000011111100000'B,
  811. X        '0001101101100000'B,'0001100110000000'B,'0000000111100000'B,
  812. X        '0001101100000000'B,'0001111111110000'B,'0000000011110000'B,
  813. X        '0001111111000000'B,'0000111111111000'B,'0000000011111100'B,
  814. X        '0000111111100000'B,'0000000110011000'B,'0000000011101110'B,
  815. X        '0000001101100000'B,'0001100110011000'B,'0001110011100111'B,
  816. X        '0001101101100000'B,'0001111111111000'B,'0001110011100111'B,
  817. X        '0000111111000000'B,'0000111111110000'B,'0000111111111110'B,
  818. X        '0000001100000000'B,'0000000110000000'B,'0000001111110000'B,
  819. X{'@'}
  820. X        '0000000000000000'B,'0000000000000000'B,'0000011111111100'B,
  821. X        '0000000000000000'B,'0000000000000000'B,'0000111111111110'B,
  822. X        '0000000000000000'B,'0000111111111000'B,'0001110000000111'B,
  823. X        '0000000000000000'B,'0001111111111100'B,'0001110000000111'B,
  824. X        '0000111111100000'B,'0001100000001100'B,'0001110001100111'B,
  825. X        '0001111111110000'B,'0001100011111100'B,'0001110011110111'B,
  826. X        '0001100000110000'B,'0001100110001100'B,'0001110110010111'B,
  827. X        '0001100111110000'B,'0001100110001100'B,'0001110110011110'B,
  828. X        '0001101100110000'B,'0001100111111100'B,'0001110011111100'B,
  829. X        '0001101111110000'B,'0001100011111000'B,'0001110001100000'B,
  830. X        '0001100111100000'B,'0001100000000000'B,'0001110000000000'B,
  831. X        '0001100000010000'B,'0001100000001100'B,'0001110000000001'B,
  832. X        '0001111111110000'B,'0001111111111100'B,'0000111111111110'B);
  833. X%PAGE
  834. X    fontWidth := FontWidthType (
  835. X    06,06,06,   {' '}
  836. X    12,14,16,   {'A'}
  837. X    12,14,16,   {'B'}
  838. X    12,14,16,   {'C'}
  839. X    12,14,16,   {'D'}
  840. X    12,14,16,   {'E'}
  841. X    12,14,16,   {'F'}
  842. X    12,14,16,   {'G'}
  843. X    12,14,16,   {'H'}
  844. X    09,09,16,   {'I'}
  845. X    10,12,16,   {'J'}
  846. X    11,12,16,   {'K'}
  847. X    12,14,16,   {'L'}
  848. X    13,15,16,   {'M'}
  849. X    13,15,16,   {'N'}
  850. X    12,14,16,   {'O'}
  851. X    12,14,16,   {'P'}
  852. X    12,14,16,   {'Q'}
  853. X    12,14,16,   {'R'}
  854. X    12,13,16,   {'S'}
  855. X    13,15,16,   {'T'}
  856. X    12,14,16,   {'U'}
  857. X    13,15,16,   {'V'}
  858. X    12,14,16,   {'W'}
  859. X    14,16,16,   {'X'}
  860. X    15,16,16,   {'Y'}
  861. X    12,14,16,   {'Z'}
  862. X    09,10,11,   {'a'}
  863. X    09,10,11,   {'b'}
  864. X    09,10,11,   {'c'}
  865. X    09,10,11,   {'d'}
  866. X    09,10,11,   {'e'}
  867. X    09,10,11,   {'f'}
  868. X    09,10,11,   {'g'}
  869. X    08,10,11,   {'h'}
  870. X    06,09,09,   {'i'}
  871. X    07,09,09,   {'j'}
  872. X    07,10,10,   {'k'}
  873. X    07,10,10,   {'l'}
  874. X    09,12,12,   {'m'}
  875. X    08,11,12,   {'n'}
  876. X    08,10,11,   {'o'}
  877. X    08,10,11,   {'p'}
  878. X    09,10,11,   {'q'}
  879. X    08,10,11,   {'r'}
  880. X    08,10,11,   {'s'}
  881. X    08,11,11,   {'t'}
  882. X    08,11,11,   {'u'}
  883. X    08,11,13,   {'v'}
  884. X    10,13,13,   {'w'}
  885. X    08,11,12,   {'x'}
  886. X    08,11,13,   {'y'}
  887. X    08,09,10,   {'z'}
  888. X    11,11,16,   {'0'}
  889. X    09,09,16,   {'1'}
  890. X    10,11,16,   {'2'}
  891. X    11,11,16,   {'3'}
  892. X    12,15,16,   {'4'}
  893. X    11,12,16,   {'5'}
  894. X    11,14,16,   {'6'}
  895. X    12,14,16,   {'7'}
  896. X    12,14,16,   {'8'}
  897. X    12,14,16,   {'9'}
  898. X    07,08,16,   {'.'}
  899. X    07,08,16,   {':'}
  900. X    09,10,16,   {'/'}
  901. X    11,13,16,   {'$'}
  902. X    12,14,16    {'@'}
  903. X    );
  904. X{ Initialize font descriptions }
  905. Xprocedure FontInit;
  906. Xbegin
  907. X    CvtSST(' ABCDEFGHIJKLMNOPQRSTUVWXYZ'||
  908. X           'abcdefghijklmnopqrstuvwxyz'||
  909. X           '0123456789.:/$@', transArray);
  910. X    fontFirst[0] := 4;
  911. X    fontFirst[1] := 2;
  912. X    fontFirst[2] := 0;
  913. Xend;
  914. /
  915. echo 'x - hashfind.pascal'
  916. sed 's/^X//' > hashfind.pascal << '/'
  917. X{
  918. X    Copyright (c) 1981
  919. X    By:    Bell Telephone Laboratories, Inc. and
  920. X        Whitesmiths, Ltd.,
  921. X
  922. X    This software is derived from the book
  923. X        "Software Tools In Pascal", by
  924. X        Brian W. Kernighan and P.J. Plauger
  925. X        Addison-Wesley, 1981
  926. X        ISBN 0-201-10342-7
  927. X
  928. X    Right is hereby granted to freely distribute or duplicate this
  929. X    software, providing distribution or duplication is not for profit
  930. X    or other commerical gain and that this copyright notice remains 
  931. X    intact.
  932. X}
  933. X{ HashFind -- find name in hash table }
  934. Xsegment HashFind;
  935. X%include swtools
  936. X%include defdef
  937. X%include defref
  938. X%include defproc
  939. Xfunction HashFind;
  940. Xvar
  941. X    p: NDPtr;
  942. X    tempName: StringType;
  943. X    found: Boolean;
  944. Xbegin
  945. X    found := false;
  946. X    p := hashTab[Hash(name)];
  947. X    while (not found) and (p <> nil) do begin
  948. X        CSCopy(NDTable, p->.name, tempName);
  949. X        if (Equal(name, tempName)) then
  950. X            found := true
  951. X        else
  952. X            p := p->.nextPtr
  953. X    end;
  954. X    HashFind := p
  955. Xend;
  956. /
  957. echo 'Part 01 of pack.out complete.'
  958. exit
  959.  
  960.  
  961.