/* initial data for EP */ #include /*#include */ #include #define AUBS 0xC0 main() { valtpset(); valset(); spchar(); mode = 0; tabwid = 0; bendset(); pmset(); /* pmshow(0); */ /* pmshow(128); */ savei(); } valtpset() { int i; setmem(valtp, 27*27, 0); valtp['A'-'@']['D'-'@'] = HZNUM | BRK;/* adjust, or left margin */ valtp['L'-'@']['I'-'@'] = HZNUM | BRK;/* left inside margin */ valtp['L'-'@']['O'-'@'] = HZNUM | BRK;/* left outside margin */ valtp['L'-'@']['L'-'@'] = HZNUM | BRK;/* line length */ valtp['C'-'@']['O'-'@'] = BRK ; /* concatenation (Boolean) */ valtp['J'-'@']['U'-'@'] = BRK ; /* justification (Boolean) */ valtp['H'-'@']['I'-'@'] = HZNUM | BRK;/* hanging indent */ valtp['O'-'@']['F'-'@'] = HZNUM | BRK;/* offset */ valtp['P'-'@']['I'-'@'] = HZNUM | BRK;/* paragraph indent */ valtp['C'-'@']['S'-'@'] = HZNUM; /* character spacing */ valtp['C'-'@']['W'-'@'] = HZNUM | BRK; /* character width */ valtp['W'-'@']['F'-'@'] = BRK; /* width factor */ valtp['C'-'@']['L'-'@'] = HZNUM; /* goto column */ valtp['H'-'@']['S'-'@'] = HZNUM; /* horizontal space */ valtp['S'-'@']['L'-'@'] = VTNUM | BRK; /* set leading */ valtp['C'-'@']['H'-'@'] = VTNUM | BRK; /* character height */ valtp['P'-'@']['L'-'@'] = VTNUM; /* page length */ valtp['R'-'@']['O'-'@'] = VTNUM; /* room */ valtp['B'-'@']['R'-'@'] = BRK | FLAGCH;/* break */ valtp['S'-'@']['A'-'@'] = BRK; /* save */ valtp['R'-'@']['E'-'@'] = BRK; /* restore */ valtp['P'-'@']['P'-'@'] = BRK | ARGTRUE;/* paragraph */ valtp['D'-'@']['R'-'@'] = BRK | ARGTRUE;/* draw */ valtp['T'-'@']['W'-'@'] = HZNUM; /* tab width */ valtp['C'-'@']['T'-'@'] = ARGTRUE; /* clear tabs */ valtp['N'-'@']['F'-'@'] = BRK; /* new fonts */ valtp['C'-'@']['C'-'@'] = BRK; /* current column */ valtp['N'-'@']['C'-'@'] = BRK; /* number columns */ valtp['G'-'@']['U'-'@'] = HZNUM | BRK; /* gutter */ valtp['R'-'@']['H'-'@'] = BRK; /* rule hpattern */ valtp['R'-'@']['V'-'@'] = BRK; /* rule vpattern */ valtp['T'-'@']['M'-'@'] = VTNUM; /* top margin */ valtp['B'-'@']['M'-'@'] = VTNUM; /* bottom margin */ valtp['H'-'@']['M'-'@'] = VTNUM; /* heading margin */ valtp['F'-'@']['M'-'@'] = VTNUM; /* footing margin */ valtp['S'-'@']['K'-'@'] = VTNUM | BRK; /* skip */ valtp['S'-'@']['U'-'@'] = VTNUM | BRK; /* skip up */ valtp['P'-'@']['S'-'@'] = VTNUM; /* paragraph spacing */ valtp['W'-'@']['I'-'@'] = VTNUM; /* widow */ valtp['I'-'@']['N'-'@'] = HZNUM | BRK; /* indent */ valtp['I'-'@']['R'-'@'] = HZNUM | BRK; /* indent right */ valtp['I'-'@']['L'-'@'] = HZNUM | BRK; /* indent line */ valtp['U'-'@']['N'-'@'] = HZNUM | BRK; /* undent */ /* synonyms of Epson commands */ valtp['E'-'@']['L'-'@'] = EPSSYN; /* elite */ valtp['C'-'@']['P'-'@'] = EPSSYN; /* com-pressed */ valtp['E'-'@']['M'-'@'] = EPSSYN; /* emphasized */ valtp['D'-'@']['S'-'@'] = EPSSYN; /* double strike */ valtp['E'-'@']['X'-'@'] = EPSSYN; /* expanded */ valtp['P'-'@']['R'-'@'] = EPSSYN; /* proportional */ valtp['I'-'@']['T'-'@'] = EPSSYN; /* italic */ valtp['S'-'@']['P'-'@'] = EPSSYN; /* su-perscript */ valtp['S'-'@']['B'-'@'] = EPSSYN; /* su-bscript */ valtp['U'-'@']['L'-'@'] = EPSSYN; /* under-line */ valtp['C'-'@']['E'-'@'] = FLAGCH | BRKAFT; /* center */ valtp['R'-'@']['A'-'@'] = FLAGCH | BRKAFT; /* right adjust */ valtp['O'-'@']['A'-'@'] = FLAGCH | BRKAFT; /* out adjust */ valtp['I'-'@']['A'-'@'] = FLAGCH | BRKAFT; /* in adjust */ valtp['P'-'@']['A'-'@'] = FLAGCH; /* pause */ valtp['H'-'@']['F'-'@'] = FLAGCH; /* horizontal fill */ valtp['L'-'@']['A'-'@'] = BRK | ARGTRUE; /* left adjust */ valtp['R'-'@']['B'-'@'] = CHARG; /* required blank */ valtp['E'-'@']['C'-'@'] = CHARG; /* escape character */ valtp['D'-'@']['C'-'@'] = CHARG; /* dot character */ valtp['C'-'@']['M'-'@'] = CHARG; /* comment character */ valtp['T'-'@']['C'-'@'] = CHARG; /* tab character */ valtp['G'-'@']['T'-'@'] = ARGTRUE;/* get-terminal */ valtp['R'-'@']['N'-'@'] = ARGTRUE;/* Roman-numeral */ } spchar() { valtp['T'-'@']['I'-'@'] = FLAGCH; /* tic */ val['T'-'@']['I'-'@'] = 'A' & 31; valtp['G'-'@']['R'-'@'] = FLAGCH; /* grave */ val['G'-'@']['R'-'@'] = ('B' & 31) | AUBS; valtp['A'-'@']['C'-'@'] = FLAGCH; /* acute */ val['A'-'@']['C'-'@'] = ('C' & 31) | AUBS; valtp['C'-'@']['I'-'@'] = FLAGCH; /* circumflex */ val['C'-'@']['I'-'@'] = ('D' & 31) | AUBS; valtp['H'-'@']['A'-'@'] = FLAGCH; /* hachek */ val['H'-'@']['A'-'@'] = ('E' & 31) | AUBS; valtp['M'-'@']['A'-'@'] = FLAGCH; /* macron */ val['M'-'@']['A'-'@'] = ('F' & 31) | AUBS; valtp['U'-'@']['M'-'@'] = FLAGCH; /* umlaut */ val['U'-'@']['M'-'@'] = ('G' & 31) | AUBS; valtp['B'-'@']['S'-'@'] = FLAGCH; /* back space */ val['B'-'@']['S'-'@'] = BCKFLAG; valtp['V'-'@']['L'-'@'] = FLAGCH; /* voice-less */ val['V'-'@']['L'-'@'] = ('H' & 31) | AUBS; valtp['U'-'@']['D'-'@'] = FLAGCH; /* under-dot */ val['U'-'@']['D'-'@'] = ('I' & 31) | AUBS; valtp['B'-'@']['U'-'@'] = FLAGCH; /* bullet */ val['B'-'@']['U'-'@'] = 'J' & 31; valtp['D'-'@']['A'-'@'] = FLAGCH; /* dagger */ val['D'-'@']['A'-'@'] = 'K' & 31; valtp['D'-'@']['D'-'@'] = FLAGCH; /* double-dagger */ val['D'-'@']['D'-'@'] = 'L' & 31; valtp['S'-'@']['E'-'@'] = FLAGCH; /* section */ val['S'-'@']['E'-'@'] = 'M' & 31; valtp['Q'-'@']['U'-'@'] = FLAGCH; /* quad */ val['Q'-'@']['U'-'@'] = 'N' & 31; valtp['M'-'@']['D'-'@'] = FLAGCH; /* mdash */ val['M'-'@']['D'-'@'] = 'O' & 31; valtp['N'-'@']['D'-'@'] = FLAGCH; /* ndash */ val['N'-'@']['D'-'@'] = 'P' & 31; valtp['D'-'@']['G'-'@'] = FLAGCH; /* di-graph */ val['D'-'@']['G'-'@'] = 'Q' & 31; valtp['D'-'@']['O'-'@'] = FLAGCH; /* digraph-o */ val['D'-'@']['O'-'@'] = 'R' & 31; valtp['B'-'@']['V'-'@'] = FLAGCH; /* bre-ve */ val['B'-'@']['V'-'@'] = ('S' & 31) | AUBS; valtp['S'-'@']['Y'-'@'] = FLAGCH; /* syllabic */ val['S'-'@']['Y'-'@'] = ('T' & 31) | AUBS; valtp['N'-'@']['S'-'@'] = FLAGCH; /* non-syllabic */ val['N'-'@']['S'-'@'] = ('U' & 31) | AUBS; valtp['C'-'@']['D'-'@'] = FLAGCH; /* ce-dilla */ val['C'-'@']['D'-'@'] = ('V' & 31) | AUBS; valtp['U'-'@']['T'-'@'] = FLAGCH; /* under-tie */ val['U'-'@']['T'-'@'] = ('W' & 31) | AUBS; valtp['O'-'@']['T'-'@'] = FLAGCH; /* over-tie */ val['O'-'@']['T'-'@'] = ('X' & 31) | AUBS; valtp['O'-'@']['D'-'@'] = FLAGCH; /* over-dot */ val['O'-'@']['D'-'@'] = ('Y' & 31) | AUBS; valtp['N'-'@']['A'-'@'] = FLAGCH; /* nasal */ val['N'-'@']['A'-'@'] = ('Z' & 31) | AUBS; valtp['B'-'@']['L'-'@'] = FLAGCH; /* blank */ val['B'-'@']['L'-'@'] = ' '; } valset() { int i, m; strcpy(editname,"e"); setmem(val, 2*27*27, 0); ll = 8 * INCH; sl = 2 * POINT; pl = 11 * VINCH; cs = 3; tm = 1 * VINCH; bm = 1 * VINCH; hm = 0; /* was PICA + 2 * POINT, but this would now give a page number at the top */ fm = PICA + 2 * POINT; rb = '_'; ec = '\\'; el = 'M'; cp = 15; em = 'E'; ds = 'G'; ex = 'W'; pr = 'p'; it = 4; sp = 'S'; sb = '0'; ul = '-'; val['D'-'@']['C'-'@'] = '.'; /* dot character */ val['C'-'@']['M'-'@'] = 'F'&31; /* comment character */ val['C'-'@']['E'-'@'] = CEFLAG; /* center */ val['R'-'@']['A'-'@'] = RAFLAG; /* right adjust */ val['O'-'@']['A'-'@'] = RAFLAG; /* out adjust */ val['I'-'@']['A'-'@'] = RAFLAG; /* in adjust */ val['P'-'@']['A'-'@'] = PAFLAG; /* pause */ val['H'-'@']['F'-'@'] = FRFLAG; /* horizontal fill */ val['C'-'@']['H'-'@'] = PICA; /* char. height */ val['P'-'@']['S'-'@'] = PICA + 2*POINT;/* paragraph spacing */ val['W'-'@']['I'-'@'] = 2*(PICA + 2*POINT); /* widow */ val['P'-'@']['F'-'@'] = 6; /* punctuation factor */ val['L'-'@']['F'-'@'] = 4; /* looseness factor */ val['S'-'@']['C'-'@'] = 2; /* space capitals */ val['R'-'@']['H'-'@'] = 0x10; /* rule hpattern */ val['R'-'@']['V'-'@'] = 0; /* rule vpattern */ for (i = 0; i < 64; i++) { m = PICA; /* Pica */ if (i & CMPRSSD) m = 14; /* Compressed */ if (i & EMPHSZD) m = 24; /* Emphasized */ if (i & PRPTNL) m = 0; /* Proportional */ if (i & ELITE) m = 20; /* Elite */ if (i & EXPNDD) m *= 2; /* Expanded */ modelen[i] = m; } } bendset() { int row; setmem(bending, 7*24, 0); for (row = 0; row < 24; row++) { if (row < 12) { /* backslant with slope = 2 */ bending[0][ixrow(row)] = row / 2; /* slant with slope = 2 */ bending[1][ixrow(row)] = 11 - row / 2; } else { /* slant with slope = 2 */ bending[0][ixrow(row)] = 11 - row / 2; /* backslant with slope = 2 */ bending[1][ixrow(row)] = row / 2; } /* backhand with slope 1/3 */ /* bending[2][ixrow(row)] = row / 3; */ /* thicken verticals toward top */ if (row < 8) bending[2][ixrow(row)] = (row % 2) ? 0 : 3; else if (row < 16) bending[2][ixrow(row)] = (row % 2) ? 0 : 2; } /* bulge left */ bending[3][ixrow( 0)] = 6; bending[3][ixrow( 1)] = 4; bending[3][ixrow( 2)] = 3; bending[3][ixrow( 3)] = 2; bending[3][ixrow( 4)] = 2; bending[3][ixrow( 5)] = 1; bending[3][ixrow( 6)] = 1; bending[3][ixrow( 7)] = 0; bending[3][ixrow( 8)] = 0; bending[3][ixrow( 9)] = 0; bending[3][ixrow(10)] = 0; bending[3][ixrow(11)] = 1; bending[3][ixrow(12)] = 1; bending[3][ixrow(13)] = 2; bending[3][ixrow(14)] = 2; bending[3][ixrow(15)] = 3; bending[3][ixrow(16)] = 4; bending[3][ixrow(17)] = 6; bending[3][ixrow(18)] = 6; bending[3][ixrow(19)] = 6; bending[3][ixrow(20)] = 6; bending[3][ixrow(21)] = 6; bending[3][ixrow(22)] = 6; bending[3][ixrow(23)] = 6; /* bulge right */ bending[4][ixrow( 0)] = 0; bending[4][ixrow( 1)] = 2; bending[4][ixrow( 2)] = 3; bending[4][ixrow( 3)] = 4; bending[4][ixrow( 4)] = 4; bending[4][ixrow( 5)] = 5; bending[4][ixrow( 6)] = 5; bending[4][ixrow( 7)] = 6; bending[4][ixrow( 8)] = 6; bending[4][ixrow( 9)] = 6; bending[4][ixrow(10)] = 6; bending[4][ixrow(11)] = 5; bending[4][ixrow(12)] = 5; bending[4][ixrow(13)] = 4; bending[4][ixrow(14)] = 4; bending[4][ixrow(15)] = 3; bending[4][ixrow(16)] = 2; bending[4][ixrow(17)] = 0; bending[4][ixrow(18)] = 0; bending[4][ixrow(19)] = 0; bending[4][ixrow(20)] = 0; bending[4][ixrow(21)] = 0; bending[4][ixrow(22)] = 0; bending[4][ixrow(23)] = 0; /* sweep ascenders left */ bending[5][ixrow( 0)] = 0; bending[5][ixrow( 1)] = 2; bending[5][ixrow( 2)] = 3; bending[5][ixrow( 3)] = 4; bending[5][ixrow( 4)] = 4; bending[5][ixrow( 5)] = 5; bending[5][ixrow( 6)] = 5; bending[5][ixrow( 7)] = 5; bending[5][ixrow( 8)] = 5; bending[5][ixrow( 9)] = 5; bending[5][ixrow(10)] = 5; bending[5][ixrow(11)] = 5; bending[5][ixrow(12)] = 5; bending[5][ixrow(13)] = 5; bending[5][ixrow(14)] = 5; bending[5][ixrow(15)] = 5; bending[5][ixrow(16)] = 5; bending[5][ixrow(17)] = 5; bending[5][ixrow(18)] = 5; bending[5][ixrow(19)] = 5; bending[5][ixrow(20)] = 5; bending[5][ixrow(21)] = 5; bending[5][ixrow(22)] = 5; bending[5][ixrow(23)] = 5; /* sweep descenders left */ bending[6][ixrow( 0)] = 5; bending[6][ixrow( 1)] = 5; bending[6][ixrow( 2)] = 5; bending[6][ixrow( 3)] = 5; bending[6][ixrow( 4)] = 5; bending[6][ixrow( 5)] = 5; bending[6][ixrow( 6)] = 5; bending[6][ixrow( 7)] = 5; bending[6][ixrow( 8)] = 5; bending[6][ixrow( 9)] = 5; bending[6][ixrow(10)] = 5; bending[6][ixrow(11)] = 5; bending[6][ixrow(12)] = 5; bending[6][ixrow(13)] = 5; bending[6][ixrow(14)] = 5; bending[6][ixrow(15)] = 5; bending[6][ixrow(16)] = 5; bending[6][ixrow(17)] = 5; bending[6][ixrow(18)] = 5; bending[6][ixrow(19)] = 4; bending[6][ixrow(20)] = 4; bending[6][ixrow(21)] = 3; bending[6][ixrow(22)] = 2; bending[6][ixrow(23)] = 0; } ixrow(row) int row; { return((row % 3)*8 + (7 - row / 3)); } pmset() { int i; for (i = 0; i < 256; i++) pmlen[i] = PICA; pms("!'`|",5,0); pms("().:;",6,0); pms(",",7,0); pmlen[34] = 8 * 2; pms("1I[]il",8,0); pms("j{}",9,0); pms("/<>XZ\\fkxz",10,0); pms("Jbcdghnpqrt",11,0); pms("'`",5,128); pms(".\\",7,128); pmlen[34+128] = 10 * 2; pms("(),:",8,128); pms("1;>il|",9,128); pms("!/