home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / f / mx80form.bas < prev    next >
Encoding:
BASIC Source File  |  1994-07-13  |  7.3 KB  |  276 lines

  1. 10 REM EPSON MX-80 PRINTER CONFIG. PROGRAM
  2. 20 REM
  3. 30 REM THIS PROG. IS NOT TO BE USED IN A COMMERCIAL ENVIRONMENT
  4. 40 REM WITHOUT PROPER AUTHORIZATION.
  5. 50 REM
  6. 60 REM COPYRIGHT (c) RODERICK WAYNE HART WA3MEZ
  7. 70 REM JUNE 21, 1981
  8. 80 REM
  9. 90 REM system equates
  10. 100 CLR = 11        'clear screen command
  11. 110 BEL = 7        'bell command
  12. 120 ESC = 27        'escape command
  13. 130 D = 500        'delay constant
  14. 140 DPORT = 33        'console data port
  15. 150 REM
  16. 160 REM print sign-on message
  17. 170 GOSUB 2600
  18. 180 GOSUB 2710
  19. 190 GOSUB 2610
  20. 200 PRINT TAB(5);
  21. 210 PRINT "be sure to turn off the printer and turn it back on to"
  22. 220 PRINT TAB(5);
  23. 230 PRINT "initialize the printer memory before executing this prog-"
  24. 240 PRINT TAB(5);
  25. 250 PRINT "ram. type RETURN when you are ready."
  26. 260 PRINT:PRINT
  27. 270 PRINT TAB(4);
  28. 280 INPUT " ";S
  29. 290 REM
  30. 300 REM print menu
  31. 310 GOSUB 2600
  32. 320 GOSUB 2710
  33. 330 GOSUB 2610
  34. 340 PRINT TAB(5);"1. select character print mode"
  35. 350 PRINT TAB(5);"2. set line spacing"
  36. 360 PRINT TAB(5);"3. set vertical tabs"
  37. 370 PRINT TAB(5);"4. set horizontal tabs"
  38. 380 PRINT TAB(5);"5. set page length"
  39. 390 PRINT TAB(5);"6. set characters per line"
  40. 400 PRINT TAB(5);"7. execute printer test"
  41. 410 PRINT TAB(5);"8. return to CP/M"
  42. 420 GOSUB 2610
  43. 430 PRINT TAB(4);
  44. 440 INPUT " ";S
  45. 450 IF S = 1 THEN 560
  46. 460 IF S = 2 THEN 830
  47. 470 IF S = 3 THEN 1160
  48. 480 IF S = 4 THEN 1460
  49. 490 IF S = 5 THEN 1760
  50. 500 IF S = 6 THEN 1910
  51. 510 IF S = 7 THEN 2230
  52. 520 IF S = 8 THEN SYSTEM
  53. 530 GOSUB 2450
  54. 540 GOTO 310
  55. 550 REM
  56. 560 GOSUB 2600
  57. 570 PRINT TAB(22);"character print mode"
  58. 580 PRINT TAB(22);"--------------------"
  59. 590 GOSUB 2610
  60. 600 PRINT TAB(5);"1. double strike"
  61. 610 PRINT TAB(5);"2. emphasized"
  62. 620 PRINT TAB(5);"3. compressed"
  63. 630 PRINT TAB(5);"4. return to main menu"
  64. 640 GOSUB 2610
  65. 650 PRINT TAB(4);
  66. 660 INPUT " ";S
  67. 670 IF S = 1 THEN 740
  68. 680 IF S = 2 THEN 770
  69. 690 IF S = 3 THEN 800
  70. 700 IF S = 4 THEN 300
  71. 710 GOSUB 2450
  72. 720 GOTO 560
  73. 730 REM double strike
  74. 740 LPRINT CHR$(ESC)+"G";
  75. 750 GOTO 560
  76. 760 REM emphasize
  77. 770 LPRINT CHR$(ESC)+"E";
  78. 780 GOTO 560
  79. 790 REM compress
  80. 800 LPRINT CHR$(15);
  81. 810 GOTO 560
  82. 820 REM
  83. 830 GOSUB 2600
  84. 840 PRINT TAB(26);"line spacing"
  85. 850 PRINT TAB(26);"------------"
  86. 860 GOSUB 2610
  87. 870 PRINT TAB(5);"1. 1/6 inch"
  88. 880 PRINT TAB(5);"2. 1/8 inch"
  89. 890 PRINT TAB(5);"3. 7/72 inch"
  90. 900 PRINT TAB(5);"4. return to main menu"
  91. 910 GOSUB 2610
  92. 920 PRINT TAB(4);
  93. 930 INPUT " ";S
  94. 940 IF S = 1 THEN 1010
  95. 950 IF S = 2 THEN 1060
  96. 960 IF S = 3 THEN 1110
  97. 970 IF S = 4 THEN 310
  98. 980 GOSUB 2450
  99. 990 GOTO 830
  100. 1000 REM 1/6 inch line spacing
  101. 1010 LPRINT CHR$(ESC)+"A";CHR$(140);CHR$(ESC)+"2";
  102. 1020 PRINT TAB(5);
  103. 1030 PRINT "line spacing set to 1/6 inch"
  104. 1040 GOTO 2340
  105. 1050 REM 1/8 inch line spacing
  106. 1060 LPRINT CHR$(ESC)+"A";CHR$(137);CHR$(ESC)+"0";
  107. 1070 PRINT TAB(5);
  108. 1080 PRINT "line spacing set to 1/8 inch"
  109. 1090 GOTO 2340
  110. 1100 REM 7/72 inch line spacing
  111. 1110 LPRINT CHR$(ESC)+"A";CHR$(135);CHR$(ESC)+"1";
  112. 1120 PRINT TAB(5);
  113. 1130 PRINT "line spacing set to 7/72 inch"
  114. 1140 GOTO 2340
  115. 1150 REM
  116. 1160 GOSUB 2600
  117. 1170 PRINT TAB(26);"vertical tabs"
  118. 1180 PRINT TAB(26);"-------------"
  119. 1190 T=0:T1=0:VTAB=0
  120. 1200 GOSUB 2610
  121. 1210 PRINT TAB(5);
  122. 1220 INPUT "how many vertical tabs do you wish to set ";VTAB
  123. 1230 IF VTAB = 0 GOTO 310
  124. 1240 PRINT
  125. 1250 PRINT TAB(5);
  126. 1260 PRINT "input the desired tab locations after the prompt"
  127. 1270 REM began sequence
  128. 1280 LPRINT CHR$(ESC)+"B";
  129. 1290 FOR X = 1 TO VTAB
  130. 1300 GOSUB 2520
  131. 1310 IF T => 64 AND X < VTAB GOTO 2640
  132. 1320 IF T =< T1 GOTO 2390
  133. 1330 IF T => 64 GOTO 2390
  134. 1340 T1 = T
  135. 1350 REM send tab to printer
  136. 1360 LPRINT CHR$(T+128);
  137. 1370 NEXT X
  138. 1380 REM end sequence
  139. 1390 LPRINT CHR$(128);
  140. 1400 GOSUB 2610
  141. 1410 PRINT TAB(5);
  142. 1420 REM tell the human how many tabs we have processed
  143. 1430 PRINT VTAB;" vertical tabs set"
  144. 1440 GOTO 2340
  145. 1450 REM
  146. 1460 GOSUB 2600
  147. 1470 PRINT TAB(26);"horizontal tabs"
  148. 1480 PRINT TAB(26);"---------------"
  149. 1490 T=0:T1=0:HTAB=0
  150. 1500 GOSUB 2610
  151. 1510 PRINT TAB(5);
  152. 1520 INPUT "how many horizontal tabs do you wish to set ";HTAB
  153. 1530 IF HTAB = 0 GOTO 310
  154. 1540 PRINT
  155. 1550 PRINT TAB(5);
  156. 1560 PRINT "input the desired tab locations after the prompt"
  157. 1570 REM began sequence
  158. 1580 LPRINT CHR$(ESC)+"D";
  159. 1590 FOR X = 1 TO HTAB
  160. 1600 GOSUB 2560
  161. 1610 IF T => 112 AND X < HTAB GOTO 2640
  162. 1620 IF T =< T1 GOTO 2390
  163. 1630 IF T => 112 GOTO 2390
  164. 1640 T1 = T
  165. 1650 REM send tab to printer
  166. 1660 LPRINT CHR$(T+128);
  167. 1670 NEXT X
  168. 1680 REM end sequence
  169. 1690 LPRINT CHR$(128);
  170. 1700 GOSUB 2610
  171. 1710 PRINT TAB(5);
  172. 1720 REM tell the human how many tabs we have processed
  173. 1730 PRINT HTAB;" horizontal tabs set"
  174. 1740 GOTO 2340
  175. 1750 REM
  176. 1760 GOSUB 2600
  177. 1770 PRINT TAB(27);"page length"
  178. 1780 PRINT TAB(27);"-----------"
  179. 1790 GOSUB 2610
  180. 1800 PRINT TAB(5);
  181. 1810 INPUT "page length --> ";L
  182. 1820 IF L > 66 GOTO 2420
  183. 1830 GOSUB 2610
  184. 1840 PRINT TAB(5);
  185. 1850 REM tell the human what we have done
  186. 1860 PRINT "page length set at ";L;" lines"
  187. 1870 REM tell printer page length
  188. 1880 LPRINT CHR$(ESC)+"C";L;
  189. 1890 GOTO 2340
  190. 1900 REM
  191. 1910 GOSUB 2600
  192. 1920 PRINT TAB(23);"characters per line"
  193. 1930 PRINT TAB(23);"-------------------"
  194. 1940 GOSUB 2610
  195. 1950 PRINT TAB(5);"1. 132 characters per line"
  196. 1960 PRINT TAB(5);"2. 80 characters per line"
  197. 1970 PRINT TAB(5);"3. 40 characters per line"
  198. 1980 PRINT TAB(5);"4. return to main menu"
  199. 1990 PRINT TAB(4);
  200. 2000 INPUT " ";S
  201. 2010 IF S = 1 THEN 2070
  202. 2020 IF S = 2 THEN 2120
  203. 2030 IF S = 3 THEN 2170
  204. 2040 IF S = 4 THEN 310
  205. 2050 GOSUB 2450
  206. 2060 GOTO 1910
  207. 2070 PRINT TAB(5);
  208. 2080 PRINT "printer set for 132 characters per line"
  209. 2090 REM setup for 132 cpl
  210. 2100 LPRINT CHR$(29);
  211. 2110 GOTO 2340
  212. 2120 PRINT TAB(5);
  213. 2130 PRINT "printer set for 80 characters per line"
  214. 2140 REM setup 80 cpl
  215. 2150 LPRINT CHR$(30);
  216. 2160 GOTO 2340
  217. 2170 PRINT TAB(5);
  218. 2180 PRINT "printer set for 40 characters per line"
  219. 2190 REM setup 40 cpl
  220. 2200 LPRINT CHR$(31);
  221. 2210 GOTO 2340
  222. 2220 REM terminal test routine
  223. 2230 GOSUB 2600
  224. 2240 PRINT:PRINT TAB(10);
  225. 2250 PRINT "type any ascii character to stop test ";
  226. 2260 LPRINT CHR$(140);        'form feed
  227. 2270 FOR X = 32 TO 127
  228. 2280 A = INP(DPORT)        'check for abort
  229. 2290 IF A <> 13 THEN 310
  230. 2300 LPRINT CHR$(X);
  231. 2310 NEXT X
  232. 2320 GOTO 2270
  233. 2330 REM subroutine
  234. 2340 GOSUB 2610
  235. 2350 PRINT TAB(5);
  236. 2360 INPUT "type return to continue";S
  237. 2370 GOTO 300
  238. 2380 REM subroutine
  239. 2390 GOSUB 2450
  240. 2400 GOTO 1300
  241. 2410 REM subroutine
  242. 2420 GOSUB 2450
  243. 2430 GOTO 1760
  244. 2440 REM error subroutine
  245. 2450 PRINT CHR$(CLR)
  246. 2460 PRINT CHR$(BEL);CHR$(BEL)
  247. 2470 PRINT TAB(14);"invalid selection, please try again !"
  248. 2480 FOR S = 1 TO D        'set up delay
  249. 2490 NEXT S
  250. 2500 RETURN
  251. 2510 REM subroutine
  252. 2520 PRINT:PRINT TAB(10);
  253. 2530 INPUT "vertical tab --> ";T
  254. 2540 RETURN
  255. 2550 REM subroutine
  256. 2560 PRINT:PRINT TAB(10);
  257. 2570 INPUT "horizontal tab --> ";T
  258. 2580 RETURN
  259. 2590 REM clear screen subroutine
  260. 2600 PRINT CHR$(CLR)
  261. 2610 PRINT:PRINT
  262. 2620 RETURN
  263. 2630 REM fatal error subroutine
  264. 2640 GOSUB 2600
  265. 2650 PRINT TAB(5);"FATAL ERROR, TURN OFF PRINTER AND START OVER !"
  266. 2660 PRINT:PRINT
  267. 2670 FOR X = 1 TO D
  268. 2680 NEXT X
  269. 2690 GOTO 310
  270. 2700 REM program title print subroutine
  271. 2710 PRINT TAB(15);"EPSON MX-80 PRINTER CONFIG. PROGRAM"
  272. 2720 PRINT TAB(15);"-----------------------------------"
  273. 2730 RETURN
  274. 2740 END
  275. AB(15);"EPSON MX-80 PRINTER CONFIG. PROGRAM"
  276. 2720 PRINT TAB(15);"-----------------