home *** CD-ROM | disk | FTP | other *** search
-
-
- /*
- ** modes.c
- **
- ** public domain use only Mark Ellington 1984
- **
- ** This program provides easy menu selection of some options
- ** of the Epson RX-80 and compatible printers.
- **
- */
-
-
-
- /* printer modes */
-
-
- main()
- {
- char s[3];
- int n;
-
- putchar(0x1a);
-
- puts("Printer mode selection:\n\n");
-
- puts("0: Exit.\n");
-
- puts("1: Emphasized mode on.\n");
-
- puts("2: Emphasized mode off.\n");
-
- puts("3: Double-strike on.\n");
-
- puts("4: Double-strike off.\n");
-
- puts("5: Elite mode on.\n");
-
- puts("6: Elite mode off.\n");
-
- puts("7: Compressed mode on.\n");
-
- puts("8: Compressed mode off.\n");
-
- puts("9: Set tabs.\n");
-
- puts("10: Skip-over-perforation OFF.\n");
-
- puts("11: Graphics character set on.\n");
-
- puts("12: Graphics character set off.\n");
-
- puts("13: Reset.\n");
-
- n = 1;
- while (n != 0) {
- gets(s);
- n = atoi(s);
- switch(n) {
- case 1: newmode('E');
- break;
- case 2: newmode('F');
- break;
- case 3: newmode('G');
- break;
- case 4: newmode('H');
- break;
- case 5: newmode('M');
- break;
- case 6: newmode('P');
- break;
- case 7: nbr(15);
- break;
- case 8: nbr(18);
- break;
- case 9: tabs();
- break;
- case 10: newmode('O');
- break;
- case 11:
- newmode('m');
- nbr(4);
- break;
- case 12:
- newmode('m');
- nbr(0);
- break;
- case 13: newmode(64);
- break;
- default: break;
- }
- }
- }
-
-
- /* single byte to printer */
-
- nbr(n)
- char n;
- {
- bdos(5,n);
- }
-
-
-
- /* escape sequence to printer "ESC byte" */
-
- newmode(c)
- char c; /* byte */
- {
- bdos(5,27); /* ESC */
- bdos(5,c); /* command char */
- }
-
-
-
-
- tabs()
- {
- char n;
- char s[4];
-
- puts("\nEnter number spaces per tab: ");
- gets(s);
- n = atoi(s);
-
- bdos(5,27); /* ESC */
- bdos(5,'e'); /* e */
- bdos(5,'0'); /* 0 */
- bdos(5,n); /* n spaces */
-
- }
-
-
-
-
-
- /* get string of input into array */
-
- gets(stri)
- char stri[80];
- {
- char c;
- int i;
-
- while ((c = getchar()) != '\n') {
- stri[i++] = c;
- }
- stri[i] = '\0';
-
- return(stri[0]); /* return 1st char */
- }
-
-
-
-
-
-
- /* convert byte string to integer */
-
- atoi(s) char s[8];
- {
- int i;
- unsigned int n;
-
- n = 0;
- for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
- n = 10 * n + s[i] - '0';
- return(n);
- }
-
-
-
-
- /* CP/M direct system call routine */
-
- bdos(funct,value)
- int funct, value;
- {
- funct; /* pass C reg data */
- #asm
- ;
- ; machine code CP/M system BDOS call
- ;
- BDOS EQU 0005H ;BDOS entry
- ;
- MOV C,L
- ;
- #endasm
-
- value;
- #asm
- MOV E,L
- MOV D,H
- ;
- CALL BDOS ;CALL CP/M
- MOV L,A
- MVI H,0
- RET
- #endasm
- }
-
-
-
-
-
- /* string to console */
-
- puts(s)
- char *s;
- {
-
- while (*s) putchar(*s++);
-
- }
-
-
-
-
-
-
-