Epson FX-185 User Manual - Page 201

Exploding galaxy - impact printer

Page 201 highlights

100 IF Z=2 THEN B=1: E=N-6: S=1 110 FOR P=B TO E STEP 7*S 120 PRINT "LOADING ROWS";P;"TO"; P+6*S 130 LPRINT CHR$(27) "*"CHR$(5)CHR$(2*N)CHR$(0); 140 FOR C=N TO 1 STEP -1: GOSUB 180: NEXT C 150 FOR C=1 TO N: GOSUB 180: NEXT C 160 LPRINT: NEXT P: NEXT Z 170 LPRINT CHR$(27)"@": END 180 F=0: FOR R=P TO P+6*S STEP S 190 IF A(R,C)=1 THEN F=F+2^ABS(P+6*S-R) 200 NEXT R 220 LPRINT CHR$(F);: RETURN Go ahead and RUN it to see how it works. There are two important points here: 1) instead of tracing the circle like a plotter, the program gathers the pattern in the computer's memory, then prints it line by line; 2) the program takes advantage of symmetry to print a figure four times the size of the original array. Exploding galaxy With a few more program changes, you can turn this mundane circle into a design for an exploding galaxy. First change the size so that you can see the full impact of the figure (note that 105 is a multiple of seven): 10 DEFINT A: N=105: DIM A(N,N) Yes, that 105 means this will take even longer to print out than the circle did, but that's the price you pay for largeness. If your computer system requires a WIDTH statement to prevent the printer from issuing a carriage return before the graphics line is complete, add it now: 7 WIDTH LPRINT 255 The format for this statement may be different for your BASIC; see your software documentation. Next modify the distance formula slightly. Type: 30 D=SQR(R^2+C^2)/N: D=D*D 184

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268

100 IF Z=2 THEN B=1: E=N-6: S=1
110 FOR P=B TO E STEP 7*S
120 PRINT "LOADING ROWS";P;"TO"; P+6*S
130 LPRINT CHR$(27) "*"CHR$(5)CHR$(2*N)CHR$(0);
140 FOR C=N TO 1 STEP -1: GOSUB 180: NEXT C
150 FOR C=1 TO N: GOSUB 180: NEXT C
160 LPRINT: NEXT P: NEXT Z
170 LPRINT CHR$(27)"@": END
180 F=0: FOR R=P TO P+6*S STEP S
190 IF A(R,C)=1 THEN F=F+2^ABS(P+6*S-R)
200 NEXT R
220 LPRINT CHR$(F);: RETURN
Go ahead and RUN it to see how it works.
There are two important points here:
1)
instead of tracing the circle
like a plotter,
the
program gathers the pattern in
the
computer’s mem-
ory, then prints it line by line; 2) the program takes advantage of
symmetry to print a figure four times the size of
the
original array.
Exploding galaxy
With a few more program changes, you can turn this mundane
circle into a design for an exploding galaxy. First change the size so
that
you can see the full impact of the figure (note that
105
is a multiple
of seven):
10 DEFINT A: N=105: DIM A(N,N)
Yes, that
105
means this will take even longer to print out than
the circle did, but that’s the price you pay for largeness.
If your computer system requires a WIDTH statement to prevent
the printer from issuing a carriage return before the graphics line is
complete, add it now:
7 WIDTH LPRINT 255
The format for this statement may be different for your BASIC; see
your software documentation.
Next modify the distance formula slightly. Type:
30 D=SQR(R^2+C^2)/N:
D
=
D
*
D
184