10 REM EPSON MX-80 PRINTER CONFIG. PROGRAM 20 REM 30 REM THIS PROG. IS NOT TO BE USED IN A COMMERCIAL ENVIRONMENT 40 REM WITHOUT PROPER AUTHORIZATION. 50 REM 60 REM COPYRIGHT (c) RODERICK WAYNE HART WA3MEZ 70 REM JUNE 21, 1981 80 REM 90 REM system equates 100 CLR = 11 'clear screen command 110 BEL = 7 'bell command 120 ESC = 27 'escape command 130 D = 500 'delay constant 140 DPORT = 33 'console data port 150 REM 160 REM print sign-on message 170 GOSUB 2600 180 GOSUB 2710 190 GOSUB 2610 200 PRINT TAB(5); 210 PRINT "be sure to turn off the printer and turn it back on to" 220 PRINT TAB(5); 230 PRINT "initialize the printer memory before executing this prog-" 240 PRINT TAB(5); 250 PRINT "ram. type RETURN when you are ready." 260 PRINT:PRINT 270 PRINT TAB(4); 280 INPUT " ";S 290 REM 300 REM print menu 310 GOSUB 2600 320 GOSUB 2710 330 GOSUB 2610 340 PRINT TAB(5);"1. select character print mode" 350 PRINT TAB(5);"2. set line spacing" 360 PRINT TAB(5);"3. set vertical tabs" 370 PRINT TAB(5);"4. set horizontal tabs" 380 PRINT TAB(5);"5. set page length" 390 PRINT TAB(5);"6. set characters per line" 400 PRINT TAB(5);"7. execute printer test" 410 PRINT TAB(5);"8. return to CP/M" 420 GOSUB 2610 430 PRINT TAB(4); 440 INPUT " ";S 450 IF S = 1 THEN 560 460 IF S = 2 THEN 830 470 IF S = 3 THEN 1160 480 IF S = 4 THEN 1460 490 IF S = 5 THEN 1760 500 IF S = 6 THEN 1910 510 IF S = 7 THEN 2230 520 IF S = 8 THEN SYSTEM 530 GOSUB 2450 540 GOTO 310 550 REM 560 GOSUB 2600 570 PRINT TAB(22);"character print mode" 580 PRINT TAB(22);"--------------------" 590 GOSUB 2610 600 PRINT TAB(5);"1. double strike" 610 PRINT TAB(5);"2. emphasized" 620 PRINT TAB(5);"3. compressed" 630 PRINT TAB(5);"4. return to main menu" 640 GOSUB 2610 650 PRINT TAB(4); 660 INPUT " ";S 670 IF S = 1 THEN 740 680 IF S = 2 THEN 770 690 IF S = 3 THEN 800 700 IF S = 4 THEN 300 710 GOSUB 2450 720 GOTO 560 730 REM double strike 740 LPRINT CHR$(ESC)+"G"; 750 GOTO 560 760 REM emphasize 770 LPRINT CHR$(ESC)+"E"; 780 GOTO 560 790 REM compress 800 LPRINT CHR$(15); 810 GOTO 560 820 REM 830 GOSUB 2600 840 PRINT TAB(26);"line spacing" 850 PRINT TAB(26);"------------" 860 GOSUB 2610 870 PRINT TAB(5);"1. 1/6 inch" 880 PRINT TAB(5);"2. 1/8 inch" 890 PRINT TAB(5);"3. 7/72 inch" 900 PRINT TAB(5);"4. return to main menu" 910 GOSUB 2610 920 PRINT TAB(4); 930 INPUT " ";S 940 IF S = 1 THEN 1010 950 IF S = 2 THEN 1060 960 IF S = 3 THEN 1110 970 IF S = 4 THEN 310 980 GOSUB 2450 990 GOTO 830 1000 REM 1/6 inch line spacing 1010 LPRINT CHR$(ESC)+"A";CHR$(140);CHR$(ESC)+"2"; 1020 PRINT TAB(5); 1030 PRINT "line spacing set to 1/6 inch" 1040 GOTO 2340 1050 REM 1/8 inch line spacing 1060 LPRINT CHR$(ESC)+"A";CHR$(137);CHR$(ESC)+"0"; 1070 PRINT TAB(5); 1080 PRINT "line spacing set to 1/8 inch" 1090 GOTO 2340 1100 REM 7/72 inch line spacing 1110 LPRINT CHR$(ESC)+"A";CHR$(135);CHR$(ESC)+"1"; 1120 PRINT TAB(5); 1130 PRINT "line spacing set to 7/72 inch" 1140 GOTO 2340 1150 REM 1160 GOSUB 2600 1170 PRINT TAB(26);"vertical tabs" 1180 PRINT TAB(26);"-------------" 1190 T=0:T1=0:VTAB=0 1200 GOSUB 2610 1210 PRINT TAB(5); 1220 INPUT "how many vertical tabs do you wish to set ";VTAB 1230 IF VTAB = 0 GOTO 310 1240 PRINT 1250 PRINT TAB(5); 1260 PRINT "input the desired tab locations after the prompt" 1270 REM began sequence 1280 LPRINT CHR$(ESC)+"B"; 1290 FOR X = 1 TO VTAB 1300 GOSUB 2520 1310 IF T => 64 AND X < VTAB GOTO 2640 1320 IF T =< T1 GOTO 2390 1330 IF T => 64 GOTO 2390 1340 T1 = T 1350 REM send tab to printer 1360 LPRINT CHR$(T+128); 1370 NEXT X 1380 REM end sequence 1390 LPRINT CHR$(128); 1400 GOSUB 2610 1410 PRINT TAB(5); 1420 REM tell the human how many tabs we have processed 1430 PRINT VTAB;" vertical tabs set" 1440 GOTO 2340 1450 REM 1460 GOSUB 2600 1470 PRINT TAB(26);"horizontal tabs" 1480 PRINT TAB(26);"---------------" 1490 T=0:T1=0:HTAB=0 1500 GOSUB 2610 1510 PRINT TAB(5); 1520 INPUT "how many horizontal tabs do you wish to set ";HTAB 1530 IF HTAB = 0 GOTO 310 1540 PRINT 1550 PRINT TAB(5); 1560 PRINT "input the desired tab locations after the prompt" 1570 REM began sequence 1580 LPRINT CHR$(ESC)+"D"; 1590 FOR X = 1 TO HTAB 1600 GOSUB 2560 1610 IF T => 112 AND X < HTAB GOTO 2640 1620 IF T =< T1 GOTO 2390 1630 IF T => 112 GOTO 2390 1640 T1 = T 1650 REM send tab to printer 1660 LPRINT CHR$(T+128); 1670 NEXT X 1680 REM end sequence 1690 LPRINT CHR$(128); 1700 GOSUB 2610 1710 PRINT TAB(5); 1720 REM tell the human how many tabs we have processed 1730 PRINT HTAB;" horizontal tabs set" 1740 GOTO 2340 1750 REM 1760 GOSUB 2600 1770 PRINT TAB(27);"page length" 1780 PRINT TAB(27);"-----------" 1790 GOSUB 2610 1800 PRINT TAB(5); 1810 INPUT "page length --> ";L 1820 IF L > 66 GOTO 2420 1830 GOSUB 2610 1840 PRINT TAB(5); 1850 REM tell the human what we have done 1860 PRINT "page length set at ";L;" lines" 1870 REM tell printer page length 1880 LPRINT CHR$(ESC)+"C";L; 1890 GOTO 2340 1900 REM 1910 GOSUB 2600 1920 PRINT TAB(23);"characters per line" 1930 PRINT TAB(23);"-------------------" 1940 GOSUB 2610 1950 PRINT TAB(5);"1. 132 characters per line" 1960 PRINT TAB(5);"2. 80 characters per line" 1970 PRINT TAB(5);"3. 40 characters per line" 1980 PRINT TAB(5);"4. return to main menu" 1990 PRINT TAB(4); 2000 INPUT " ";S 2010 IF S = 1 THEN 2070 2020 IF S = 2 THEN 2120 2030 IF S = 3 THEN 2170 2040 IF S = 4 THEN 310 2050 GOSUB 2450 2060 GOTO 1910 2070 PRINT TAB(5); 2080 PRINT "printer set for 132 characters per line" 2090 REM setup for 132 cpl 2100 LPRINT CHR$(29); 2110 GOTO 2340 2120 PRINT TAB(5); 2130 PRINT "printer set for 80 characters per line" 2140 REM setup 80 cpl 2150 LPRINT CHR$(30); 2160 GOTO 2340 2170 PRINT TAB(5); 2180 PRINT "printer set for 40 characters per line" 2190 REM setup 40 cpl 2200 LPRINT CHR$(31); 2210 GOTO 2340 2220 REM terminal test routine 2230 GOSUB 2600 2240 PRINT:PRINT TAB(10); 2250 PRINT "type any ascii character to stop test "; 2260 LPRINT CHR$(140); 'form feed 2270 FOR X = 32 TO 127 2280 A = INP(DPORT) 'check for abort 2290 IF A <> 13 THEN 310 2300 LPRINT CHR$(X); 2310 NEXT X 2320 GOTO 2270 2330 REM subroutine 2340 GOSUB 2610 2350 PRINT TAB(5); 2360 INPUT "type return to continue";S 2370 GOTO 300 2380 REM subroutine 2390 GOSUB 2450 2400 GOTO 1300 2410 REM subroutine 2420 GOSUB 2450 2430 GOTO 1760 2440 REM error subroutine 2450 PRINT CHR$(CLR) 2460 PRINT CHR$(BEL);CHR$(BEL) 2470 PRINT TAB(14);"invalid selection, please try again !" 2480 FOR S = 1 TO D 'set up delay 2490 NEXT S 2500 RETURN 2510 REM subroutine 2520 PRINT:PRINT TAB(10); 2530 INPUT "vertical tab --> ";T 2540 RETURN 2550 REM subroutine 2560 PRINT:PRINT TAB(10); 2570 INPUT "horizontal tab --> ";T 2580 RETURN 2590 REM clear screen subroutine 2600 PRINT CHR$(CLR) 2610 PRINT:PRINT 2620 RETURN 2630 REM fatal error subroutine 2640 GOSUB 2600 2650 PRINT TAB(5);"FATAL ERROR, TURN OFF PRINTER AND START OVER !" 2660 PRINT:PRINT 2670 FOR X = 1 TO D 2680 NEXT X 2690 GOTO 310 2700 REM program title print subroutine 2710 PRINT TAB(15);"EPSON MX-80 PRINTER CONFIG. PROGRAM" 2720 PRINT TAB(15);"-----------------------------------" 2730 RETURN 2740 END AB(15);"EPSON MX-80 PRINTER CONFIG. PROGRAM" 2720 PRINT TAB(15);"-----------------