1 /*
2  *  SetCb - sets the ascii values in decimal,hex or octal
3  *
4  *  RCS:
5  *      $Revision$
6  *      $Date$
7  *
8  *  Description:
9  *      text
10  *
11  *  Input Parameters:
12  *      type    identifier  description
13  *
14  *      text
15  *
16  *  Output Parameters:
17  *      type    identifier  description
18  *
19  *      text
20  *
21  *  Return Values:
22  *      value   description
23  *
24  *  Side Effects:
25  *      text
26  *
27  *  Limitations and Comments:
28  *      text
29  *
30  *  Development History:
31  *      who                  when       why
32  *      MA_Muquit@fccc.edu   19-Jun-96  first cut
33  */
34 
35 
36 #include "xhead.h"
37 #include "mxascii.h"
38 
39 
40 static char *ascii_values[132] =
41 {
42 "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
43 "BS ", "HT ", "LF ", "VT ", "FF ", "CR ", "SO ", "SI ",
44 "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYC", "ETB",
45 "CAN", "EM ", "SUB", "ESC", "FS ", "GS ", "RS ", "US ",
46 "SPA", "!  ", "\"  ", "#  ", "$  ", "%  ", "&  ", "'  ",
47 "(  ", ")  ", "*  ", "+  ", ",  ", "-  ", ".  ", "/  ",
48 "0  ", "1  ", "2  ", "3  ", "4  ", "5  ", "6  ", "7  ",
49 "8  ", "9  ", ":  ", ";  ", "<  ", "=  ", ">  ", "?  ",
50 "@  ", "A  ", "B  ", "C  ", "D  ", "E  ", "F  ", "G  ",
51 "H  ", "I  ", "J  ", "K  ", "L  ", "M  ", "N  ", "O  ",
52 "P  ", "Q  ", "R  ", "S  ", "T  ", "U  ", "V  ", "W  ",
53 "X  ", "Y  ", "Z  ", "[  ", "\\  ", "]  ", "^  ", "_  ",
54 "`  ", "a  ", "b  ", "c  ", "d  ", "e  ", "f  ", "g  ",
55 "h  ", "i  ", "j  ", "k  ", "l  ", "m  ", "n  ", "o  ",
56 "p  ", "q  ", "r  ", "s  ", "t  ", "u  ", "v  ", "w  ",
57 "x  ", "y  ", "z  ", "{  ", "|  ", "}  ", "~  ", "DEL",
58 "   ", "   ", "   ", "   "
59 };
60 
61 static char *decimal_values[132] =
62 {
63 "   0","   1","   2","   3","   4","   5","   6","   7",
64 "   8","   9","  10","  11","  12","  13","  14","  15",
65 "  16","  17","  18","  19","  20","  21","  22","  23",
66 "  24","  25","  26","  27","  28","  29","  30","  31",
67 "  32","  33","  34","  35","  36","  37","  38","  39",
68 "  40","  41","  42","  43","  44","  45","  46","  47",
69 "  48","  49","  50","  51","  52","  53","  54","  55",
70 "  56","  57","  58","  59","  60","  61","  62","  63",
71 "  64","  65","  66","  67","  68","  69","  70","  71",
72 "  72","  73","  74","  75","  76","  77","  78","  79",
73 "  80","  81","  82","  83","  84","  85","  86","  87",
74 "  88","  89","  90","  91","  92","  93","  94","  95",
75 "  96","  97","  98","  99"," 100"," 101"," 102"," 103",
76 " 104"," 105"," 106"," 107"," 108"," 109"," 110"," 111",
77 " 112"," 113"," 114"," 115"," 116"," 117"," 118"," 119",
78 " 120"," 121"," 122"," 123"," 124"," 125"," 126"," 127",
79 "    ","    ","    ","    "
80 };
81 
82 static char *hex_values [132] =
83 {
84 "0x00","0x01","0x02","0x03","0x04","0x05","0x06","0x07",
85 "0x08","0x09","0x0A","0x0B","0x0C","0x0D","0x0E","0x0F",
86 "0x10","0x11","0x12","0x13","0x14","0x15","0x16","0x17",
87 "0x18","0x19","0x1A","0x1B","0x1C","0x1D","0x1E","0x1F",
88 "0x20","0x21","0x22","0x23","0x24","0x25","0x26","0x27",
89 "0x28","0x29","0x2A","0x2B","0x2C","0x2D","0x2E","0x2F",
90 "0x30","0x31","0x32","0x33","0x34","0x35","0x36","0x37",
91 "0x38","0x39","0x3A","0x3B","0x3C","0x3D","0x3E","0x3F",
92 "0x40","0x41","0x42","0x43","0x44","0x45","0x46","0x47",
93 "0x48","0x49","0x4A","0x4B","0x4C","0x4D","0x4E","0x4F",
94 "0x50","0x51","0x52","0x53","0x54","0x55","0x56","0x57",
95 "0x58","0x59","0x5A","0x5B","0x5C","0x5D","0x5E","0x5F",
96 "0x60","0x61","0x62","0x63","0x64","0x65","0x66","0x67",
97 "0x68","0x69","0x6A","0x6B","0x6C","0x6D","0x6E","0x6F",
98 "0x70","0x71","0x72","0x73","0x74","0x75","0x76","0x77",
99 "0x78","0x79","0x7A","0x7B","0x7C","0x7D","0x7E","0x7F",
100 "    ","    ","    ","    "
101 };
102 
103 static char *oct_values[132] =
104 {
105 " 000", " 001", " 002", " 003", " 004", " 005", " 006", " 007",
106 " 010", " 011", " 012", " 013", " 014", " 015", " 016", " 017",
107 " 020", " 021", " 022", " 023", " 024", " 025", " 026", " 027",
108 " 030", " 031", " 032", " 033", " 034", " 035", " 036", " 037",
109 " 040", " 041", " 042", " 043", " 044", " 045", " 046", " 047",
110 " 050", " 051", " 052", " 053", " 054", " 055", " 056", " 057",
111 " 060", " 061", " 062", " 063", " 064", " 065", " 066", " 067",
112 " 070", " 071", " 072", " 073", " 074", " 075", " 076", " 077",
113 "0100", "0101", "0102", "0103", "0104", "0105", "0106", "0107",
114 "0110", "0111", "0112", "0113", "0114", "0115", "0116", "0117",
115 "0120", "0121", "0122", "0123", "0124", "0125", "0126", "0127",
116 "0130", "0131", "0132", "0133", "0134", "0135", "0136", "0137",
117 "0140", "0141", "0142", "0143", "0144", "0145", "0146", "0147",
118 "0150", "0151", "0152", "0153", "0154", "0155", "0156", "0157",
119 "0160", "0161", "0162", "0163", "0164", "0165", "0166", "0167",
120 "0170", "0171", "0172", "0173", "0174", "0175", "0176", "0177",
121 "    ", "    ", "    ", "    "
122 };
123 
124 
125 
126 static char
127     **Sdecimal_columns,
128     **Sascii_columns,
129     **Shex_columns,
130     **Soct_columns;
131 
132 static XmString
133     Sxmstr_dval[6],
134     Sxmstr_hval[6],
135     Sxmstr_oval[6],
136     Sxmstr_ascii[6];
137 
138 
MakeTable(void)139 void MakeTable (void)
140 {
141     register int
142         i,
143         j;
144 
145     Sdecimal_columns = (char **)XtCalloc (6, sizeof (char *));
146     Sascii_columns = (char **)XtCalloc (6, sizeof (char *));
147     Shex_columns = (char **)XtCalloc (6, sizeof (char *));
148     Soct_columns = (char **)XtCalloc (6, sizeof (char *));
149     for (i=0; i < 6; i++)
150     {
151 
152         Sdecimal_columns[i] = (char *)  XtCalloc (112, sizeof (char));
153         Sascii_columns[i] = (char *)  XtCalloc (112, sizeof (char));
154         Shex_columns[i] = (char *)  XtCalloc (112, sizeof (char));
155         Soct_columns[i] = (char *)  XtCalloc (112, sizeof (char));
156 
157         for (j= (i*22); j < ((i+1) * 22); j++)
158         {
159             strcat (Sascii_columns[i], ascii_values[j]);
160             strcat (Sascii_columns[i], "\n");
161 
162             strcat (Sdecimal_columns[i], decimal_values[j]);
163             strcat (Sdecimal_columns[i], "\n");
164 
165             strcat (Shex_columns[i], hex_values[j]);
166             strcat (Shex_columns[i], "\n");
167 
168             strcat (Soct_columns[i], oct_values[j]);
169             strcat (Soct_columns[i], "\n");
170 
171         }
172     }
173 
174 
175     for (i=0; i < 6; i++)
176     {
177         Sxmstr_dval[i] = XmStringCreateLtoR(Sdecimal_columns[i],
178             XmSTRING_DEFAULT_CHARSET);
179         Sxmstr_hval[i] = XmStringCreateLtoR(Shex_columns[i],
180             XmSTRING_DEFAULT_CHARSET);
181         Sxmstr_oval[i] = XmStringCreateLtoR(Soct_columns[i],
182             XmSTRING_DEFAULT_CHARSET);
183 
184         Sxmstr_ascii[i] = XmStringCreateLtoR(Sascii_columns[i],
185             XmSTRING_DEFAULT_CHARSET);
186     }
187 }
188 
SetCb(Widget widget,XtPointer client_data,XtPointer call_data)189 void SetCb (Widget widget,XtPointer client_data,XtPointer call_data)
190 {
191     int
192         i;
193 
194     int
195         type;
196 
197     static int
198         first_time=0;
199 
200     type=(int) client_data;
201 
202     if (first_time == 0)
203     {
204         for (i=0; i < 6; i++)
205         XtVaSetValues (Gascii_labelW[i],
206             XmNlabelString,Sxmstr_ascii[i],
207             NULL);
208         first_time=1;
209     }
210 
211     for (i=0; i < 3; i++)
212     {
213         XtVaSetValues(Gtoggle_menuW[i],
214             XmNset, False,
215             NULL);
216     }
217     XtVaSetValues (Gtoggle_menuW[type],
218         XmNset, True,
219         NULL);
220 
221     switch (type)
222     {
223 
224         case 0: /* ASCII */
225         {
226             for (i=0; i < 6; i++)
227             {
228                 XtVaSetValues (Gvalue_labelW[i],
229                     XmNlabelString, Sxmstr_dval[i],
230                     NULL);
231                 if (!first_time)
232                 XtVaSetValues (Gascii_labelW[i],
233                     XmNlabelString,Sxmstr_ascii[i],
234                     NULL);
235             }
236             break;
237         }
238 
239         case 1: /* HEX */
240         {
241             for (i=0; i < 6; i++)
242             {
243                 XtVaSetValues (Gvalue_labelW[i],
244                     XmNlabelString, Sxmstr_hval[i],
245                     NULL);
246                 if (!first_time)
247                 XtVaSetValues (Gascii_labelW[i],
248                     XmNlabelString,Sxmstr_ascii[i],
249                     NULL);
250             }
251             break;
252         }
253 
254         case 2: /* OCT */
255         {
256             for (i=0; i < 6; i++)
257             {
258                 XtVaSetValues (Gvalue_labelW[i],
259                     XmNlabelString, Sxmstr_oval[i],
260                     NULL);
261                 if (!first_time)
262                 XtVaSetValues (Gascii_labelW[i],
263                     XmNlabelString,Sxmstr_ascii[i],
264                     NULL);
265             }
266             break;
267         }
268     }
269 
270 }
271 
272