/* XPAPER.C - an extended version of */ /* CP/M+ PAPER utility, enabling the setting */ /* of typestyle and some other frills $ */ #include "stdio.h" #include "xpaperh.c" int i, typecode = 0, tc_changed=0,d_flag = 0; FILE *LSTptr; main(argc, argv) int argc; char *argv[]; { FAST char argv_buffer[MAXARGS * 2 + 132]; cpm_cmd_line (&argc,&argv,argv_buffer); openprinter(); *argv++; argc--; /* to dispose of arg. 0 */ while (argc--) interpret(*argv++); if (tc_changed)settypestyle(); if (d_flag) setdefaults(); closeprinter(); } openprinter() { if (!(LSTptr=(fopen("LST:","wb")))) { fputs("cannot open LST:",stderr); exit(1); } } closeprinter() { fclose(LSTptr); } interpret(code) char *code; { int unknown; char *save; unknown = FALSE; save=code; switch (*code++) { case 'L' : switch (*code++) /* set line spacing */ { case '6': fprintf(LSTptr,"%s",_6LPI); break; case '8': fprintf(LSTptr,"%s",_8LPI); break; case '1': if (*code=='0') fprintf(LSTptr,"%s",_10LPI); else unknown=TRUE; break; default: unknown=TRUE; } break; case 'M' : switch (*code++) /* margins */ { case '(': fprintf(LSTptr,"%s%c",LM, atoi(code)); break; case ')': fprintf(LSTptr,"%s%c",RM, atoi(code)); break; default: unknown=TRUE; } break; case 'E' : switch (*code) /* paper end detection */ { case 'N': fprintf(LSTptr,"%s",PDN); break; case 'F': fprintf(LSTptr,"%s",PDF); break; default: unknown=TRUE; } break; case 'P' : switch (*code++) /* page length lines/inches */ { case 'L': fprintf(LSTptr,"%s%c",PL, atoi(code)); break; case 'I': fprintf(LSTptr,"%s%c%c",PL,'\0', atoi(code)); break; default: unknown=TRUE; } break; case 'C' : fprintf(LSTptr,"%s",CP); /* continuous paper */ break; case 'S' : fprintf(LSTptr,"%s",SS); /* single sheet */ break; case 'G' : (i=(atoi(code))) ? fprintf(LSTptr,"%s%c",GAP, i): fprintf(LSTptr,"%s",UNGAP); break; /* set gap length */ case 'R' : fprintf(LSTptr,"%s",RST); break; /* reset to current defaults */ case 'D' : d_flag=TRUE; break; /* to save current settings */ case 'T' : tc_changed=TRUE; switch (*code) /* typestyle */ { case 'E': typecode|=0x20; break; case 'D': typecode|=0x10; break; case 'B': typecode|=0x08; break; case 'C': typecode|=0x04; break; case 'P': typecode|=0x02; break; case 'L': typecode|=0x01; break; default: unknown=TRUE; } break; /* setting bits in typecode */ case 'Q' : switch (*code) /* hi/draft quality */ { case 'H': fprintf(LSTptr,"%s",HQN); break; case 'D': fprintf(LSTptr,"%s",HQF); break; default: unknown=TRUE; } break; case 'I' : switch (*code) /* italics */ { case 'N': fprintf(LSTptr,"%s",ITAL); break; case 'F': fprintf(LSTptr,"%s",NORM); break; default: unknown=TRUE; } break; case 'Z' : switch (*code) /* zero style */ { case '0': fprintf(LSTptr,"%s",ZS); break; case 'O': fprintf(LSTptr,"%s",ZNS); break; default: unknown=TRUE; } break; case 'V' : fprintf(LSTptr,"%s%c",LGE, atoi(code)); break; /* language variant */ case 'A' : switch (*code) /* set A4/A5 defaults */ { case '4': interpret("PL70"); interpret("L6"); interpret("G3"); interpret("S"); interpret("EN"); break; case '5': interpret("PL50"); interpret("L6"); interpret("G3"); interpret("S"); interpret("EN"); break; default: unknown=TRUE; } break; default: if (i = (atoi(save))) { fprintf(LSTptr,"%s%c%c",PL,'\0',i); interpret("C"); interpret("EF"); interpret("L6"); interpret("G0"); } else unknown=TRUE; } /* end of switch (code++) */ if (unknown) fprintf(stderr,"\nUnknown action: %s",save); } setdefaults() { fprintf(LSTptr,"%s",SETDF); } settypestyle() { fprintf(LSTptr,"%s%c",STS,typecode); } #include ?cpm.lib #include ?stdio.lib STptr,"%s",SETDF); } settypestyle() { fprintf(LSTptr,"%s%c