forked from robhagemans/basicode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBANNER1.BAS
More file actions
214 lines (214 loc) · 7.65 KB
/
BANNER1.BAS
File metadata and controls
214 lines (214 loc) · 7.65 KB
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
10 GOTO 1000:REM Basicode-2 subroutines
20 CLEAR:IN$=" ":SR=0:SR$="":CT=0:CN=0:OHT%=80:OVT%=24
22 KEY OFF:SCREEN 0:WIDTH OHT%:COLOR 7,0,0:CLS:RANDOMIZE TIMER*100
29 GOTO 1010
100 CLS:RETURN
110 GOSUB 111:LOCATE OVE%+1,OHO%+1:RETURN
111 OVE%=INT(VE):OHO%=INT(HO)
112 IF OVE%<0 THEN OVE%=0 ELSE IF OVE%>=OVT% THEN OVE%=OVT%-1
113 IF OHO%<0 THEN OHO%=0 ELSE IF OHO%>=OHT% THEN OHO%=OHT%-1
114 RETURN
120 HO=POS(0)-1:VE=CSRLIN-1:RETURN
200 IN$=INKEY$:RETURN
210 IN$=INPUT$(1):RETURN
250 BEEP:RETURN
260 RV=RND:RETURN
270 FR=FRE(""):RETURN
300 SR$=MID$(STR$(ABS(SR)),2):IF LEFT$(SR$,1)="." THEN SR$="0"+SR$
301 IF SR<0 THEN SR$="-"+SR$
302 RETURN
310 O#=ABS(SR)+.5*10^-CN:O!=INT(O#):O#=1+O#-O!:O$=""
311 IF CN THEN O$="."+STRING$(CN,48):IF O#>1 THEN MID$(O$,1)=MID$(STR$(O#),3)
312 O$=MID$(STR$(O!),2)+O$:IF VAL(O$)>0 AND SR<0 THEN O$="-"+O$
313 IF LEN(O$)<=CT THEN SR$=SPACE$(CT-LEN(O$))+O$:RETURN
314 SR$=STRING$(CT,42):RETURN
350 LPRINT SR$;:RETURN
360 LPRINT:RETURN
1000 A=1000:GOTO 20:REM BANNER PRINTER
1010 A1=ASC("a"):Z1=ASC("z"):A2=ASC("A"):Z2=ASC("Z")
1020 DIM D(8)
1030 GOSUB 20250:REM SCHERM METEN
1040 GOSUB 20000:REM UITLEG
1050 GOSUB 100:PRINT
1060 PRINT"Voer het karakter in waaruit de letters"
1070 PRINT"moeten worden opgebouwd:"
1080 INPUT K$:IF LEN(K$)<>1 THEN 1050
1090 REM INPUT TEKST
1100 GOSUB 100
1110 HO=13:VE=0:GOSUB 110:PRINT"BANNER PRINTER"
1120 PRINT:PRINT"De volgende tekens zijn in de banner te"
1130 PRINT"gebruiken:":PRINT
1140 FOR A=32 TO 63
1150 PRINT CHR$(A);
1160 NEXT A:PRINT
1170 FOR A=A1 TO Z1
1180 PRINT CHR$(A);
1190 NEXT A:PRINT
1200 PRINT:PRINT"Druk wis-toets in >"
1210 GOSUB 210:DL=ASC(IN$)
1220 PRINT:PRINT:PRINT
1230 PRINT"Voer nu de tekst in (max.255 tekens)"
1240 HO=HP-1:VE=12:GOSUB 110:PRINT"-"
1250 T=0:T$=""
1260 HO=HP-1:VE=11:GOSUB 110
1270 GOSUB 20200:IN=ASC(IN$)
1280 IF IN=DL THEN 1400
1290 IF IN=13 THEN 1460
1300 IF(IN>=A1) AND(IN<=Z1) THEN 1320
1310 IF(IN<32) OR(IN>63) THEN 1270
1320 T=T+1:IF T>255 THEN T=255:GOTO 1270
1330 T$=T$+IN$
1340 IF T>HP THEN 1370
1350 HO=HP-T:VE=11:GOSUB 110
1360 PRINT LEFT$(T$,T):GOTO 1260
1370 HO=0:VE=11:GOSUB 110
1380 PRINT MID$(T$,T-HP+1,HP)
1390 GOTO 1260
1400 T=T-1:IF T<0 THEN 1250
1410 IF T=0 THEN T$="":PRINT:GOTO 1270
1420 T$=LEFT$(T$,T)
1430 IF T>(HP-1) THEN 1370
1440 HO=HP-1-T:VE=11:GOSUB 110
1450 PRINT" ";LEFT$(T$,T):GOTO 1270
1460 LE=T:IF LE=0 THEN 1270
1470 GOSUB 100:PRINT
1480 PRINT"Let er op dat u kettingformulieren"
1490 PRINT"gebruikt, want de 'banner' wordt aan"
1500 PRINT"e e n stuk door geprint."
1510 PRINT:PRINT"Hoeveel letters per regel kunnen op de"
1520 PRINT"printer worden geprint";
1530 INPUT LR:GL=INT(LR/8)-1
1540 PRINT"Grootte van de letters (1-";GL;")";
1550 INPUT G:MI=INT((LR-8*G)/2)
1560 IF(G<1) OR(G>GL) THEN 1470
1570 PRINT:PRINT"Druk op een toets om te printen.."
1580 GOSUB 210
1590 P$="":FOR A=1 TO MI:P$=P$+" ":NEXT A
1600 SR$="":GOSUB 360
1610 FOR L=1 TO LE
1620 M=ASC(MID$(T$,L,1))
1630 J=M-A1+1
1640 IF(M>=32) AND(M<=63) THEN J=M
1650 RESTORE
1660 FOR W=1 TO 8*J:READ A:NEXT W
1670 FOR D=0 TO 7:READ D(D):NEXT D
1680 FOR Q=0 TO 7:N=2^(7-Q)
1690 PR$=P$
1700 FOR B=0 TO 7
1710 K=0:IF INT(D(7-B)/N)=1 THEN K=1:D(7-B)=D(7-B)-N
1720 FOR Z=1 TO G
1730 IF K=1 THEN PR$=PR$+K$:GOTO 1750
1740 PR$=PR$+" "
1750 NEXT Z
1760 NEXT B
1770 FOR U=1 TO G:SR$=PR$:GOSUB 350:GOSUB 360:NEXT U
1780 NEXT Q:NEXT L
1790 GOSUB 100
1800 PRINT:PRINT"Wilt U nog een 'banner' printen (J/N) ?"
1810 GOSUB 20200:PRINT IN$
1820 IF IN$="j" THEN RUN
1830 END
20000 REM UITLEG
20010 GOSUB 100
20020 HO=13:VE=0:GOSUB 110:PRINT"BANNER PRINTER"
20030 PRINT:PRINT"Dit programma stelt u in staat een"
20040 PRINT"'banner' (vertaald:spandoek) uit te"
20050 PRINT"printen. Dit kan in verschillende"
20060 PRINT"groottes en lettertypes. Deze letter-"
20070 PRINT"types zijn te vinden in de bijbehorende"
20080 PRINT"modules, die met het programma moeten"
20090 PRINT"worden 'ge-merged'."
20100 PRINT"Zo dadelijk moet er een tekst worden"
20110 PRINT"ingevoerd van minder dan 256 tekens."
20120 PRINT"Daarna kunt U de grootte van de letters"
20130 PRINT"invoeren. Het grootste lettertype hangt"
20140 PRINT"af van het aantal karakters per regel"
20150 PRINT"wat Uw printer kan printen."
20160 HO=9:VE=22:GOSUB 110
20170 PRINT"Druk op de spatiebalk.."
20180 GOSUB 210:IF IN$<>" " THEN 20180
20190 RETURN
20200 REM WACHT OP TOETS
20210 GOSUB 210:IN=ASC(IN$)
20220 IF(IN<A2) OR(IN>Z2) THEN RETURN
20230 IN$=CHR$(IN-A2+A1)
20240 RETURN
20250 REM SCHERM METEN
20260 GOSUB 100
20270 I=0:J=I:VE=I:IP=64:JP=IP:FOR A=1 TO 7
20280 I=I+IP:HO=I:GOSUB 110:GOSUB 120:IF HO<>I THEN I=I-IP
20290 J=J+JP:VE=J:GOSUB 110:GOSUB 120:IF VE<>J THEN J=J-JP
20300 IP=IP/2:JP=JP/2:NEXT A:HP=I+1:VP=J+1
20310 RETURN
25000 REM DATA TYPE 1
25010 DATA 60,102,110,110,96,98,60,0,56,124
25020 DATA 108,198,254,238,238,0,252,70,124,70
25030 DATA 254,254,252,0,60,102,224,242,254,254
25040 DATA 124,0,120,44,38,102,254,254,252,0
25050 DATA 126,48,56,114,254,254,254,0,126,50
25060 DATA 56,96,240,240,240,0,60,102,224,246
25070 DATA 254,254,118,0,238,238,68,124,68,238
25080 DATA 238,0,60,24,24,24,60,60,60,0
25090 DATA 124,24,12,78,254,254,124,0,246,110
25100 DATA 120,124,238,238,238,0,120,48,48,118
25110 DATA 254,254,254,0,238,238,124,84,68,238
25120 DATA 238,0,238,116,92,68,238,238,238,0
25130 DATA 56,108,68,238,254,254,124,0,124,50
25140 DATA 38,124,96,240,240,0,60,102,66,200
25150 DATA 206,238,118,0,124,50,38,124,110,238
25160 DATA 238,0,60,110,48,140,254,254,252,0
25170 DATA 255,219,24,24,60,60,60,0,118,54
25180 DATA 100,228,254,254,118,0,238,238,68,108
25190 DATA 40,56,56,0,238,238,68,214,254,254
25200 DATA 108,0,238,238,56,124,238,238,238,0
25210 DATA 230,230,110,190,220,252,248,0,126,110
25220 DATA 24,114,254,254,254,0,60,48,48,56
25230 DATA 60,60,60,0,0,0,0,0,0,0
25240 DATA 0,0,60,12,12,28,60,60,60,0
25250 DATA 0,8,12,254,254,12,8,0,0,32
25260 DATA 96,254,254,96,32,0,0,0,0,0
25270 DATA 0,0,0,0,62,60,56,56,0,48
25280 DATA 48,0,108,108,36,0,0,0,0,0
25290 DATA 102,102,255,102,255,102,102,0,24,62
25300 DATA 96,60,6,124,24,0,98,102,12,24
25310 DATA 48,102,70,0,60,102,60,56,103,102
25320 DATA 63,0,6,6,2,0,0,0,0,0
25330 DATA 12,24,56,56,60,28,12,0,48,24
25340 DATA 28,28,60,56,48,0,0,102,60,255
25350 DATA 60,102,0,0,0,24,24,126,120,24
25360 DATA 0,0,0,0,0,0,0,24,24,8
25370 DATA 0,0,0,126,112,0,0,0,0,0
25380 DATA 0,0,0,24,24,0,0,3,6,12
25390 DATA 24,48,96,0,62,119,119,127,127,127
25400 DATA 62,0,24,56,24,24,60,126,126,0
25410 DATA 62,99,103,14,62,127,127,0,127,103
25420 DATA 14,30,15,111,62,0,14,30,62,110
25430 DATA 127,14,31,0,127,96,126,111,15,111
25440 DATA 62,0,62,123,120,126,123,123,62,0
25450 DATA 127,103,14,30,60,60,60,0,62,123
25460 DATA 123,62,123,123,62,0,62,111,111,63
25470 DATA 15,111,62,0,0,24,24,0,24,24
25480 DATA 0,0,0,24,24,0,24,24,8,0
25490 DATA 14,24,56,120,60,30,14,0,0,0
25500 DATA 126,0,126,0,0,0,112,24,28,30
25510 DATA 60,120,112,0,124,222,222,28,56,0
25520 DATA 56,0
30000 REM
30010 REM***************************
30020 REM* *
30030 REM* BANNER PRINTER *
30040 REM* *
30050 REM* IN BASICODE-2 *
30060 REM* *
30070 REM* 25/2/89 *
30080 REM* *
30090 REM* DOOR *
30100 REM* *
30110 REM* P.J. VAN DER MESPEL *
30120 REM* ROSSINILAAN 491 *
30130 REM* 2551 MZ DEN HAAG *
30140 REM* 070-232491 *
30150 REM* *
30160 REM***************************
30170 REM
30180 REM COPYRIGHT NOS HILVERSUM