home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpm
/
list
/
ep-misc.ark
/
EPINIT.C
< prev
next >
Wrap
Text File
|
1988-05-21
|
14KB
|
453 lines
/*
initial data for EP
*/
#include <bdscio.h>
/*#include <hardware.h>*/
#include <ep.def>
#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("!/<IL^jnrtv{}",10,128);
pms("$69=?V[]abceghkmopqsuy",11,128);
}
pmshow(o)
int o;
{ int i;
char c;
for (i = 32; i < 48; i++)
printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
getchar(c);
for (i = 48; i < 64; i++)
printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
getchar(c);
for (i = 64; i < 80; i++)
printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
getchar(c);
for (i = 80; i < 96; i++)
printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
getchar(c);
for (i = 96; i <112; i++)
printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
getchar(c);
for (i =112; i <127; i++)
printf("\n#%3d %c = %2d", i+o, i, pmlen[i+o]/2);
getchar(c);
}
pms(s,l,o)
char *s, l, o;
{ while(*s) pmlen[o + *s++] = l * 2;
}
v(s)
char *s;
{ return(val[*s - '@'][*(s+1) - '@']);
}
savei()
{
int fd, i;
if ((fd = creat("ep.ini")) == ERROR)
{printf("\ncan't save"); exit(ERROR);}
if (write(fd, val, 21) != 21)
{printf("\nbad save"); exit(ERROR);}
if (close(fd) == ERROR)
{printf("\nbad save"); exit(ERROR);}
}