diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/kane/checkpage.h |
Initial commit
Diffstat (limited to 'dviware/kane/checkpage.h')
-rw-r--r-- | dviware/kane/checkpage.h | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/dviware/kane/checkpage.h b/dviware/kane/checkpage.h new file mode 100644 index 0000000000..8deecaa9bc --- /dev/null +++ b/dviware/kane/checkpage.h @@ -0,0 +1,199 @@ + +Date: 20-MAR-1989 17:21:05 GMT +From: PHYOKANE@CS8700.UCG.IE +To: abbottp@ASTON.AC.UK +Subject: file checkpage.h +sender: hea"phyokane@cs8700.ucg.ie" <phyokane@cs8700.ucg.ie> + +/* -*-C-*- checkpage.h */ +/*-->checkpage*/ +/**********************************************************************/ +/***************************** checkpage ******************************/ +/**********************************************************************/ +void +checkpage(bytepos) /* check page whose BOP is at bytepos */ +long bytepos; + +{ + register BYTE command; /* current command */ + register INT16 i; /* command parameter; loop index */ + char tc; /* temporary character */ + INT32 k; /* temporary parameter */ + INT16 page_number; /* TeX's \count0 parameter */ + BOOLEAN seen_bop; /* flag for noting processing of BOP */ + +/*********************************************************************** +Check all commands between the BOP at bytepos and the next EOP, downloading +any characters not already loaded. +***********************************************************************/ + + seen_bop = FALSE; /* this is first time through */ + (void) FSEEK(dvifp,bytepos,0); /* start at the desired position */ + for (;;) /* "infinite" loop - exits when POST or second BOP met */ + { + command = (BYTE)nosignex(dvifp,(BYTE)1); + switch (command) + { + + case SET1: + case SET2: + case SET3: + case SET4: + (void)checkchldd((BYTE)nosignex(dvifp,(BYTE)(command-SET1+1))); + break; + + case SET_RULE: + (void) nosignex(dvifp,(BYTE)4); + (void) nosignex(dvifp,(BYTE)4); + break; + + case PUT1: + case PUT2: + case PUT3: + case PUT4: + (void)checkchldd((BYTE)nosignex(dvifp,(BYTE)(command-PUT1+1))); + break; + + case PUT_RULE: + (void) nosignex(dvifp,(BYTE)4); + (void) nosignex(dvifp,(BYTE)4); + break; + + case NOP: + break; + + case BOP: + if (seen_bop) + return; /* we have been here already */ + seen_bop = TRUE; + + for (i=0; i<=9; i++) + (void)(INT32)signex(dvifp,(BYTE)4); + if (!quiet) + (void)fprintf(stderr,"*"); + + (void) nosignex(dvifp,(BYTE)4); /* skip prev. page ptr */ + (void)bopact(); + fontptr = (struct font_entry*)NULL; + break; + + case EOP: + return; + + case PUSH: + break; + + case POP: + break; + + case RIGHT1: + case RIGHT2: + case RIGHT3: + case RIGHT4: + (void)signex(dvifp,(BYTE)(command-RIGHT1+1)); + break; + + case W0: + break; + + case W1: + case W2: + case W3: + case W4: + (void)signex(dvifp,(BYTE)(command-W1+1)); + break; + + case X0: + break; + + case X1: + case X2: + case X3: + case X4: + (void)signex(dvifp,(BYTE)(command-X1+1)); + break; + + case DOWN1: + case DOWN2: + case DOWN3: + case DOWN4: + (void)signex(dvifp,(BYTE)(command-DOWN1+1)); + break; + + case Y0: + break; + + case Y1: + case Y2: + case Y3: + case Y4: + (void)signex(dvifp,(BYTE)(command-Y1+1)); + break; + + case Z0: + break; + + case Z1: + case Z2: + case Z3: + case Z4: + (void) signex(dvifp,(BYTE)(command-Z1+1)); + break; + + case FNT1: + case FNT2: + case FNT3: + case FNT4: + (void)setfntnm((INT32)nosignex(dvifp, + (BYTE)(command-FNT1+1))); + break; + + case XXX1: + case XXX2: + case XXX3: + case XXX4: + k = (INT32)nosignex(dvifp,(BYTE)(command-XXX1+1)); + while (k--) + { + (void)nosignex(dvifp,(BYTE)1); + } + break; + + case FNT_DEF1: + case FNT_DEF2: + case FNT_DEF3: + case FNT_DEF4: + if (preload) + (void)skipfont ((INT32) nosignex(dvifp, + (BYTE)(command-FNT_DEF1+1))); + else + (void)readfont ((INT32) nosignex(dvifp, + (BYTE)(command-FNT_DEF1+1))); + break; + + case PRE: + (void)fatal("checkpage(): PRE occurs within file"); + break; + + case POST: + break; + + case POST_POST: + (void)fatal("checkpage(): POST_POST with no preceding POST"); + break; + + default: + if (command >= FONT_00 && command <= FONT_63) + (void)setfntnm((INT32)(command - FONT_00)); + else if (command >= SETC_000 && command <= SETC_127) + (void)checkchldd((BYTE)(command-SETC_000)); + else + { + (void)sprintf(message,"checkpage(): %d is an undefined command", + command); + (void)fatal(message); + } + break; + } + } + } |