home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / beav1402.zip / format.c < prev    next >
Text File  |  1993-04-16  |  10KB  |  357 lines

  1. /*
  2. * The module devines the format of the screen display.
  3. */
  4.  
  5. #include    "def.h"
  6.  
  7.  
  8. extern char hex_str[];
  9. extern char hex_l_str[];
  10. extern char octal_str[];
  11. extern char octal_l_str[];
  12. extern char decimal_str[];
  13. extern char decimal_l_str[];
  14. #if    FLOAT_DISP
  15. extern char float_str[];
  16. #endif
  17. extern char char_str[];
  18.  
  19.  
  20. /* These structures contain the format for the displayed line */
  21.  
  22.  
  23. #define FC 13
  24. #define FS 0
  25.  
  26. uchar ascii_s_posn[] =
  27. {
  28.     FS + 0, FS + 1, FS + 2, FS + 3, FS + 4, FS + 5, FS + 6, FS + 7, FS + 8, FS + 9,
  29.     FS + 10, FS + 11, FS + 12, FS + 13, FS + 14, FS + 15, FS + 16, FS + 17, FS + 18, FS + 19,
  30.     FS + 20, FS + 21, FS + 22, FS + 23, FS + 24, FS + 25, FS + 26, FS + 27, FS + 28, FS + 29,
  31.     FS + 30, FS + 31, FS + 32, FS + 33, FS + 34, FS + 35, FS + 36, FS + 37, FS + 38, FS + 39,
  32.     FS + 40, FS + 41, FS + 42, FS + 43, FS + 44, FS + 45, FS + 46, FS + 47, FS + 48, FS + 49,
  33.     FS + 50, FS + 51, FS + 52, FS + 53, FS + 54, FS + 55, FS + 56, FS + 57, FS + 58, FS + 59,
  34.     FS + 60, FS + 61, FS + 62, FS + 63, FS + 64, FS + 65, FS + 66, FS + 67, FS + 68, FS + 69,
  35.     FS + 70, FS + 71, FS + 72, FS + 73, FS + 74, FS + 75, FS + 76, FS + 77, FS + 78, FS + 79,
  36. };
  37.  
  38. ROW_FMT text_fmt =
  39. {
  40.     TEXT, BYTES, 128, 128, 128, 1, 1, FALSE, char_str, hex_l_str, hex_str,
  41.     ascii_s_posn, 0};
  42.  
  43. ROW_FMT ascii_fmt =
  44. {
  45.     ASCII, BYTES, 64, 64, 64, 1, 1, FALSE, char_str, hex_l_str, hex_str,
  46.     &ascii_s_posn[FC], 0};
  47.  
  48. ROW_FMT ascii_s_fmt =
  49. {
  50.     ASCII, BYTES, 32, 32, 1, 1, 1, FALSE, char_str, hex_l_str, hex_str,
  51.     ascii_s_posn, 0};
  52.  
  53. ROW_FMT ebcdic_fmt =
  54. {
  55.     EBCDIC, BYTES, 64, 64, 64, 1, 1, FALSE, char_str, hex_l_str, hex_str,
  56.     &ascii_s_posn[FC], 0};
  57.  
  58. ROW_FMT ebcdic_s_fmt =
  59. {
  60.     EBCDIC, BYTES, 32, 32, 1, 1, 1, FALSE, char_str, hex_l_str, hex_str,
  61.     ascii_s_posn, 0};
  62.  
  63. uchar octal_8_posn[] =
  64. {
  65.     FC, FC + 4, FC + 8, FC + 12, FC + 16, FC + 20,
  66.     FC + 24, FC + 28, FC + 33, FC + 37, FC + 41,
  67.     FC + 45, FC + 49, FC + 53, FC + 57, FC + 61
  68. };
  69.  
  70. ROW_FMT octal_8_fmt =
  71. {
  72.     OCTAL, BYTES, 16, 16, 16, 1, 3, TRUE, octal_str, octal_l_str, octal_str,
  73.     octal_8_posn, 0};
  74.  
  75. uchar octal_s_8_posn[] =
  76. {
  77.     FS, FS + 4, FS + 8, FS + 12, FS + 16, FS + 20,
  78.     FS + 24, FS + 28, FS + 32, FS + 36, FS + 40,
  79.     FS + 44, FS + 48, FS + 52, FS + 56, FS + 60,
  80.     FS + 64, FS + 68, FS + 72, FS + 76, FS + 80
  81. };
  82. ROW_FMT octal_s_8_fmt =
  83. {
  84.     OCTAL, BYTES, 8, 8, 1, 1, 3, TRUE, octal_str, octal_l_str, octal_str,
  85.     octal_s_8_posn, 0};
  86.  
  87. uchar octal_16_posn[] =
  88. {
  89.     FC, FC + 7, FC + 14, FC + 21, FC + 29, FC + 36, FC + 43, FC + 50
  90. };
  91.  
  92. ROW_FMT octal_16_fmt =
  93. {
  94.     OCTAL, WORDS, 8, 16, 16, 2, 6, TRUE, octal_str, octal_l_str, octal_str,
  95.     octal_16_posn, 0};
  96.  
  97. uchar octal_s_16_posn[] =
  98. {
  99.     FS, FS + 7, FS + 14, FS + 21, FS + 28, FS + 35,
  100.     FS + 42, FS + 49, FS + 56, FS + 63, FS + 70, FS + 77
  101. };
  102. ROW_FMT octal_s_16_fmt =
  103. {
  104.     OCTAL, WORDS, 4, 8, 2, 2, 6, TRUE, octal_str, octal_l_str, octal_str,
  105.     octal_s_16_posn, 0};
  106.  
  107. uchar octal_32_posn[] =
  108. {
  109.     FC, FC + 12, FC + 25, FC + 37
  110. };
  111.  
  112. ROW_FMT octal_32_fmt =
  113. {
  114.  OCTAL, DWORDS, 4, 16, 16, 4, 11, TRUE, octal_l_str, octal_l_str, octal_str,
  115.     octal_32_posn, 0};
  116.  
  117. uchar octal_s_32_posn[] =
  118. {
  119.     FS, FS + 12, FS + 24, FS + 36, FS + 48, FS + 60, FS + 72
  120. };
  121. ROW_FMT octal_s_32_fmt =
  122. {
  123.     OCTAL, DWORDS, 2, 8, 4, 4, 11, TRUE, octal_l_str, octal_l_str, octal_str,
  124.     octal_s_32_posn,};
  125.  
  126. ROW_FMT decimal_8_fmt =
  127. {
  128.     DECIMAL, BYTES, 16, 16, 16, 1, 3, TRUE, decimal_str, decimal_l_str, decimal_str,
  129.     octal_8_posn, 0};
  130.  
  131. ROW_FMT decimal_s_8_fmt =
  132. {
  133. DECIMAL, BYTES, 8, 8, 1, 1, 3, TRUE, decimal_str, decimal_l_str, decimal_str,
  134.     octal_s_8_posn, 0};
  135.  
  136. uchar decimal_16_posn[] =
  137. {
  138.     FC, FC + 6, FC + 12, FC + 18, FC + 25,
  139.     FC + 31, FC + 37, FC + 43
  140. };
  141.  
  142. ROW_FMT decimal_16_fmt =
  143. {
  144.     DECIMAL, WORDS, 8, 16, 16, 2, 5, TRUE, decimal_str, decimal_l_str, decimal_str,
  145.     decimal_16_posn, 0};
  146.  
  147. uchar decimal_s_16_posn[] =
  148. {
  149.     FS, FS + 6, FS + 12, FS + 18, FS + 24,
  150.     FS + 30, FS + 36, FS + 42, FS + 48,
  151.     FS + 54, FS + 60, FS + 66, FS + 72, FS + 78
  152. };
  153. ROW_FMT decimal_s_16_fmt =
  154. {
  155. DECIMAL, WORDS, 4, 8, 2, 2, 5, TRUE, decimal_str, decimal_l_str, decimal_str,
  156.     decimal_s_16_posn, 0};
  157.  
  158. uchar decimal_32_posn[] =
  159. {
  160.     FC, FC + 11, FC + 23, FC + 34
  161. };
  162.  
  163. ROW_FMT decimal_32_fmt =
  164. {
  165.     DECIMAL, DWORDS, 4, 16, 16, 4, 10, TRUE, decimal_l_str, decimal_l_str, decimal_str,
  166.     decimal_32_posn, 0};
  167.  
  168. uchar decimal_s_32_posn[] =
  169. {
  170.     FS, FS + 11, FS + 22, FS + 33, FS + 44, FS + 55, FS + 66, FS + 77
  171. };
  172. ROW_FMT decimal_s_32_fmt =
  173. {
  174.     DECIMAL, DWORDS, 4, 16, 4, 4, 10, TRUE, decimal_l_str, decimal_l_str, decimal_str,
  175.     decimal_s_32_posn, 0};
  176.  
  177. #if    FLOAT_DISP
  178. uchar float_64_posn[] =
  179. {
  180.     FC, FC + 32
  181. };
  182.  
  183. ROW_FMT float_64_fmt =
  184. {
  185.     FLOAT, DOUBLES, 2, 16, 16, 8, 24, TRUE, float_str, decimal_l_str, decimal_str,
  186.     float_64_posn, 0};
  187.  
  188. uchar float_s_64_posn[] =
  189. {
  190.     FS, FS + 30
  191. };
  192. ROW_FMT float_s_64_fmt =
  193. {
  194. FLOAT, DOUBLES, 2, 16, 4, 8, 22, TRUE, float_str, decimal_l_str, decimal_str,
  195.     float_s_64_posn, 0};
  196. #endif
  197.  
  198. uchar hex_8_posn[] =
  199. {
  200.     FC, FC + 3, FC + 6, FC + 9, FC + 12, FC + 15,
  201.     FC + 18, FC + 21, FC + 25, FC + 28, FC + 31,
  202.     FC + 34, FC + 37, FC + 40, FC + 43, FC + 46,
  203.     FC + 50, FC + 51, FC + 52, FC + 53, FC + 54,
  204.     FC + 55, FC + 56, FC + 57, FC + 58, FC + 59,
  205.     FC + 60, FC + 61, FC + 62, FC + 63, FC + 64,
  206.     FC + 65
  207. };
  208.  
  209. ROW_FMT hex_8_fmt =
  210. {
  211.     HEX, BYTES, 16, 16, 16, 1, 2, TRUE, hex_str, hex_l_str, hex_str,
  212.     hex_8_posn, 0};
  213.  
  214.  
  215. uchar hex_s_8_posn[] =
  216. {
  217.     FS, FS + 3, FS + 6, FS + 9, FS + 12, FS + 15,
  218.     FS + 18, FS + 21, FS + 24, FS + 27, FS + 30,
  219.     FS + 33, FS + 36, FS + 39, FS + 42, FS + 45,
  220.     FS + 48, FS + 51, FS + 54, FS + 57, FS + 60,
  221.     FS + 63, FS + 66, FS + 69, FS + 72, FS + 75,
  222.     FS + 78, FS + 80, FS + 80, FS + 80, FS + 80,
  223.     FS + 80
  224. };
  225. ROW_FMT hex_s_8_fmt =
  226. {
  227.     HEX, BYTES, 8, 8, 1, 1, 2, TRUE, hex_str, hex_l_str, hex_str,
  228.     hex_s_8_posn, 0};
  229.  
  230. uchar hex_16_posn[] =
  231. {
  232.     FC, FC + 5, FC + 10, FC + 15, FC + 21, FC + 26, FC + 31, FC + 36
  233. };
  234.  
  235. ROW_FMT hex_16_fmt =
  236. {
  237.     HEX, WORDS, 8, 16, 16, 2, 4, TRUE, hex_str, hex_l_str, hex_str,
  238.     hex_16_posn, 0};
  239.  
  240. uchar hex_s_16_posn[] =
  241. {
  242.     FS, FS + 5, FS + 10, FS + 15, FS + 20, FS + 25,
  243.     FS + 30, FS + 35, FS + 40, FS + 45, FS + 50,
  244.     FS + 55, FS + 60, FS + 65, FS + 70, FS + 75
  245. };
  246. ROW_FMT hex_s_16_fmt =
  247. {
  248.     HEX, WORDS, 8, 16, 2, 2, 4, TRUE, hex_str, hex_l_str, hex_str,
  249.     hex_s_16_posn, 0};
  250.  
  251. uchar hex_32_posn[] =
  252. {
  253.     FC, FC + 9, FC + 19, FC + 28
  254. };
  255.  
  256. ROW_FMT hex_32_fmt =
  257. {
  258.     HEX, DWORDS, 4, 16, 16, 4, 8, TRUE, hex_l_str, hex_l_str, hex_str,
  259.     hex_32_posn, 0};
  260.  
  261. uchar hex_s_32_posn[] =
  262. {
  263.     FS, FS + 9, FS + 18, FS + 27, FS + 36, FS + 45, FS + 54, FS + 63, FS + 72
  264. };
  265. ROW_FMT hex_s_32_fmt =
  266. {
  267.     HEX, DWORDS, 4, 16, 4, 4, 8, TRUE, hex_l_str, hex_l_str, hex_str,
  268.     hex_s_32_posn, 0};
  269.  
  270. ROW_FMT binary_8_fmt =
  271. {
  272.     BINARY, BYTES, 4, 4, 4, 1, 8, FALSE, hex_str, hex_l_str, hex_str,
  273.     hex_32_posn, 0};        /* use the hex position array */
  274.  
  275. ROW_FMT binary_s_8_fmt =
  276. {
  277.     BINARY, BYTES, 4, 4, 1, 1, 8, FALSE, hex_str, hex_l_str, hex_str,
  278.     hex_s_32_posn, 0};        /* use the hex position array */
  279.  
  280. uchar binary_16_posn[] =
  281. {
  282.     FC, FC + 17, FC + 34, FC + 51
  283. };
  284.  
  285. ROW_FMT binary_16_fmt =
  286. {
  287.     BINARY, WORDS, 4, 8, 8, 2, 16, FALSE, hex_str, hex_l_str, hex_str,
  288.     binary_16_posn, 0};
  289.  
  290. uchar binary_s_16_posn[] =
  291. {
  292.     FS, FS + 17, FS + 34, FS + 51, FS + 68
  293. };
  294. ROW_FMT binary_s_16_fmt =
  295. {
  296.     BINARY, WORDS, 2, 4, 2, 2, 16, FALSE, hex_str, hex_l_str, hex_str,
  297.     binary_s_16_posn, 0};
  298.  
  299. uchar binary_32_posn[] =
  300. {
  301.     FC, FC + 33
  302. };
  303.  
  304. ROW_FMT binary_32_fmt =
  305. {
  306.     BINARY, DWORDS, 2, 8, 8, 4, 32, FALSE, hex_l_str, hex_l_str, hex_str,
  307.     binary_32_posn, 0};
  308.  
  309. uchar binary_s_32_posn[] =
  310. {
  311.     FS, FS + 33
  312. };
  313. ROW_FMT binary_s_32_fmt =
  314. {
  315.     BINARY, DWORDS, 1, 4, 4, 4, 32, FALSE, hex_l_str, hex_l_str, hex_str,
  316.     binary_s_32_posn, 0};
  317.  
  318. /* I must do this because C does not allow forward initialization of
  319.     structures */
  320. void
  321. init_fmt ()
  322. {
  323.     text_fmt.r_srch_fmt = &text_fmt;
  324.     ascii_fmt.r_srch_fmt = &ascii_s_fmt;
  325.     ascii_s_fmt.r_srch_fmt = &ascii_fmt;
  326.     ebcdic_fmt.r_srch_fmt = &ebcdic_s_fmt;
  327.     ebcdic_s_fmt.r_srch_fmt = &ebcdic_fmt;
  328.     octal_8_fmt.r_srch_fmt = &octal_s_8_fmt;
  329.     octal_s_8_fmt.r_srch_fmt = &octal_8_fmt;
  330.     octal_16_fmt.r_srch_fmt = &octal_s_16_fmt;
  331.     octal_s_16_fmt.r_srch_fmt = &octal_16_fmt;
  332.     octal_32_fmt.r_srch_fmt = &octal_s_32_fmt;
  333.     octal_s_32_fmt.r_srch_fmt = &octal_32_fmt;
  334.     decimal_8_fmt.r_srch_fmt = &decimal_s_8_fmt;
  335.     decimal_s_8_fmt.r_srch_fmt = &decimal_8_fmt;
  336.     decimal_16_fmt.r_srch_fmt = &decimal_s_16_fmt;
  337.     decimal_s_16_fmt.r_srch_fmt = &decimal_16_fmt;
  338.     decimal_32_fmt.r_srch_fmt = &decimal_s_32_fmt;
  339.     decimal_s_32_fmt.r_srch_fmt = &decimal_32_fmt;
  340. #if    FLOAT_DISP
  341.     float_64_fmt.r_srch_fmt = &float_s_64_fmt;
  342.     float_s_64_fmt.r_srch_fmt = &float_64_fmt;
  343. #endif
  344.     hex_8_fmt.r_srch_fmt = &hex_s_8_fmt;
  345.     hex_s_8_fmt.r_srch_fmt = &hex_8_fmt;
  346.     hex_16_fmt.r_srch_fmt = &hex_s_16_fmt;
  347.     hex_s_16_fmt.r_srch_fmt = &hex_16_fmt;
  348.     hex_32_fmt.r_srch_fmt = &hex_s_32_fmt;
  349.     hex_s_32_fmt.r_srch_fmt = &hex_32_fmt;
  350.     binary_8_fmt.r_srch_fmt = &binary_s_8_fmt;
  351.     binary_s_8_fmt.r_srch_fmt = &binary_8_fmt;
  352.     binary_16_fmt.r_srch_fmt = &binary_s_16_fmt;
  353.     binary_s_16_fmt.r_srch_fmt = &binary_16_fmt;
  354.     binary_32_fmt.r_srch_fmt = &binary_s_32_fmt;
  355.     binary_s_32_fmt.r_srch_fmt = &binary_32_fmt;
  356. }
  357.