10 ' FACELIFT: Selects typeface for Epson RX, FX or MX (w/ Graftrax+) printers
20 ' Caution:  Will not work with older MX's that require ASCII NULL for "0"
30 ' Type SPACEBAR to reset any selections already made
40 ' Type M or m to exit to BASIC
50 ' This program will NOT prevent irrational or meaningless choices, such as
60 ' trying to set proportional mode on an Epson RX-80 printer.
65 ' See REM at line 655 if you wish to include Proportional
70 ' Contributor is not responsible for the odd coding style herein.  Note that
80 ' FaceLift was originally Protected, no doubt to prevent people from looking
90 ' at an example of amateurish BASIC.  Who cares?  The program works.
100 PRINT CHR$(26)
110 PRINT TAB(10)STRING$(60,46)
120 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
130 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
140 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
150 PRINT TAB(10)CHR$(58)TAB(35)"FACELIFT (tm)"TAB(69)CHR$(58)
160 PRINT TAB(10)CHR$(58)TAB(35)STRING$(8,61)TAB(69)CHR$(58)
170 PRINT TAB(10)CHR$(58)TAB(35)TAB(69)CHR$(58)
180 PRINT TAB(10)CHR$(58)TAB(23)"for the EPSON MX, RX & FX PRINTERS"TAB(69)CHR$(58)
190 PRINT TAB(10)CHR$(58)TAB(24)TAB(69)CHR$(58)
200 PRINT TAB(10)CHR$(58)TAB(31)"CP/M VERSION 3.01"TAB(69)CHR$(58)
210 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
220 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
230 PRINT TAB(10)CHR$(58)TAB(30)"Turn Your Printer ON"TAB(69)CHR$(58)
240 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
250 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
260 PRINT TAB(10)CHR$(58)TAB(21)STRING$(38,46)TAB(69)CHR$(58)
270 PRINT TAB(10)CHR$(58)TAB(21)CHR$(58)TAB(58)CHR$(58)TAB(69)CHR$(58)
280 PRINT TAB(10)CHR$(58)STRING$(10,46)CHR$(58)" FOR TYPEFACE MENU -- PRESS ANY KEY "CHR$(58)STRING$(10,46)CHR$(58)
290 PRINT TAB(21)CHR$(58)STRING$(36,46)CHR$(58)
300 PRINT
310 GOSUB 890
320 IF X$<>"" THEN GOTO 350
330 PRINT CHR$(7);:PRINT CHR$(26):END
340 LPRINT CHR$(7);:PRINT CHR$(26):SYSTEM
350 PRINT CHR$(26)
360 X$=""
370 GOSUB 800
380 PRINT CHR$(26):Y$=Y$+CHR$(60)+X$+CHR$(62)
390 PRINT CHR$(26):PRINT TAB(10)STRING$(60,46)
400 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
410 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
420 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
430 PRINT TAB(10)CHR$(58)TAB(35)"TYPEFACES"TAB(69)CHR$(58)
440 PRINT TAB(10)CHR$(58)TAB(35)STRING$(9,61)TAB(69)CHR$(58)
450 PRINT
460 PRINT TAB(7) "TO CHOOSE A TYPEFACE, PRESS LETTER OR COMBINATION OF LETTERS BELOW"
470 PRINT
480 PRINT TAB(10)CHR$(58)TAB(20)"<B>abyface"TAB(49)"<U>nderline"TAB(69)CHR$(58)
490 PRINT TAB(10)CHR$(58)TAB(20)"<C>ondensed"TAB(49)"<D>oublestrike"TAB(69)CHR$(58)
500 PRINT TAB(10)CHR$(58)TAB(20)"<E>lite"TAB(49)"<H>eavy"TAB(69)CHR$(58)
510 PRINT TAB(10)CHR$(58)TAB(20)"<T>rimline"TAB(49)"<I>talics"TAB(69)CHR$(58)
520 PRINT TAB(10)CHR$(58)TAB(20)"<W>ide"TAB(49)"<P>roportional"TAB(69)CHR$(58)
530 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
540 PRINT TAB(10)CHR$(58)TAB(23)"TO CHANGE SELECTION - HIT SPACEBAR"TAB(69)CHR$(58)
550 PRINT TAB(10)CHR$(58)TAB(69)CHR$(58)
560 PRINT TAB(10)CHR$(58)TAB(18)"PRINTER COMMANDS: ";Y$;TAB(69)CHR$(58)
570 PRINT TAB(10)CHR$(58)TAB(17)STRING$(46,46)TAB(69)CHR$(58)
580 PRINT TAB(10)CHR$(58)STRING$(6,46)CHR$(58)" To SET PRINTER & EXIT FACELIFT, HIT RETURN "TAB(62)CHR$(58)STRING$(6,46)TAB(69)CHR$(58)
590 PRINT TAB(17)CHR$(58)STRING$(44,46)TAB(62)CHR$(58):GOSUB 890
600 ' Now set printer as indicated
610 ' Two bizarre lines that attempted to trap everything NOT a valid command
620 ' deleted in favor of much simpler INSTR construction.  Might have been
630 ' some kind of "hacker trap" coding; line buffer overflow was possible if
640 ' the file converted to ,A type and then loaded.  Wizards, who needs 'em?!
650 Q$ = "BbCcEeTtWwUuDdHhIi Mm" + CHR$(13)
655 REM Q$ = Q$ + "Pp"    '<-- Remove the REM if including Proportional
660 IF INSTR(Q$,X$) = 0 THEN PRINT CHR$(7): GOTO 390
670 IF X$="B" OR X$="b" THEN LPRINT CHR$(27);"A";CHR$(6);CHR$(27);"S";CHR$(1)CHR$(15);
680 IF X$="C" OR X$="c" THEN LPRINT CHR$(15);
690 IF X$="E" OR X$="e" THEN LPRINT CHR$(27);"M";
700 IF X$="T" OR X$="t" THEN LPRINT CHR$(27);"S0";
710 IF X$="W" OR X$="w" THEN LPRINT CHR$(27);"W1";
720 IF X$="U" OR X$="u" THEN LPRINT CHR$(27);"-1";
730 IF X$="D" OR X$="d" THEN LPRINT CHR$(27);"G";
740 IF X$="H" OR X$="h" THEN LPRINT CHR$(27);"E";
750 IF X$="I" OR X$="i" THEN LPRINT CHR$(27);"4";
760 IF X$="P" OR X$="p" THEN LPRINT CHR$(27);"p1";
770 IF X$=CHR$(32) THEN GOSUB 850
780 IF X$="M" OR X$="m" THEN GOTO 330;
790 IF X$=CHR$(13) THEN GOTO 340:ELSE GOTO 380;
800 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:X$="CLEAR"
810 PRINT
820 PRINT
830 PRINT
840 PRINT TAB(18)"Please make sure your PRINTER is ON and READY"
850 LPRINT CHR$(27)"@";CHR$(7);
860 X$="CLEAR"
870 Y$=""
880 RETURN
890 X$=INKEY$:IF X$="" THEN GOTO 890
900 RETURN
DY"
850 LPRINT CHR$(27)"@";CHR$(7);
860 X$="CLEAR"
870 Y$=""