home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <sgtty.h>
-
- #define SP ' '
- #define TB '\t'
- #define NL '\n'
-
- # define ESC 033
- # define RHM 060
- # define SI 017
- # define DEL 0177
- # define SET '1'
- # define CLR '2'
- # define MGN '9'
- # define CR '\r'
- # define BS '\b'
-
- struct sysnod {
- char *sysnam;
- int sysval;
- };
-
- #define DASI300 1
- #define DASI300S 2
- #define DASI450 3
- #define TN300 4
- #define TTY37 5
- #define HP 6
- struct sysnod tty[] = {
- {"dasi300", DASI300},
- {"300", DASI300},
- {"dasi300s", DASI300S},
- {"300s", DASI300S},
- {"dasi450", DASI450},
- {"450", DASI450},
- {"37", TTY37},
- {"tty37", TTY37},
- {"tn300", TN300},
- {"terminet", TN300},
- {"tn", TN300},
- {"hp", HP},
- {0, 0},
- };
- int margset = 1;
-
- syslook(w)
- char *w;
- {
- register struct sysnod *sp;
-
- for (sp = tty; sp->sysnam!=NULL; sp++)
- if (strcmp(sp->sysnam, w)==0)
- return(sp->sysval);
- return(0);
- }
-
- main(argc,argv)
- int argc; char **argv;
- {
- struct sgttyb tb;
- int type;
-
- type=0;
- if (argc>=2 && strcmp(argv[1],"-n")==0) {
- margset--; argc--; argv++;
- }
- if (argc>=2) {
- type=syslook(argv[1]);
- }
-
- switch(type) {
-
- case DASI300: dasi300(); break;
-
- case DASI300S: dasi300(); break;
-
- case DASI450: dasi450(); break;
-
- case TN300: tn300(); break;
-
- case TTY37: tty37(); break;
-
- case HP: hp2645(); break;
-
- default:
- gtty (0, &tb);
- if ( (tb.sg_flags & (LCASE|CRMOD)) == CRMOD) {
- /* test for CR map on, upper case off, i.e. terminet but not 33 */
- if ((tb.sg_ispeed) == B300) /* test for 300 baud */
- misc();
- }
- else if ((tb.sg_flags & (CRMOD|LCASE)) == 0 && (tb.sg_ispeed ) == B150) {
- /* apparent model 37 */
- tty37();
- }
- }
- }
-
- clear(n)
- {
- escape(CLR);
- delay(n);
- putchar(CR); nl();
- }
-
- delay(n)
- {
- while (n--) putchar(DEL);
- }
-
- tabs(n)
- {
- int i,j;
-
- if(margset) n--;
-
- for( i=0; i<n; ++i ){
- for( j=0; j<8; ++j ) {
- putchar(SP);
- }
- escape(SET);
- }
- }
-
- margin(n)
- {
- int i;
-
- if(margset) {
- for( i=0; i<n; ++i) putchar(SP);
- }
- }
-
- escape(c)
- {
- putchar(ESC); putchar(c);
- }
-
- bs(n)
- {
- while (n--) putchar(BS);
- }
-
- nl()
- {
- putchar(NL);
- }
-
-
-
- /* ======== terminal types ======== */
-
- dasi450()
- {
- struct sgttyb t;
- gtty(0,&t);
- t.sg_flags &= ~ALLDELAY;
- stty(0,&t);
- clear(8); bs(16); margin(8); escape(MGN); nl(); tabs(16);
- escape(RHM); nl();
- }
-
- tty37()
- {
- putchar(SI); clear(40); bs(8); tabs(9); nl();
- }
-
- dasi300()
- {
- clear(8); tabs(15); nl();
- }
-
- tn300()
- {
- struct sgttyb t;
- gtty(0,&t);
- t.sg_flags &= ~ALLDELAY;
- t.sg_flags |= CR1|BS1;
- stty(0,&t);
- clear(8); margin(8); escape(SET); tabs(14); nl();
- }
-
- hp2645()
- {
- escape('3'); /*clr*/
- putchar(CR);
- tabs(10);
- nl();
- }
-
- misc()
- {
- tabs(14); nl();
- }
-