home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / list / ep-misc.ark / EPINIT.C < prev    next >
Text File  |  1988-05-21  |  14KB  |  453 lines

  1. /*
  2.     initial data for EP
  3. */
  4.  
  5. #include <bdscio.h>
  6. /*#include <hardware.h>*/
  7.  
  8. #include <ep.def>
  9. #define    AUBS    0xC0
  10.  
  11.  
  12. main()
  13. {
  14.     valtpset();
  15.     valset();
  16.     spchar();
  17.     mode = 0;
  18.     tabwid = 0;
  19.     bendset();
  20.     pmset();
  21. /*    pmshow(0);    */
  22. /*    pmshow(128);    */
  23.     savei();
  24. }
  25.  
  26.  
  27. valtpset()
  28. {    int i;
  29.     setmem(valtp, 27*27, 0);
  30.  
  31. valtp['A'-'@']['D'-'@']     = HZNUM | BRK;/* adjust, or left margin    */
  32. valtp['L'-'@']['I'-'@']     = HZNUM | BRK;/* left inside margin        */
  33. valtp['L'-'@']['O'-'@']     = HZNUM | BRK;/* left outside margin        */
  34. valtp['L'-'@']['L'-'@']     = HZNUM | BRK;/* line length            */
  35. valtp['C'-'@']['O'-'@']     = BRK    ;    /* concatenation (Boolean)    */
  36. valtp['J'-'@']['U'-'@']     = BRK    ;    /* justification (Boolean)    */
  37.  
  38. valtp['H'-'@']['I'-'@']     = HZNUM | BRK;/* hanging indent        */
  39. valtp['O'-'@']['F'-'@']     = HZNUM | BRK;/* offset            */
  40. valtp['P'-'@']['I'-'@']     = HZNUM | BRK;/* paragraph indent        */
  41.  
  42.  
  43. valtp['C'-'@']['S'-'@']     = HZNUM;    /* character spacing        */
  44. valtp['C'-'@']['W'-'@']     = HZNUM | BRK;    /* character width        */
  45. valtp['W'-'@']['F'-'@']     = BRK;         /* width factor            */
  46. valtp['C'-'@']['L'-'@']     = HZNUM;    /* goto column            */
  47. valtp['H'-'@']['S'-'@']     = HZNUM;    /* horizontal space        */
  48. valtp['S'-'@']['L'-'@']     = VTNUM | BRK;    /* set leading            */
  49. valtp['C'-'@']['H'-'@']     = VTNUM | BRK;    /* character height        */
  50. valtp['P'-'@']['L'-'@']     = VTNUM;    /* page length            */
  51. valtp['R'-'@']['O'-'@']     = VTNUM;    /* room                */
  52. valtp['B'-'@']['R'-'@']     = BRK | FLAGCH;/* break            */
  53. valtp['S'-'@']['A'-'@']     = BRK;        /* save                */
  54. valtp['R'-'@']['E'-'@']     = BRK;        /* restore            */
  55. valtp['P'-'@']['P'-'@']     = BRK | ARGTRUE;/* paragraph            */
  56. valtp['D'-'@']['R'-'@']     = BRK | ARGTRUE;/* draw            */
  57. valtp['T'-'@']['W'-'@']     = HZNUM;    /* tab width            */
  58.  
  59. valtp['C'-'@']['T'-'@']     = ARGTRUE;    /* clear tabs            */
  60.  
  61. valtp['N'-'@']['F'-'@']     = BRK;        /* new fonts            */
  62. valtp['C'-'@']['C'-'@']     = BRK;         /* current column        */
  63. valtp['N'-'@']['C'-'@']     = BRK;         /* number columns        */
  64. valtp['G'-'@']['U'-'@']     = HZNUM | BRK;    /* gutter            */
  65.  
  66. valtp['R'-'@']['H'-'@']     = BRK;        /* rule hpattern        */
  67. valtp['R'-'@']['V'-'@']     = BRK;        /* rule vpattern        */
  68.  
  69.  
  70. valtp['T'-'@']['M'-'@']     = VTNUM;    /* top margin            */
  71. valtp['B'-'@']['M'-'@']     = VTNUM;    /* bottom margin        */
  72. valtp['H'-'@']['M'-'@']     = VTNUM;    /* heading margin        */
  73. valtp['F'-'@']['M'-'@']     = VTNUM;    /* footing margin        */
  74. valtp['S'-'@']['K'-'@']     = VTNUM | BRK;    /* skip                */
  75. valtp['S'-'@']['U'-'@']     = VTNUM | BRK;    /* skip up            */
  76. valtp['P'-'@']['S'-'@']     = VTNUM;    /* paragraph spacing        */
  77. valtp['W'-'@']['I'-'@']     = VTNUM;    /* widow            */
  78.  
  79. valtp['I'-'@']['N'-'@']     = HZNUM | BRK;    /* indent            */
  80. valtp['I'-'@']['R'-'@']     = HZNUM | BRK;    /* indent right            */
  81. valtp['I'-'@']['L'-'@']     = HZNUM | BRK;    /* indent line            */
  82. valtp['U'-'@']['N'-'@']     = HZNUM | BRK;    /* undent            */
  83.  
  84. /* synonyms of Epson commands    */
  85. valtp['E'-'@']['L'-'@']     = EPSSYN; /* elite            */
  86. valtp['C'-'@']['P'-'@']     = EPSSYN; /* com-pressed        */
  87. valtp['E'-'@']['M'-'@']     = EPSSYN; /* emphasized        */
  88. valtp['D'-'@']['S'-'@']     = EPSSYN; /* double strike        */
  89. valtp['E'-'@']['X'-'@']     = EPSSYN; /* expanded            */
  90. valtp['P'-'@']['R'-'@']     = EPSSYN; /* proportional        */
  91. valtp['I'-'@']['T'-'@']     = EPSSYN; /* italic            */
  92. valtp['S'-'@']['P'-'@']     = EPSSYN; /* su-perscript        */
  93. valtp['S'-'@']['B'-'@']     = EPSSYN; /* su-bscript         */
  94. valtp['U'-'@']['L'-'@']     = EPSSYN; /* under-line        */
  95.  
  96. valtp['C'-'@']['E'-'@']     = FLAGCH | BRKAFT; /* center         */
  97. valtp['R'-'@']['A'-'@']     = FLAGCH | BRKAFT; /* right adjust    */
  98. valtp['O'-'@']['A'-'@']     = FLAGCH | BRKAFT; /* out adjust    */
  99. valtp['I'-'@']['A'-'@']     = FLAGCH | BRKAFT; /* in adjust    */
  100. valtp['P'-'@']['A'-'@']     = FLAGCH; /* pause            */
  101. valtp['H'-'@']['F'-'@']     = FLAGCH; /* horizontal fill        */
  102. valtp['L'-'@']['A'-'@']     = BRK | ARGTRUE;
  103.                    /* left adjust        */
  104. valtp['R'-'@']['B'-'@']     = CHARG;  /* required blank        */
  105. valtp['E'-'@']['C'-'@']     = CHARG;  /* escape character        */
  106. valtp['D'-'@']['C'-'@']     = CHARG;  /* dot character        */
  107. valtp['C'-'@']['M'-'@']     = CHARG;  /* comment character        */
  108. valtp['T'-'@']['C'-'@']     = CHARG;  /* tab character        */
  109.  
  110. valtp['G'-'@']['T'-'@']     = ARGTRUE;/* get-terminal        */
  111. valtp['R'-'@']['N'-'@']     = ARGTRUE;/* Roman-numeral        */
  112.  
  113. }
  114.  
  115. spchar()
  116. {
  117. valtp['T'-'@']['I'-'@']     = FLAGCH;  /* tic        */
  118.   val['T'-'@']['I'-'@']     = 'A' & 31;
  119. valtp['G'-'@']['R'-'@']     = FLAGCH;  /* grave        */
  120.   val['G'-'@']['R'-'@']     = ('B' & 31) | AUBS;
  121. valtp['A'-'@']['C'-'@']     = FLAGCH;  /* acute        */
  122.   val['A'-'@']['C'-'@']     = ('C' & 31) | AUBS;
  123. valtp['C'-'@']['I'-'@']     = FLAGCH;  /* circumflex    */
  124.   val['C'-'@']['I'-'@']     = ('D' & 31) | AUBS;
  125. valtp['H'-'@']['A'-'@']     = FLAGCH;  /* hachek        */
  126.   val['H'-'@']['A'-'@']     = ('E' & 31) | AUBS;
  127. valtp['M'-'@']['A'-'@']     = FLAGCH;  /* macron        */
  128.   val['M'-'@']['A'-'@']     = ('F' & 31) | AUBS;
  129. valtp['U'-'@']['M'-'@']     = FLAGCH;  /* umlaut        */
  130.   val['U'-'@']['M'-'@']     = ('G' & 31) | AUBS;
  131. valtp['B'-'@']['S'-'@']     = FLAGCH;  /* back space    */
  132.   val['B'-'@']['S'-'@']     = BCKFLAG;
  133. valtp['V'-'@']['L'-'@']     = FLAGCH;  /* voice-less    */
  134.   val['V'-'@']['L'-'@']     = ('H' & 31) | AUBS;
  135. valtp['U'-'@']['D'-'@']     = FLAGCH;  /* under-dot    */
  136.   val['U'-'@']['D'-'@']     = ('I' & 31) | AUBS;
  137. valtp['B'-'@']['U'-'@']     = FLAGCH;  /* bullet        */
  138.   val['B'-'@']['U'-'@']     = 'J' & 31;
  139. valtp['D'-'@']['A'-'@']     = FLAGCH;  /* dagger        */
  140.   val['D'-'@']['A'-'@']     = 'K' & 31;
  141. valtp['D'-'@']['D'-'@']     = FLAGCH;  /* double-dagger    */
  142.   val['D'-'@']['D'-'@']     = 'L' & 31;
  143. valtp['S'-'@']['E'-'@']     = FLAGCH;  /* section        */
  144.   val['S'-'@']['E'-'@']     = 'M' & 31;
  145. valtp['Q'-'@']['U'-'@']     = FLAGCH;  /* quad        */
  146.   val['Q'-'@']['U'-'@']     = 'N' & 31;
  147. valtp['M'-'@']['D'-'@']     = FLAGCH;  /* mdash        */
  148.   val['M'-'@']['D'-'@']     = 'O' & 31;
  149. valtp['N'-'@']['D'-'@']     = FLAGCH;  /* ndash        */
  150.   val['N'-'@']['D'-'@']     = 'P' & 31;
  151. valtp['D'-'@']['G'-'@']     = FLAGCH;  /* di-graph    */
  152.   val['D'-'@']['G'-'@']     = 'Q' & 31;
  153. valtp['D'-'@']['O'-'@']     = FLAGCH;  /* digraph-o    */
  154.   val['D'-'@']['O'-'@']     = 'R' & 31;
  155. valtp['B'-'@']['V'-'@']     = FLAGCH;  /* bre-ve        */
  156.   val['B'-'@']['V'-'@']     = ('S' & 31) | AUBS;
  157. valtp['S'-'@']['Y'-'@']     = FLAGCH;  /* syllabic        */
  158.   val['S'-'@']['Y'-'@']     = ('T' & 31) | AUBS;
  159. valtp['N'-'@']['S'-'@']     = FLAGCH;  /* non-syllabic    */
  160.   val['N'-'@']['S'-'@']     = ('U' & 31) | AUBS;
  161. valtp['C'-'@']['D'-'@']     = FLAGCH;  /* ce-dilla        */
  162.   val['C'-'@']['D'-'@']     = ('V' & 31) | AUBS;
  163. valtp['U'-'@']['T'-'@']     = FLAGCH;  /* under-tie    */
  164.   val['U'-'@']['T'-'@']     = ('W' & 31) | AUBS;
  165. valtp['O'-'@']['T'-'@']     = FLAGCH;  /* over-tie        */
  166.   val['O'-'@']['T'-'@']     = ('X' & 31) | AUBS;
  167. valtp['O'-'@']['D'-'@']     = FLAGCH;  /* over-dot        */
  168.   val['O'-'@']['D'-'@']     = ('Y' & 31) | AUBS;
  169. valtp['N'-'@']['A'-'@']     = FLAGCH;  /* nasal        */
  170.   val['N'-'@']['A'-'@']     = ('Z' & 31) | AUBS;
  171.  
  172. valtp['B'-'@']['L'-'@']     = FLAGCH;  /* blank        */
  173.   val['B'-'@']['L'-'@']     = ' ';
  174. }
  175.  
  176.  
  177. valset()
  178. {    int i, m;
  179.  
  180.     strcpy(editname,"e");
  181.  
  182.     setmem(val, 2*27*27, 0);
  183.     ll =  8 * INCH;
  184.     sl =  2 * POINT;
  185.     pl = 11 * VINCH;
  186.     cs =  3;
  187.  
  188.     tm = 1 * VINCH;
  189.     bm = 1 * VINCH;
  190.     hm = 0;        /* was PICA + 2 * POINT, but this would
  191.                now give a page number at the top    */
  192.     fm = PICA + 2 * POINT;
  193.  
  194.     rb = '_';
  195.     ec = '\\';
  196.  
  197.     el = 'M';
  198.     cp = 15;
  199.     em = 'E';
  200.     ds = 'G';
  201.     ex = 'W';
  202.     pr = 'p';
  203.     it = 4;
  204.     sp = 'S';
  205.     sb = '0';
  206.     ul = '-';
  207.  
  208. val['D'-'@']['C'-'@']     = '.';    /* dot character         */
  209. val['C'-'@']['M'-'@']     = 'F'&31; /* comment character        */
  210.  
  211. val['C'-'@']['E'-'@']     = CEFLAG; /* center             */
  212. val['R'-'@']['A'-'@']     = RAFLAG; /* right adjust        */
  213. val['O'-'@']['A'-'@']     = RAFLAG; /* out adjust        */
  214. val['I'-'@']['A'-'@']     = RAFLAG; /* in adjust            */
  215. val['P'-'@']['A'-'@']     = PAFLAG; /* pause            */
  216. val['H'-'@']['F'-'@']     = FRFLAG; /* horizontal fill        */
  217. val['C'-'@']['H'-'@']     = PICA;   /* char. height        */
  218. val['P'-'@']['S'-'@']     = PICA + 2*POINT;/* paragraph spacing    */
  219. val['W'-'@']['I'-'@']     = 2*(PICA + 2*POINT);    /* widow    */
  220. val['P'-'@']['F'-'@']     = 6;       /* punctuation factor    */
  221. val['L'-'@']['F'-'@']     = 4;       /* looseness factor        */
  222. val['S'-'@']['C'-'@']     = 2;       /* space capitals        */
  223. val['R'-'@']['H'-'@']     = 0x10;   /* rule hpattern        */
  224. val['R'-'@']['V'-'@']     = 0;      /* rule vpattern        */
  225.  
  226.  
  227.     for (i = 0; i < 64; i++)
  228.     {    m = PICA;            /* Pica        */
  229.         if (i & CMPRSSD) m = 14;    /* Compressed    */
  230.         if (i & EMPHSZD) m = 24;    /* Emphasized    */
  231.         if (i & PRPTNL)    m = 0;        /* Proportional    */
  232.         if (i & ELITE)     m = 20;        /* Elite    */
  233.         if (i & EXPNDD) m *= 2;        /* Expanded    */
  234.         modelen[i] = m;
  235.     }
  236. }
  237.  
  238. bendset()
  239. {    int row;
  240.  
  241.     setmem(bending, 7*24, 0);
  242.  
  243.     for (row = 0; row < 24; row++)
  244.     {
  245.         if (row < 12)
  246.         {
  247.         /* backslant with slope = 2    */
  248.         bending[0][ixrow(row)] = row / 2;
  249.         /* slant with slope = 2        */
  250.         bending[1][ixrow(row)] = 11 - row / 2;
  251.         }
  252.         else
  253.         {
  254.         /* slant with slope = 2        */
  255.         bending[0][ixrow(row)] = 11 - row / 2;
  256.         /* backslant with slope = 2    */
  257.         bending[1][ixrow(row)] = row / 2;
  258.         }
  259.  
  260.             /* backhand with slope 1/3    */
  261.             /* bending[2][ixrow(row)] = row / 3; */
  262.  
  263.         /* thicken verticals toward top    */
  264.         if (row < 8)
  265.         bending[2][ixrow(row)] = (row % 2) ? 0 : 3;
  266.         else if (row < 16)
  267.         bending[2][ixrow(row)] = (row % 2) ? 0 : 2;
  268.     }
  269.  
  270.     /* bulge left        */
  271.     bending[3][ixrow( 0)] =  6;
  272.     bending[3][ixrow( 1)] =  4;
  273.     bending[3][ixrow( 2)] =  3;
  274.     bending[3][ixrow( 3)] =  2;
  275.     bending[3][ixrow( 4)] =  2;
  276.     bending[3][ixrow( 5)] =  1;
  277.     bending[3][ixrow( 6)] =  1;
  278.     bending[3][ixrow( 7)] =  0;
  279.     bending[3][ixrow( 8)] =  0;
  280.     bending[3][ixrow( 9)] =  0;
  281.     bending[3][ixrow(10)] =  0;
  282.     bending[3][ixrow(11)] =  1;
  283.     bending[3][ixrow(12)] =  1;
  284.     bending[3][ixrow(13)] =  2;
  285.     bending[3][ixrow(14)] =  2;
  286.     bending[3][ixrow(15)] =  3;
  287.     bending[3][ixrow(16)] =  4;
  288.     bending[3][ixrow(17)] =  6;
  289.     bending[3][ixrow(18)] =  6;
  290.     bending[3][ixrow(19)] =  6;
  291.     bending[3][ixrow(20)] =  6;
  292.     bending[3][ixrow(21)] =  6;
  293.     bending[3][ixrow(22)] =  6;
  294.     bending[3][ixrow(23)] =  6;
  295.  
  296.     /* bulge right        */
  297.     bending[4][ixrow( 0)] =  0;
  298.     bending[4][ixrow( 1)] =  2;
  299.     bending[4][ixrow( 2)] =  3;
  300.     bending[4][ixrow( 3)] =  4;
  301.     bending[4][ixrow( 4)] =  4;
  302.     bending[4][ixrow( 5)] =  5;
  303.     bending[4][ixrow( 6)] =  5;
  304.     bending[4][ixrow( 7)] =  6;
  305.     bending[4][ixrow( 8)] =  6;
  306.     bending[4][ixrow( 9)] =  6;
  307.     bending[4][ixrow(10)] =  6;
  308.     bending[4][ixrow(11)] =  5;
  309.     bending[4][ixrow(12)] =  5;
  310.     bending[4][ixrow(13)] =  4;
  311.     bending[4][ixrow(14)] =  4;
  312.     bending[4][ixrow(15)] =  3;
  313.     bending[4][ixrow(16)] =  2;
  314.     bending[4][ixrow(17)] =  0;
  315.     bending[4][ixrow(18)] =  0;
  316.     bending[4][ixrow(19)] =  0;
  317.     bending[4][ixrow(20)] =  0;
  318.     bending[4][ixrow(21)] =  0;
  319.     bending[4][ixrow(22)] =  0;
  320.     bending[4][ixrow(23)] =  0;
  321.  
  322.     /* sweep ascenders left        */
  323.     bending[5][ixrow( 0)] =  0;
  324.     bending[5][ixrow( 1)] =  2;
  325.     bending[5][ixrow( 2)] =  3;
  326.     bending[5][ixrow( 3)] =  4;
  327.     bending[5][ixrow( 4)] =  4;
  328.     bending[5][ixrow( 5)] =  5;
  329.     bending[5][ixrow( 6)] =  5;
  330.     bending[5][ixrow( 7)] =  5;
  331.     bending[5][ixrow( 8)] =  5;
  332.     bending[5][ixrow( 9)] =  5;
  333.     bending[5][ixrow(10)] =  5;
  334.     bending[5][ixrow(11)] =  5;
  335.     bending[5][ixrow(12)] =  5;
  336.     bending[5][ixrow(13)] =  5;
  337.     bending[5][ixrow(14)] =  5;
  338.     bending[5][ixrow(15)] =  5;
  339.     bending[5][ixrow(16)] =  5;
  340.     bending[5][ixrow(17)] =  5;
  341.     bending[5][ixrow(18)] =  5;
  342.     bending[5][ixrow(19)] =  5;
  343.     bending[5][ixrow(20)] =  5;
  344.     bending[5][ixrow(21)] =  5;
  345.     bending[5][ixrow(22)] =  5;
  346.     bending[5][ixrow(23)] =  5;
  347.  
  348.  
  349.     /* sweep descenders left        */
  350.     bending[6][ixrow( 0)] =  5;
  351.     bending[6][ixrow( 1)] =  5;
  352.     bending[6][ixrow( 2)] =  5;
  353.     bending[6][ixrow( 3)] =  5;
  354.     bending[6][ixrow( 4)] =  5;
  355.     bending[6][ixrow( 5)] =  5;
  356.     bending[6][ixrow( 6)] =  5;
  357.     bending[6][ixrow( 7)] =  5;
  358.     bending[6][ixrow( 8)] =  5;
  359.     bending[6][ixrow( 9)] =  5;
  360.     bending[6][ixrow(10)] =  5;
  361.     bending[6][ixrow(11)] =  5;
  362.     bending[6][ixrow(12)] =  5;
  363.     bending[6][ixrow(13)] =  5;
  364.     bending[6][ixrow(14)] =  5;
  365.     bending[6][ixrow(15)] =  5;
  366.     bending[6][ixrow(16)] =  5;
  367.     bending[6][ixrow(17)] =  5;
  368.     bending[6][ixrow(18)] =  5;
  369.     bending[6][ixrow(19)] =  4;
  370.     bending[6][ixrow(20)] =  4;
  371.     bending[6][ixrow(21)] =  3;
  372.     bending[6][ixrow(22)] =  2;
  373.     bending[6][ixrow(23)] =  0;
  374.  
  375. }
  376.  
  377. ixrow(row)
  378. int row;
  379. {
  380.     return((row % 3)*8 + (7 - row / 3));
  381. }
  382.  
  383.  
  384. pmset()
  385. {    int i;
  386.  
  387.     for (i = 0; i < 256; i++) pmlen[i] = PICA;
  388.     pms("!'`|",5,0);
  389.     pms("().:;",6,0);
  390.     pms(",",7,0);
  391.     pmlen[34] = 8 * 2;
  392.     pms("1I[]il",8,0);
  393.     pms("j{}",9,0);
  394.     pms("/<>XZ\\fkxz",10,0);
  395.     pms("Jbcdghnpqrt",11,0);
  396.  
  397.     pms("'`",5,128);
  398.     pms(".\\",7,128);
  399.     pmlen[34+128] = 10 * 2;
  400.     pms("(),:",8,128);
  401.     pms("1;>il|",9,128);
  402.     pms("!/<IL^jnrtv{}",10,128);
  403.     pms("$69=?V[]abceghkmopqsuy",11,128);
  404. }
  405.  
  406. pmshow(o)
  407. int o;
  408. {    int i;
  409.     char c;
  410.     for (i = 32; i < 48; i++)
  411.      printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
  412.      getchar(c);
  413.     for (i = 48; i < 64; i++)
  414.      printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
  415.      getchar(c);
  416.     for (i = 64; i < 80; i++)
  417.      printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
  418.      getchar(c);
  419.     for (i = 80; i < 96; i++)
  420.      printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
  421.      getchar(c);
  422.     for (i = 96; i <112; i++)
  423.      printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
  424.      getchar(c);
  425.     for (i =112; i <127; i++)
  426.      printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
  427.      getchar(c);
  428. }
  429.  
  430. pms(s,l,o)
  431. char *s, l, o;
  432. {    while(*s) pmlen[o + *s++] = l * 2;
  433. }
  434.  
  435. v(s)
  436. char *s;
  437. {    return(val[*s - '@'][*(s+1) - '@']);
  438. }
  439.  
  440. savei()
  441. {
  442.     int fd, i;
  443.  
  444.     if ((fd = creat("ep.ini")) == ERROR)
  445.         {printf("\ncan't save"); exit(ERROR);}
  446.     if (write(fd, val, 21) != 21)
  447.         {printf("\nbad save"); exit(ERROR);}
  448.     if (close(fd) == ERROR)
  449.         {printf("\nbad save"); exit(ERROR);}
  450.  
  451. }
  452.  
  453.