SPIN.BAS ·
BAS ·
14.8 KB ·
1988-11-22 ·
from Compute-PC-Magazine-Disk_March-1989_Volume-3_No.2_Issue-10
1 'SPIN 'N' PRINT - By John Klein (256 character version)
10 SCREEN 0: WIDTH 80: COLOR 7, 0, 0: CLS : KEY OFF: HALT = 0: DIR = 0
20 COLOR 12: PRINT TAB(35); "Spin 'n' Print"
30 COLOR 7: LOCATE 4, 1: PRINT "Enter drive name containing text file (default=A:) >"; : COLOR 11: INPUT "", A$: LOCATE 5, 1: PRINT SPACE$(70)
35 IF A$ = CHR$(27) THEN 370
40 IF A$ = "" THEN A$ = "A:" ELSE IF LEN(A$) <> 2 OR RIGHT$(A$, 1) <> ":" THEN LOCATE 5, 1: PRINT "ERROR: illegal drive name, try A:,B:, or C:": GOTO 30
50 LOCATE 6, 1: PRINT SPACE$(79): COLOR 7: LOCATE 6, 1: PRINT "Enter text filename (D=Directory) >"; : COLOR 11: INPUT "", IN$: LOCATE 7, 1: PRINT SPACE$(79)
55 IF IN$ = "" THEN 50
56 IF IN$ = CHR$(27) THEN 30
60 IF IN$ = "D" OR IN$ = "d" THEN 3230 ELSE IN$ = A$ + IN$
70 ON ERROR GOTO 3110: OPEN "I", 1, IN$: ON ERROR GOTO 3180
80 WS = 7: TS = 6
90 COLOR 2: LOCATE 15, 16: PRINT "CPI = Characters Per Inch CPP = Characters Per Page"; TAB(16); "LPI = Lines Per Inch"; SPC(8); "LPP = Lines Per Page"
100 COLOR 15: LOCATE 22, 26: PRINT "Press (Enter) to Begin Printing"
110 COLOR 10: LOCATE 10, 22: PRINT USING "CPI ##.## ###.# CPP (Right) (Left)"; 72 / WS; 792 / WS: LOCATE 11, 22: PRINT USING "LPI ##.## ###.# LPP (Up) (Down)"; TS; INT(960 / -(INT(-14 * 8.571 / TS)))
120 A$ = INKEY$: IF LEN(A$) = 2 THEN A$ = RIGHT$(A$, 1): WS = WS + (A$ = "M" AND WS > 3) - (A$ = "K" AND WS < 72): TS = TS - (A$ = "H" AND TS < 15) + (A$ = "P" AND TS > 1): GOTO 110 ELSE IF A$ <> CHR$(13) THEN 120
130 COLOR 15: LOCATE 22, 14: PRINT "Get Printer Ready - Press any key when ready to print": A$ = INPUT$(1): ON ERROR GOTO 3180
140 IF WS = 7 AND TS = 6 THEN DEFAULT = -1
150 WS = .114286 * WS: HORZ = -INT(-INT(WS * 125) / 100)
160 TS = 8.571 / TS: VERT = INT(960 / -(INT(-TS * 14)))
170 SCREEN 1: GOSUB 3130: WIDTH "LPT1:", 255
180 DIM L$(255), A$(125): FOR Z = 0 TO 255: READ L$(Z): NEXT Z
190 DIM LCHR$(255, 11): FOR Z = 0 TO HORZ - 1: LCHR$(0, Z) = STRING$(-INT(-TS * 14), 0): LCHR$(32, Z) = LCHR$(0, Z): NEXT Z
200 FOR Z = 1 TO VERT: A$(Z) = ""
210 IF NOT (EOF(1)) THEN LINE INPUT #1, A$(Z)
220 NEXT Z: Z1 = 1
230 FOR Z2 = 1 TO VERT: IF LEN(A$(Z2)) >= Z1 THEN 250
240 NEXT Z2: GOTO 340
250 FOR Z2 = 1 TO HORZ: LPRINT CHR$(27) + CHR$(76) + CHR$(192) + CHR$(3) + STRING$(960 - VERT * -INT(-TS * 14), 0); : GRAPH = 0
260 FOR Z3 = VERT TO 1 STEP -1
270 ESC$ = INKEY$: IF ESC$ = CHR$(27) THEN GOSUB 3150
280 IF Z1 > LEN(A$(Z3)) THEN Z = 0 ELSE Z = ASC(MID$(A$(Z3), Z1, 1))
290 IF Z > 128 THEN GRAPH = -1
300 IF L$(Z) <> "" THEN GOSUB 2950
310 LPRINT LCHR$(Z, Z2 - 1); : NEXT Z3: IF DEFAULT AND NOT (GRAPH) THEN LPRINT CHR$(27) + CHR$(49): GOTO 330 ELSE IF Z2 = HORZ THEN GOSUB 380 ELSE LPRINT CHR$(27) + CHR$(49)
320 NEXT Z2
330 Z1 = Z1 + 1: IF NOT (HALT) THEN 230 ELSE 350
340 IF NOT (EOF(1)) THEN LPRINT CHR$(12): IF NOT (HALT) THEN 200
350 SCREEN 0: WIDTH 80: COLOR 7: PRINT "Do you wish to print another text file sideways (Y/N)?"
360 WHILE INKEY$ <> "": WEND: A$ = INPUT$(1): IF A$ = "Y" OR A$ = "y" THEN CLOSE : CLEAR : RESTORE: RUN ELSE IF A$ <> "N" AND A$ <> "n" THEN 360
370 END
380 IF WS * 1.25 - HORZ + 1 = 0 THEN LPRINT CHR$(27) + CHR$(74) + CHR$(1) ELSE LPRINT CHR$(27) + CHR$(65) + CHR$(7 * (WS * 1.25 - HORZ + 1)) + CHR$(27) + CHR$(50): RETURN
390 DATA BD1: ' nul
400 DATA BD2D4F2R2E2U4H2L2G2BR2BD1Z0BR2Z0BD2G1H1: ' happy
410 DATA BD2D4F2R2E2U4H2L2G2BR2BD1Z0BR2Z0BD3H1G1: ' sad
420 DATA BD4D1F3E3U1H1L1G1H1L1G1: ' heart
430 DATA BD5F3E3H3G3: ' diamond
440 DATA BR3BD7F1L2E1BU2F1R1E1U1H1L1E1H1L2G1F1L1G1D1F1R1E1: ' club
450 DATA BR3BD1F3D1G1L1H1G1L1H1U1E3BD6F1L2E1: ' spade
460 DATA BD1: ' beep
470 DATA BD2R6D6L6U6BF3Z0: ' bs
480 DATA BD1: ' tab
490 DATA BD1: ' lf
500 DATA BD1: ' home
510 DATA BD1: ' ff
520 DATA BD1: ' return
530 DATA BR2D7H1G1F1E1U7R4D2L4R4D4H1G1F1E1: ' note
540 DATA BD4R1F1G1E1F1D1U1E1F1H1E1R1L1H1E1G1H1U1D1G1H1F1H1F1G1: ' star
550 DATA BD2BR1F3G3U6: ' r-arrow
560 DATA BD5BR1E3D6H3: ' l-arrow
570 DATA BR3BD2L2E2F2L2D4L2F2E2L2: ' d-arrow
580 DATA BR1D6BD2Z0BR4Z0BU2U6: ' !!
590 DATA BR2G2F2U4D8BR2U8L2R4: ' parg
600 DATA BR5BD1H1L2G1D3E2F2G2H2BR4D3G1L2H1: ' mark
610 DATA BD8R6U2L6D2BE1P0: ' syn
620 DATA BR3BD2L2E2F2L2D4L2F2R3L6R3E2L2: ' dd-arrow
630 DATA BR3BD2L2E2F2L2D6: ' up
640 DATA BR3D6L2F2E2L2: ' down
650 DATA BD4R4U2F2G2U2: ' right
660 DATA BD3BR2U2G2F2U2R4: ' left
670 DATA BD1: ' c-right
680 DATA BD1: ' c-left
690 DATA BD1: ' c-up
700 DATA BD1: ' c-down
710 DATA BD1: ' space
720 DATA BR3D5BD2Z1: ' !
730 DATA BR2Z1D2U2BR3Z1D2: ' "
740 DATA BR2BD1D7BR3U7BF2L7BD3R7: ' #
750 DATA BR3D8U2BL3F1R4E1U1H1L4H1U1E1R4F1: ' $
760 DATA Z0BR6D1G6D1BR6Z1: ' %
770 DATA BD8BR6H6E2F2G4D1F1R2E2: ' &
780 DATA BR2Z1D2: ' '
790 DATA BR4G2D4F2: ' (
800 DATA BR2F2D4G2: ' )
810 DATA BD4R6L3U3D6U3E2G4E2F2H4: ' *
820 DATA BD4R6L3U3D6: ' +
830 DATA BR2BD8Z1D2: ' ,
840 DATA BD4R6: ' -
850 DATA BR2BD8Z1: ' .
860 DATA BR6BD1G6: ' /
870 DATA BD2D4F2R2E2U4H2L2G2BR5G4: ' 0
880 DATA BR3G1E1D8: ' 1
890 DATA BD2E2R2F2G6R6: ' 2
900 DATA BD2E2R2F2G2L1R1F2G2L2H2: ' 3
910 DATA BR5G5R6BD3BL1U8: ' 4
920 DATA R6L6D3R4F2D1G2L2H2: ' 5
930 DATA BR5L3G2D4F2R2E2U1H2L2G2: ' 6
940 DATA R6D2G4D2: ' 7
950 DATA BD2F2R2L2G2F2R2E2H2E2H2L2G2: ' 8
960 DATA BD3BR6G2L2H2U1E2R2F2D4G2L3: ' 9
970 DATA BR2BD2Z0BD4Z0: ' :
980 DATA BR2BD2Z0BD4Z1D2: ' ;
990 DATA BR5G4F4: ' <
1000 DATA BD2R6BD3L6: ' =
1010 DATA BR1F4G4: ' >
1020 DATA BD2E2R2F2G3D1BD2Z0: ' ?
1030 DATA BD7BR5L3H2U2E2R2F2D2L2U2D1H1G1F1E1: ' @
1040 DATA BD8U5E3F3D2L6R6D3: ' A
1050 DATA D8R4E2H2L4R4E2H2L4: ' B
1060 DATA BD2D4F2R2E2BU4H2L2G2: ' C
1070 DATA D8R4E2U4H2L4: ' D
1080 DATA R6L6D4R4L4D4R6: ' E
1090 DATA R6L6D4R4L4D4: ' F
1100 DATA BD2D4F2R2E2U2L3R3BU2H2L2G2: ' G
1110 DATA D8U4R6D4U8: ' H
1120 DATA BR2R2L1D8L1R2: ' I
1130 DATA BD6F2R2E2U6: ' J
1140 DATA D8U4R2E4G4R2F2D2: ' K
1150 DATA D8R6: ' L
1160 DATA D8U8F3E3D8: ' M
1170 DATA D8U8F6D2U8: ' N
1180 DATA BD2D4F2R2E2U4H2L2G2: ' O
1190 DATA D8U4R4E2H2L4: ' P
1200 DATA BD2D4F2R2H2F3H1E2U4H2L2G2: ' Q
1210 DATA D8U4R2F4H4R2E2H2L4: ' R
1220 DATA BD6F2R2E2H2L2H2E2R2F2: ' S
1230 DATA R6L3D8: ' T
1240 DATA D6F2R2E2U6: ' U
1250 DATA D5F3E3U5: ' V
1260 DATA D8E3F3U8: ' W
1270 DATA D1F6D1BL6U1E6U1: ' X
1280 DATA D1F3D4U4E3U1: ' Y
1290 DATA R6D1G6D1R6: ' Z
1300 DATA BR2R2L2D8R2: ' [
1310 DATA BD1F6: ' \
1320 DATA BR2R2D8L2: ' ]
1330 DATA BR3G2E2F2: ' ^
1340 DATA BD9BD2R9: ' _
1350 DATA BR4Z0D2: ' `
1360 DATA BD2BR6D6U2G2L2H2U2E2R2F2: ' a
1370 DATA D8U2F2R2E2U2H2L2G2: ' b
1380 DATA BD3BR6H1L3G2D2F2R3E1: ' c
1390 DATA BR6D8U2G2L2H2U2E2R2F2: ' a
1400 DATA BD5R6U1H2L2G2D2F2R3: ' e
1410 DATA BR6BD2H2G2D6U3L2R4: ' f
1420 DATA BR6BD4H2L2G2D1F2R2E2U3D7G1L4: ' g
1430 DATA D8U4E2R2F2D4: ' h
1440 DATA BR3Z0BD2D6: ' i
1450 DATA BR5Z0BD2D6G2H2: ' j
1460 DATA D8U3R2E3G3R3F1D2: ' k
1470 DATA BR3D8: ' l
1480 DATA BD2D6U4E2F1D5U4E2F1D5: ' m
1490 DATA BD2D6U4E2R2F2D4: ' n
1500 DATA BD4D2F2R2E2U2H2L2G2: ' o
1510 DATA BD2D8U6E2R2F2D2G2L2H2: ' p
1520 DATA BR6BD2D8U6H2L2G2D2F2R2E2: ' q
1530 DATA BD2D6U4E2R2F2: ' r
1540 DATA BD8BR1R4E1U1H1L4H1U1E1R4: ' s
1550 DATA BR3D8U6R2L4: ' t
1560 DATA BD2D4F2R2E2U4D6: ' u
1570 DATA BD2D3F3E3U3: ' v
1580 DATA BD2D6E3F3U6: ' w
1590 DATA BD2F6H3E3G6: 'x
1600 DATA BD2D3F2R2E2U3D7G1L4: ' y
1610 DATA BD2R6G6R6: ' z
1620 DATA BR5L1G1D2G1F1D2F1R1: ' {
1630 DATA BR3D4BD2D4: ' |
1640 DATA BR1R1F1D2F1G1D2G1L1: ' }
1650 DATA BF1E1F2E1: ' ~
1660 DATA BD5E3F3D3L6U3: ' 127
1670 DATA BD2D4F2R1D2U2R1E2BU4H2L2G2: ' C,
1680 DATA BR1Z0BR4Z0BL5BD3D3F2R2E2U3D5: ' u..
1690 DATA BR4G1BL3BD5R6U1H2L2G2D1F2R3: ' e'
1700 DATA BR3G1E1F1BR2BD2D5U2G2L2H2U1E2R2F2: ' a^
1710 DATA BR1Z0BR4Z0BR1BD3D5U2G2L2H2U1E2R2F2: ' a..
1720 DATA BR3F1BR2BD2D5U2G2L2H2U1E2R2F2: ' a`
1730 DATA BR3R1D1L1U1BR3BD3D5U2G2L2H2U1E2R2F2: ' a.
1740 DATA BD3BR6H1L3G2D2F2R1D2U2R2E1: ' c,
1750 DATA BR3F1H1G1BL2BD5R6U1H2L2G2D1F2R3: ' e^
1760 DATA BR1Z0BR4Z1BL5BD6R6U1H2L2G2D1F2R3: ' e..
1770 DATA BR3F1BL4BD5R6U1H2L2G2D1F2R3: ' e`
1780 DATA BR1Z0BR4Z0BL2BD3D5: ' i..
1790 DATA BR3G1E1F1BG1BD1D5: ' i^
1800 DATA BR3F1BG1BD1D5: ' i`
1810 DATA BR1Z0BR4Z0BL2BD2F3D3U2L6D2U3E3: ' A..
1820 DATA BR3R1D1L1U1BD2F3D3U2L6D2U3E3: ' A.
1830 DATA BR4G1BD1R3L6D3R4L4D3R6: ' E'
1840 DATA BD3E1R1F1U1D6U1G1L1H1U4BR3E1R1F1D2L3D2F1R1E1: ' ae
1850 DATA BR3G3D5U4R3U4R3BD4BL1L2D4R3: ' AE
1860 DATA BR3F1H1G1BD2R2F2D1G2L2H2U1E2: ' o^
1870 DATA BR1Z0BR4Z0BL1BD3F2D1G2L2H2U1E2R2: ' o..
1880 DATA BR3F1BD2F2D1G2L2H2U1E2R2: ' o`
1890 DATA BR3F1H1G1BG2D3F2R2E2U3D5: ' u^
1900 DATA BR2F1BL3BD2D3F2R2E2U3D5: ' u`
1910 DATA BR1Z0BR4Z0BL5BD3D2F2R2E2U2D6G1L4: ' y..
1920 DATA BR1Z0BR4Z0BL5BD4E2R2F2D2G2L2H2U2E2R2: ' O..
1930 DATA BR1Z0BR4Z0BR1BD2D4G2L2H2U4: ' U..
1940 DATA BR3BD1D7U2R2L3H1U1E1R3: ' cent
1950 DATA BR6BD2H2L1G2D2R2L3R1D3G1R5E1: ' pound
1960 DATA BR1F2E2G2D2R2L4R2D2R2L4R2D2: ' tree
1970 DATA R2F2G2L2U4D8BR5U4R1L2R2L1U1: ' Pt
1980 DATA BR5L1G1D8G1L1BU5R4: ' freq
1990 DATA BR4G1BR3BD2D5U2G2L2H2U1E2R2F2: ' a'
2000 DATA BR4G1BD2D5: ' i'
2010 DATA BR4G1BD2L1G2D1F2R2E2U1H2L1: ' o'
2020 DATA BR4G1BL3BD2D3F2R2E2U3D5: ' u'
2030 DATA BF1E1F1E1BL4BD3D5U3E2R2F2D3: ' n~
2040 DATA BF2E1F1E1BL5BD2D6U6F6U6: ' N~
2050 DATA BD2BR6D6U2G2L2H2U2E2R2F2BD6L6: ' a_
2060 DATA BD4D2F2R2E2U2H2L2G2BD6R6: ' o_
2070 DATA BR3Z0BD2D1G3F2R2E2: ' ?
2080 DATA BD9BD4U8R9: ' l-corner
2090 DATA BD5R9D8: ' r-corner
2100 DATA D4U3BR6G6BD1BR6L2E2U1H1G1: ' 1/2
2110 DATA D4U3BR6G6BD1BR6U4D2L2U1: ' 1/4
2120 DATA BR3Z0BD2D6: ' i
2130 DATA BD4E3G3F3BR3H3E3: ' <<
2140 DATA BD1F3G3BR3E3H3: ' >>
2150 DATA BH1R9R2D9D6L9L2U9U6BF2P0: ' block
2160 DATA BH1R9R2D9D6L9L2U9U6BF2P0: ' block
2170 DATA BH1R9R2D9D6L9L2U9U6BF2P0: ' block
2180 DATA BR3D9D4: ' 179
2190 DATA BD5R3U5D9D4: ' 180
2200 DATA BD4R3D2L3R3U6D9D4: ' 181
2210 DATA BD5R2U5D9D4BR2U9U4: ' 182
2220 DATA BD5R4D8BL2U8: ' 183
2230 DATA BD4R3D9U7L3: ' 184
2240 DATA BD4R2U4BR2D9D4BL2U7L2: ' 185
2250 DATA BR2D9D4BR2U9U4: ' 186
2260 DATA BD4R4D9BL2U7L2: ' 187
2270 DATA BD4R2U4BR2D6L4: ' 188
2280 DATA BD5R4U5BL2D5: ' 189
2290 DATA BD4R3U4D6L3: ' 190
2300 DATA BD5R3D8: ' 191
2310 DATA BR3D5R6: ' 192
2320 DATA BR3D5L3R9: ' 193
2330 DATA BD5R3D8U8R6: ' 194
2340 DATA BR3D5R6L6D8: ' 195
2350 DATA BD5R9: ' 196
2360 DATA BD5R9L6U5D9D4: ' 197
2370 DATA BR3D9D4U8R6BU2L6: ' 198
2380 DATA BR2D9D4BR2U8R5L5U5: ' 199
2390 DATA BR2D6R7BU2L5U4: ' 200
2400 DATA BR2BD4D9BR2U7R5BU2L7: ' 201
2410 DATA BD4R2U4BR2D4R5BD2L9: ' 202
2420 DATA BD4R9BD2L5D7BL2U7L2: ' 203
2430 DATA BR2D9D4BR2U7R5BU2L5U4: ' 204
2440 DATA BD4R9BD2L9: ' 205
2450 DATA BD4R2U4BR2D4R5BD2L5D7BL2U7L2: ' 206
2460 DATA BD4R3U4D4R6BD2L9: ' 207
2470 DATA BD5R2U5D5R2U5D5R5: ' 208
2480 DATA BD4R9BD2L6D7U7L3: ' 209
2490 DATA BD5R2D8U8R2D8U8R5: ' 210
2500 DATA BR2D5R2U5D5R5: ' 211
2510 DATA BR3D6R6BU2L6: ' 212
2520 DATA BR3BD4D9U9R6BD2L6: ' 213
2530 DATA BR2BD5D8U8R7L5D8: ' 214
2540 DATA BR2D9D4BR2U9U4BL4BD5R9: ' 215
2550 DATA BR3D9D4BL3BU7R9BU2L9: ' 216
2560 DATA BD5R3U5: ' 217
2570 DATA BR3BD5D7U7R6: ' 218
2580 DATA R9D9D4L9U9U4BF2P0: ' 219
2590 DATA BD7R9D6L9U6BF2P0: ' 223
2600 DATA D9D4R4U9U4L4BF2P0: ' 221
2610 DATA BR4R5D9D4L5U9U4BF2P0: ' 222
2620 DATA R9D6L9U6BF2P0: ' 220
2630 DATA BD4D2F2E2F2H2U2E2G2H2G2: ' alpha
2640 DATA BD1D9U3F1R3E2U1H2L4R3E2H1L3G1: ' beta
2650 DATA D9D1U9U1R6D2: ' gamma
2660 DATA BD4E2D6U6R3D6U6E1: ' pi
2670 DATA R6D1U1L6F3G3D2R5E1: ' sum
2680 DATA BD4D2F2R1E2U2H2R3L4G2: ' sigma
2690 DATA BD2D8U4F2R2E2U4D6: ' mu
2700 DATA BD2R6L3D6: ' tau
2710 DATA BR2R2L1D1R1F2D2G2L1D1R1L2R1U1L1H2U2E2R1: ' phi
2720 DATA BD4R6U1H2L2G2D2F2R2E2U1: ' theta
2730 DATA BD8R1U2H1U3E2R2F2D3G1D2R1: ' omega
2740 DATA BR2R2L2G1D1F1R3F2D1G2L3H2U1E2: ' delta
2750 DATA BD3D1F1R1E1U1E1R1F1D1G1L1H1U1H1L1G1: ' infinity
2760 DATA BR3BD1G2D2F2E2U2H2BR3G6: ' empty
2770 DATA BR4L1G2D3R2L2D2F2R1: ' 238
2780 DATA BD8U6E2R2F2D6: ' and
2790 DATA BD3R6BD2L6BD2R6: ' define
2800 DATA BR3BD1D4U2R2L4BD4R4: ' +-
2810 DATA BR1F3G3BD2R3: ' >=
2820 DATA BR4G3F3BD2L3: ' <=
2830 DATA BR6BD1H1L1G1D9D3: ' int1
2840 DATA BR3D9D3G1L1H1: ' int2
2850 DATA BR3BD1Z0BD6Z0BU3L3R6: ' div
2860 DATA BD3E1R2F1R1E1BD3G1L1H1L2G1: ' approx
2870 DATA BR2R1D1L1U1: ' degree
2880 DATA BR2R1G1U1F1U1D1L1: ' degree
2890 DATA BR3BD1Z0: ' dot
2900 DATA BD5R1F3U8R2: ' root
2910 DATA BR1D4U2E2F2D2: ' n
2920 DATA BF1E1R1F1D1G3R3: ' 2
2930 DATA BF1R3D3L3U3R3BG1P0: ' box
2940 DATA BD1: ' blank
2950 GOSUB 3130: X = 10: Y = 10: PSET (X, Y), 0
2960 A$ = " " + L$(Z)
2970 FOR Z9 = 2 TO LEN(A$) STEP 2: IF MID$(A$, Z9, 1) = "B" THEN Z9 = Z9 + 1
2980 D$ = MID$(A$, Z9, 1): IF D$ <> "Z" THEN 3010
2990 Z8 = WS / 3: IF Z8 * 3 > TS THEN Z8 = TS / 3
3000 LINE (X - Z8, Y - Z8)-(X + Z8, Y + Z8), 1, BF: IF MID$(A$, Z9 + 1, 1) = "0" THEN PSET (X, Y), 1: GOTO 3050 ELSE 3050
3010 IF D$ = "P" THEN PAINT (X, Y), 1, 1
3020 X = X + ((-(INSTR("ERF", D$) <> 0) + (INSTR("HGL", D$) <> 0)) * VAL(MID$(A$, Z9 + 1, 1)) * WS)
3030 Y = Y + ((-(INSTR("GDF", D$) <> 0) + (INSTR("HUE", D$) <> 0)) * VAL(MID$(A$, Z9 + 1, 1)) * TS)
3040 IF MID$(A$, Z9 - 1, 1) = "B" THEN PSET (X, Y), 0 ELSE LINE -(X, Y), 1
3050 NEXT Z9
3060 FOR Z9 = 1 TO HORZ: LCHR$(Z, Z9 - 1) = ""
3070 FOR Z8 = 0 TO -INT(-14 * TS) - 1
3080 X = 10 + (Z9 - 1) * 8: Y = 10 + (-INT(-14 * TS) - 1) - Z8
3090 LCHR$(Z, Z9 - 1) = LCHR$(Z, Z9 - 1) + CHR$(POINT(X, Y) * 128 + POINT(X + 1, Y) * 64 + POINT(X + 2, Y) * 32 + POINT(X + 3, Y) * 16 + POINT(X + 4, Y) * 8 + POINT(X + 5, Y) * 4 + POINT(X + 6, Y) * 2 + POINT(X + 7, Y))
3100 NEXT Z8, Z9: L$(Z) = "": RETURN
3110 LOCATE 7, 1: PRINT "ERROR: file not found": RESUME 30
3120 LOCATE 1, 1: PRINT "ERROR: `"; A$; "' is an illegal drive name": PRINT "Press any key to continue": A$ = INPUT$(1): RESUME 10
3130 LINE (0, 8)-(320, 200), 0, BF: LOCATE 1, 6: IF HALT THEN PRINT "----- ONE MOMENT PLEASE -----" ELSE PRINT " Press ESC to halt printing ": RETURN
3140 RETURN
3150 LOCATE 1, 6: PRINT "(Q)uit or (C)ontinue printing"
3160 ESC$ = INPUT$(1): IF ESC$ = "Q" OR ESC$ = "q" THEN HALT = -1: GOSUB 3130: RETURN
3170 IF ESC$ = "C" OR ESC$ = "c" THEN GOSUB 3130: RETURN ELSE BEEP: GOTO 3160
3180 IF ERR = 5 THEN SCREEN 0: WIDTH 80: CLS : LOCATE 12, 12: PRINT "This program requires CGA or equivalent hardware.": END
3190 IF ERR <> 25 AND ERR <> 57 AND ERR <> 27 THEN SCREEN 0: WIDTH 80: PRINT "UNRECOVERABLE ERROR: error #"; ERR, ERL: PRINT "Press any key to exit.": WHILE INKEY$ = "": WEND: END
3200 CLS : SCREEN 0: WIDTH 80: PRINT "ERROR: Printer not ready": PRINT "(C)ontinue or (Q)uit": WHILE INKEY$ <> "": WEND
3210 A$ = INPUT$(1): IF A$ = "Q" OR A$ = "q" THEN RESUME 350 ELSE IF A$ <> "C" AND A$ <> "c" THEN 3210
3220 LOCATE 2, 1: PRINT "Setup printer and press any key when ready": A$ = INPUT$(1): SCREEN 1: CLS : RESUME
3230 CLS : ON ERROR GOTO 3120: FILES A$ + "*.*": ON ERROR GOTO 0
3240 COLOR 7: PRINT "Enter text filename >"; : COLOR 11: INPUT "", IN$
3250 CLS : COLOR 12: PRINT TAB(35); "Spin 'N' Print"
3260 COLOR 7: LOCATE 4, 1: PRINT "Drive name containing text file >"; : COLOR 11: PRINT A$
3270 COLOR 7: LOCATE 6, 1: PRINT "Text filename >"; : COLOR 11: PRINT IN$
3280 IN$ = A$ + IN$: GOTO 70