2021-10-11 18:20:23 -03:00

140 lines
1.9 KiB
C

#ifndef lint
static char sccsid[] = "@(#)bcd.c 1.1 92/07/30 SMI"; /* from UCB 4.1 82/10/24 */
#endif
#include <stdio.h>
#include <ctype.h>
#define CARDLEN 48 /* number of columns in the card */
int chtab[] = {
00000, /* */
03004, /* ! */
02404, /* " */
02040, /* sharp */
02042, /* $ */
02104, /* % */
00001, /* & */
03002, /* ' */
02201, /* ( */
02202, /* ) */
02102, /* * */
00005, /* + */
02044, /* , */
00002, /* - */
02041, /* . */
00014, /* / */
00004, /* 0 */
00010, /* 1 */
00020, /* 2 */
00040, /* 3 */
00100, /* 4 */
00200, /* 5 */
00400, /* 6 */
01000, /* 7 */
02000, /* 8 */
04000, /* 9 */
02200, /* : */
02402, /* ; */
02401, /* < */
02204, /* = */
02400, /* > */
03000, /* ? */
02100, /* at */
011,
021,
041,
0101,
0201,
0401,
01001,
02001,
04001,
012,
022,
042,
0102,
0202,
0402,
01002,
02002,
02002,
024,
044,
0104,
0204,
0404,
01004,
02004,
04004,
02020, /* [ */
03001, /* \ */
02101, /* ] */
00006, /* ^ */
02024 /* _ */
};
char s[128];
char *sp = {&s[0]};
main(argc, argv)
char *argv[];
{
char *spp;
int i;
int j;
int c;
int l;
if (argc<2) {
fputs("$ ", stdout);
while ((c=getchar())!='\0'&&c!='\n')
*sp++ = c;
*sp = 0;
sp = &s[0];
} else
sp = *++argv;
fputs("\n\n\n\n", stdout);
putchar(' ');
for(i=0;i<CARDLEN;i++)
putchar('_');
putchar('\n');
putchar('/');
spp = sp;
l = 0;
while(c = *spp) {
if (islower(c)) c = toupper(c);
*spp++ = c;
if(l<CARDLEN) putchar(c);
l++;
}
i = CARDLEN + 1 - l;
while(--i>0) putchar(' ');
fputs("|\n", stdout);
j = 0;
spp = sp;
while (j++<12) {
putchar('|');
i = 0;
spp = sp;
while (i<CARDLEN) {
if(i>l) c = 0;
else c = *spp++ - 040;
i++;
if (c<0 || c>137) c = 0;
if ((chtab[c]>>(j-1))&1)
fputs("[\b]", stdout);
else
putchar(j>3?'0'+j-3:' ');
}
fputs("|\n", stdout);
}
putchar('|');
for(i=0;i<CARDLEN;i++)
putchar('_');
fputs("|\n", stdout);
fputs("\n\n\n\n", stdout);
exit(0);
/* NOTREACHED */
}