home *** CD-ROM | disk | FTP | other *** search
- #define nchars 64 /*number of chars in char set*/
- #define nlines 6 /*number of lines in a banner character*/
- #define pposs 85 /*number of print positions on a line (must be multiple of 4)*/
- /*followed by end of string character*/
- #define pospch 8 /*number of char positions per banner char*/
- #define chpln 10 /*number of banner characters per line*/
-
- struct bann{
- char alpha[nlines][pposs];
- };
- struct bann buffer,*bp buffer;
- char ctbl[nchars][nlines]{
- 036,041,046,051,046,035, /*@*/
- 014,022,041,077,041,041, /*A*/
- 076,041,076,041,041,076, /*B*/
- 036,041,040,040,041,036, /*C*/
- 076,041,041,041,041,076, /*D*/
- 077,040,076,040,040,077, /*E*/
- 077,040,076,040,040,040, /*F*/
- 036,041,040,047,041,036, /*G*/
- 041,041,077,041,041,041, /*H*/
- 004,004,004,004,004,004, /*I*/
- 001,001,001,001,041,036, /*J*/
- 041,042,074,044,042,041, /*K*/
- 040,040,040,040,040,077, /*L*/
- 041,063,055,041,041,041, /*M*/
- 041,061,051,045,043,041, /*N*/
- 036,041,041,041,041,036, /*O*/
- 076,041,041,076,040,040, /*P*/
- 036,041,041,045,042,035, /*Q*/
- 076,041,041,076,042,041, /*R*/
- 036,040,036,001,041,036, /*S*/
- 037,004,004,004,004,004, /*T*/
- 041,041,041,041,041,036, /*U*/
- 041,041,041,041,022,014, /*V*/
- 041,041,041,055,063,041, /*W*/
- 041,022,014,014,022,041, /*X*/
- 021,012,004,004,004,004, /*Y*/
- 077,002,004,010,020,077, /*Z*/
- 016,010,010,010,010,016, /*[*/
- 040,020,010,004,002,001, /*\*/
- 034,004,004,004,004,034, /*]*/
- 004,012,000,000,000,000, /*^*/
- 000,000,000,000,000,077, /*_*/
- 000,000,000,000,000,000, /* */
- 010,010,010,010,000,010, /*!*/
- 022,022,000,000,000,000, /*"*/
- 022,077,022,022,077,022, /*#*/
- 036,054,036,015,055,036, /*$*/
- 001,062,064,013,023,040, /*%*/
- 014,022,014,024,042,035, /*&*/
- 010,010,000,000,000,000, /*'*/
- 004,010,010,010,010,004, /*(*/
- 010,004,004,004,004,010, /*)*/
- 000,022,014,014,022,000 /***/
- };
- char blank ' ';
- char plot 'X';
- int msk 040; /*mask at sixth bit*/
-
- main(argc,argp)
- char **argp;int argc;
- {
- int i;
-
- /*if invoked with no arguments, prints error comment;
- if invoked with an argument, prints it in banner form.
- */
-
- if(argc<2){
- printf("missing argument\n");
- exit();
- }
- banner(argp[1],bp);
- banprt(bp);
- }
-
- banner(s,bufp)
- char *s;struct bann *bufp;
- {
- char c,*p,*q,*r;
- p=s;
- r=bufp;
- banset(blank,bufp);
-
- while((c= *s++)!=0){
- if((s-p)>chpln)return(s-p);
- if(c>='`')c =- ' '; /*map lower to upper case*/
- if(c<' ')c='#';
- if(c>'?')c=- 0100;
- q=ctbl[c];
- banfil(q,r);
- r=+pospch;
- }
- }
-
- banfil(c,p)
- char *c;
- struct bann *p;
- {
- int i,j;
- for(i=0;i<nlines;i++){
- for(j=0;j<pospch;j++){
- if(((c[i]<<j)&msk)!=0)p->alpha[i][j] = plot;
- }
- }
- return(0);
- }
-
- banset(c,p)
- char c;
- struct bann *p;
- {
- int i,j;
- for(i=0;i<nlines;i++)
- for(j=0;j<pposs-1;j++)
- p->alpha[i][j] = c;
- }
-
- banprt(ptr)
- struct bann *ptr;
- {
- int i,j;
- for(i=0;i<nlines;i++){
- ptr->alpha[i][pposs-1]='\0';
- for(j=pposs-2;j>=0;j--){
- if(ptr->alpha[i][j]!=blank)break;
- ptr->alpha[i][j]='\0';
- }
- printf("%s\n",ptr->alpha[i]);
- }
- }
-