#define PS 10
#define FT 1
#define ULFONT 2
#define BDFONT 3
#define BIFONT 4
#define LL (unsigned) 65*INCH/10
#define VS ((12*INCH)/72)
#ifdef NROFF
# define EM t.Em
# define HOR t.Adj
# define VERT t.Vert
# define INCH 240
# define SPS INCH/10
# define SS INCH/10
# define TRAILER 0
# define PO 0
# define ASCII 1
# define PTID 1
# define LG 0
# define DTAB 0
# define ICS 2*SPS
#endif
#ifndef NROFF
# define INCH Inch
# define POINT (INCH/72)
# define HOR Hor
# define VERT Vert
# define SPS (EM/3)
# define SS 12
# define PO (INCH)
#define EM (((long) INCH * pts + 36) / 72)
#define EMPTS(pts) (((long) INCH * (pts) + 36) / 72)
# define ASCII 0
# define PTID 1
# define LG 1
# define DTAB (INCH/2)
# define ICS 3*SPS
#endif
#define LEADER 001
#define IMP 004
#define TAB 011
#define RPT 014
#define CHARHT 015
#define SLANT 016
#define DRAWFCN 017
#define DRAWLINE 'l'
#define DRAWCIRCLE 'c'
#define DRAWELLIPSE 'e'
#define DRAWARC 'a'
#define DRAWSPLINE '~'
#define LEFT 020
#define RIGHT 021
#define FILLER 022
#define XON 023
#define OHC 024
#define CONT 025
#define PRESC 026
#define UNPAD 027
#define XPAR 030
#define FLSS 031
#define WORDSP 032
#define ESC 033
#define XOFF 034
#define iscontrol(n) (n==035 || n==036)
#define HX 035
#define FONTPOS 036
#define HYPHEN c_hyphen
#define EMDASH c_emdash
#define RULE c_rule
#define MINUS c_minus
#define LIG_FI c_fi
#define LIG_FL c_fl
#define LIG_FF c_ff
#define LIG_FFI c_ffi
#define LIG_FFL c_ffl
#define ACUTE c_acute
#define GRAVE c_grave
#define UNDERLINE c_under
#define ROOTEN c_rooten
#define BOXRULE c_boxrule
#define LEFTHAND c_lefthand
#define DAGGER c_dagger
#define NFONT 10
#define EXTRAFONT 500
#define NN 400
#define NNAMES 15
#define NIF 15
#define NS 128
#define NTM 256
#define NEV 3
#define EVLSZ 10
#define DSIZE 512
#define NM 500
#define DELTA 1024
#define NHYP 10
#define NHEX 128
#define NTAB 40
#define NSO 5
#define NMF 5
#define WDSIZE 540
#define LNSIZE 680
#define NDI 5
#define NCHARS 512
#define NTRTAB NCHARS
#define NWIDCACHE NCHARS
#define NTRAP 20
#define NPN 20
#define FBUFSZ 256
#define OBUFSZ 4096
#define IBUFSZ 4096
#define NC 1024
#define NOV 10
#define NPP 10
#define MOT (01L<<15)
#define MOTV (07L<<15)
#define VMOT (01L<<16)
#define NMOT (01L<<17)
#define MAXMOT 32767
#define ismot(n) ((n) & MOT)
#define isvmot(n) ((n) & VMOT)
#define isnmot(n) ((n) & NMOT)
#define absmot(n) (unsigned)(0177777 & (n) & ~MOT)
#define ZBIT 0x80000000
#define iszbit(n) ((n) & ZBIT)
#define ABSCHAR 0400
#define SMASK (0177L << 24)
#define FMASK (0377L << 16)
#define SFMASK (SMASK|FMASK)
#define sbits(n) (unsigned)(((n) >> 24) & 0177)
#define fbits(n) (((n) >> 16) & 0377)
#define sfbits(n) (unsigned)(0177777 & (((n) & SFMASK) >> 16))
#define cbits(n) (unsigned)(0177777 & (n))
#define absbits(n) (cbits(n) & ~ABSCHAR)
#define setsbits(n,s) n = (n & ~SMASK) | (tchar)(s) << 24
#define setfbits(n,f) n = (n & ~FMASK) | (tchar)(f) << 16
#define setsfbits(n,sf) n = (n & ~SFMASK) | (tchar)(sf) << 16
#define setcbits(n,c) n = (n & ~077777L | (c))
#define BYTEMASK 0377
#define BYTE 8
#define ischar(n) (((n) & ~BYTEMASK) == 0)
#ifdef EUC
#ifdef NROFF
#define CSMASK 0x6000
#define MBMASK 0x1c00
#define MBMASK1 0x1800
#define FIRSTOFMB 0x1000
#define MIDDLEOFMB 0x0800
#define LASTOFMB 0x0400
#define BYTE_CHR 0x0000
#define cs(n) (((n) & CSMASK) >> 13)
#define setcsbits(n,c) n = ((n & ~CSMASK) | ((c) << 13))
#define CHMASK (BYTEMASK | CSMASK | MBMASK)
#define ZWDELIM1 ZBIT | FIRSTOFMB | ' '
#define ZWDELIM2 ZBIT | MIDDLEOFMB | ' '
#define ZWDELIM(c) ((c) == 0) ? ' ' : ((c) == 1) ? ZWDELIM1 : ZWDELIM2
#endif
#endif
#define ZONE 5
#define TABMASK 037777
#define RTAB (unsigned) 0100000
#define CTAB 040000
#define TABBIT 02
#define LDRBIT 04
#define FCBIT 010
#define PAIR(A,B) (A|(B<<BYTE))
#ifndef EUC
#define oput(c) if ((*obufp++ = (c)), obufp >= &obuf[OBUFSZ]) flusho(); else
#else
#ifndef NROFF
#define oput(c) if ((*obufp++ = (c)), obufp >= &obuf[OBUFSZ]) flusho(); else
#endif
#define oput(c) if ((*obufp++ = cbits(c) & BYTEMASK), obufp >= &obuf[OBUFSZ]) flusho(); else
#endif
typedef unsigned int filep;
#define BLK 128
#ifdef SMALLER
# define NBLIST 512
#else
# define NBLIST 1024
#endif
#define RD_OFFSET (NBLIST * BLK)
#define ENV_OFFSET 0
#define ENV_BLK ((NEV * sizeof(env) / sizeof(tchar) + BLK-1) / BLK)
typedef long tchar;
extern tchar getch(), getch0();
extern tchar rbf(), rbf0();
extern tchar mot(), hmot(), vmot();
extern tchar makem(), sethl();
extern tchar popi();
extern tchar getlg();
extern tchar xlss();
extern tchar setfield();
extern tchar setz();
extern tchar setch();
extern tchar setht(), setslant();
#define atoi(i) ((int) atoi0(i))
extern long atoi0();
extern int Inch, Hor, Vert, Unitwidth;
extern int c_hyphen;
extern int c_emdash;
extern int c_rule;
extern int c_minus;
extern int c_fi;
extern int c_fl;
extern int c_ff;
extern int c_ffi;
extern int c_ffl;
extern int c_acute;
extern int c_grave;
extern int c_under;
extern int c_rooten;
extern int c_boxrule;
extern int c_lefthand;
extern int c_dagger;
#ifdef stderr
# undef stderr
#endif
extern int stderr;
#ifdef DEBUG
extern int debug;
#define DB_MAC 01
#define DB_ALLC 02
#define DB_GETC 04
#define DB_LOOP 010
#endif
struct d {
filep op;
int dnl;
int dimac;
int ditrap;
int ditf;
int alss;
int blss;
int nls;
int mkline;
int maxl;
int hnl;
int curd;
};
struct s {
int nargs;
struct s *pframe;
filep pip;
int pnchar;
tchar prchar;
int ppendt;
tchar pch;
tchar *lastpbp;
int mname;
};
extern struct contab {
unsigned short rq;
struct contab *link;
int (*f)();
unsigned mx;
} contab[NM];
extern struct numtab {
short r;
short fmt;
short inc;
int val;
struct numtab *link;
} numtab[NN];
#define PN 0
#define NL 1
#define YR 2
#define HP 3
#define CT 4
#define DN 5
#define MO 6
#define DY 7
#define DW 8
#define LN 9
#define DL 10
#define ST 11
#define SB 12
#define CD 13
#define PID 14
#define ics env._ics
#define sps env._sps
#define spacesz env._spacesz
#define lss env._lss
#define lss1 env._lss1
#define ll env._ll
#define ll1 env._ll1
#define lt env._lt
#define lt1 env._lt1
#define ic env._ic
#define icf env._icf
#define chbits env._chbits
#define spbits env._spbits
#define nmbits env._nmbits
#define apts env._apts
#define apts1 env._apts1
#define pts env._pts
#define pts1 env._pts1
#define font env._font
#define font1 env._font1
#define ls env._ls
#define ls1 env._ls1
#define ad env._ad
#define nms env._nms
#define ndf env._ndf
#define fi env._fi
#define cc env._cc
#define c2 env._c2
#define ohc env._ohc
#define tdelim env._tdelim
#define hyf env._hyf
#define hyoff env._hyoff
#define un1 env._un1
#define tabc env._tabc
#define dotc env._dotc
#define adsp env._adsp
#define adrem env._adrem
#define lastl env._lastl
#define nel env._nel
#define admod env._admod
#define wordp env._wordp
#define spflg env._spflg
#define linep env._linep
#define wdend env._wdend
#define wdstart env._wdstart
#define wne env._wne
#define ne env._ne
#define nc env._nc
#define nb env._nb
#define lnmod env._lnmod
#define nwd env._nwd
#define nn env._nn
#define ni env._ni
#define ul env._ul
#define cu env._cu
#define ce env._ce
#define in env._in
#define in1 env._in1
#define un env._un
#define wch env._wch
#define pendt env._pendt
#define pendw env._pendw
#define pendnf env._pendnf
#define spread env._spread
#define it env._it
#define itmac env._itmac
#define lnsize env._lnsize
#define hyptr env._hyptr
#define tabtab env._tabtab
#define line env._line
#define word env._word
extern struct env {
int _ics;
int _sps;
int _spacesz;
int _lss;
int _lss1;
int _ll;
int _ll1;
int _lt;
int _lt1;
tchar _ic;
int _icf;
tchar _chbits;
tchar _spbits;
tchar _nmbits;
int _apts;
int _apts1;
int _pts;
int _pts1;
int _font;
int _font1;
int _ls;
int _ls1;
int _ad;
int _nms;
int _ndf;
int _fi;
int _cc;
int _c2;
int _ohc;
int _tdelim;
int _hyf;
int _hyoff;
int _un1;
int _tabc;
int _dotc;
int _adsp;
int _adrem;
int _lastl;
int _nel;
int _admod;
tchar *_wordp;
int _spflg;
tchar *_linep;
tchar *_wdend;
tchar *_wdstart;
int _wne;
int _ne;
int _nc;
int _nb;
int _lnmod;
int _nwd;
int _nn;
int _ni;
int _ul;
int _cu;
int _ce;
int _in;
int _in1;
int _un;
int _wch;
int _pendt;
tchar *_pendw;
int _pendnf;
int _spread;
int _it;
int _itmac;
int _lnsize;
tchar *_hyptr[NHYP];
int _tabtab[NTAB];
tchar _line[LNSIZE];
tchar _word[WDSIZE];
} env;