-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathA03_Morse.bc3
152 lines (151 loc) · 5.19 KB
/
A03_Morse.bc3
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
1000 A=500:GOTO20:REM MORSE in BASICODE3
1010 DIMMM(255):SP=90:REM CODE,TOON
1020 A=ASC("A"):FORN=A-1 TOA+30:READMM(N):NEXTN
1030 RESTORE:A=ASC("a"):FORN=A-1 TOA+30:READMM(N):NEXTN
1040 FORN=32 TO63:READMM(N):NEXTN
1050 LL=0:GH$=""
1060 GOSUB100:PRINT
1070 SR$=" === MORSE TRAINER ===":GOSUB150
1080 PRINT:PRINT:PRINT
1090 PRINT" RETURN = Stoppen":PRINT:PRINT
1100 PRINT" 1 = Keyboard seinen":PRINT
1110 PRINT" 2 = Ingetikte regel uitseinen":PRINT
1120 PRINT" 3 = Luister oefeningen":PRINT
1130 PRINT" 4 = Tekst uit DATA-regels":PRINT:PRINT
1140 PRINT" GEEF UW KEUZE ";
1150 GOSUB210:IFIN=13 THEN950
1160 IF(IN<49)OR(IN>52) THEN1150
1170 PRINTIN$:PRINT
1180 ONIN-48 GOTO1200,3010,4010,5010
1190 REM --- Menukeuze 1 = Keyboard seinen ---
1200 PRINT:PRINT" Tikt u maar ...":PRINT:PRINT
1210 GOSUB210:IFIN=13 THEN1000
1220 GOSUB6210:GOTO1210
3000 REM --- Menukeuze 2 = Regel uitseinen ---
3010 PRINT:PRINT" TIK EEN REGEL + RETURN":PRINT:GOSUB120
3020 INPUTR$:VE=VE+1
3030 LL=3
3040 PRINT" ";:REM op sommige computers PRINT" ";
3050 FORL=1 TOLEN(R$):GOSUB200
3060 IFIN=13 THEN1000
3070 IN$=MID$(R$,L,1)
3080 GOSUB6210
3090 NEXTL
3100 PRINT:GOSUB6430:GOTO3030
4000 REM --- Menukeuze 3 = Luister oefeningen ---
4010 GOSUB100
4020 A$="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:-=?/()"
4030 PRINT:PRINT" WELKE TEKENS WILT U OEFENEN?":PRINT
4040 PRINT" s.v.p. als regel intikken + RETURN":PRINT
4050 PRINT" (alleen RETURN is 'alles')":PRINT
4060 INPUTFF$
4070 IFFF$="" THENFF$=A$:PRINTA$
4080 PRINT:PRINT" 1 = Alleen luisteren":PRINT
4090 PRINT" 2 = Luisteren en uittikken":PRINT
4100 GOSUB210
4110 IFIN$="1" THEN4250
4120 IFIN$="2" THEN4150
4130 GOTO4100
4140 REM --- luisteren + tikken ---
4150 GOSUB100:PRINT:PRINT" Tik de geseinde tekens in"
4160 PRINT:PRINT" RETURN = Stoppen"
4170 LL=1:GH$="":GOSUB6010:PRINT" ";:PP$=""
4180 FORT=1 TO5:GOSUB210
4190 IFIN=13 THEN1000
4200 PRINTIN$;:PP$=PP$+IN$
4210 NEXTT:PRINT" ";
4220 PRINTGH$;:IFGH$=PP$ THENPRINT" +";
4230 PRINT:GOTO4170
4240 REM --- alleen luisteren ---
4250 GOSUB100:PRINT:PRINT" RETURN = Stoppen"
4260 PRINT:PRINT" ";:GOSUB6010:GOTO4260
5000 REM --- Menukeuze 4 = Tekst uit DATA-regels ---
5010 RESTORE
5020 READA$:IFA$<>"#" THEN5020
5030 READA$:IFA$="*" THEN5010
5040 PRINT:PRINT:LA=LEN(A$)
5050 FORN=1 TOLA:GOSUB200:IFIN=13 THEN1000
5060 IN$=MID$(A$,N,1):GOSUB6210:NEXTN
5070 IN$=" ":GOSUB6210:GOTO5030
6000 REM === RANDOM ROUTINE ===
6010 FORN=1 TO5
6020 IFLL=0 THEN GOSUB200:IFIN=13 THEN1000
6030 GOSUB260:X=1+INT(RV*LEN(FF$))
6040 IN$=MID$(FF$,X,1):GOSUB6210
6050 NEXTN
6060 PRINT:GOSUB6430
6070 RETURN
6200 REM === SEINROUTINE ===
6210 IFIN$=" " THENPRINTIN$;:GOSUB6430:RETURN
6220 IFLL=0 THENPRINTIN$;
6230 IFLL=1 THENGH$=GH$+IN$
6240 X=ASC(IN$):IF(X<32)OR(X>126) THENRETURN
6250 CC=MM(X)
6260 DD=INT(CC/10)*10:EE=CC-DD
6270 IFEE=1 THEN GOSUB6440:GOTO6290
6280 IFEE=3 THEN GOSUB6450
6290 CC=INT(CC/10):IFCC>0 THEN6260
6300 IFLL=3 THENPRINTIN$;
6310 GOSUB6410
6320 RETURN
6400 REM === DASH/DOT SUBR'S ===
6410 SD=2:SV=0:GOSUB400:RETURN
6420 SD=1:SV=0:GOSUB400:RETURN
6430 SD=3:SV=0:GOSUB400:RETURN
6440 SD=1:SV=7:GOSUB400:SD=1:SV=0:GOSUB400:RETURN
6450 SD=3:SV=7:GOSUB400:SD=1:SV=0:GOSUB400:RETURN
6460 REM==============================
25000 REM MORSECODE( <--leesrichting )
25080 REM DE HOOFDLETTERS
25090 REM ASCII 64,71
25100 DATA0,31,1113,1313,113,1,1311,133
25110 REM ASCII 72,79
25120 DATA1111,11,3331,313,1131,33,13,333
25130 REM ASCII 80-87
25140 DATA1331,3133,131,111,3,311,3111,331
25150 REM ASCII 88-95
25160 DATA3113,3313,1133,0,0,0,0,0
25165 REM DE LEESTEKENS EN CIJFERS
25170 REM ASCII 32-39
25180 DATA0,0,311113,0,0,0,0,133331
25190 REM ASCII 40-47
25200 DATA13313,313313,0,0,0,311113,313131,13113
25210 REM ASCII 48-55
25220 DATA33333,33331,33311,33111,31111,11111,11113,11133
25230 REM ASCII 56-63
25240 DATA11333,13333,111333,0,0,31113,0,113311
25250 DATA"#"
25260 DATA"IN 1843 BRACHT SAMUEL MORSE IN AMERIKA"
25270 DATA"DE EERSTE VERBINDING TOT STAND TUSSEN"
25280 DATA"TWEE STEDEN WAARBIJ LETTERS WERDEN"
25290 DATA"OVERGESEIND IN EEN CODE VAN LANGE EN"
25300 DATA"KORTE STROOMSTOTEN."
25310 DATA"DEZE MORSE TELEGRAFIE HEEFT ZICH IN DE"
25320 DATA"LOOP VAN DE TIJD GEHANDHAAFD VOOR HET"
25330 DATA"OVERBRENGEN VAN BERICHTEN OVER ZEER"
25340 DATA"GROTE AFSTANDEN."
25350 DATA"MET ZENDERS VAN KLEIN VERMOGEN KAN"
25360 DATA"DE HELE WERELD WORDEN BEREIKT."
25370 DATA"WIE EEN RADIO HEEFT MET KORTE GOLF KAN"
25380 DATA"DAG EN NACHT DE MORSETELEGRAFIE"
25390 DATA"HOREN. WIE WIL WETEN WAT ER ALLEMAAL"
25400 DATA"WORDT GESEIND MOET ZICH DE MOEITE"
25410 DATA"GETROOSTEN DE MORSECODE TE LEREN."
25420 DATA"DIT PROGRAMMA KAN DAARBIJ HELPEN."
25430 DATA" ","*"
25440 REM LAATSTE DATA MOET "*" ZIJN ===
30000 REM GEMAAKT 8 JANUARI 1987
30010 REM OP EEN BBC B COMPUTER
30020 REM
30030 REM eerder TROS-RADIO dd 870304,
30040 REM VERBETERDE VERSIE dd 880814
30050 REM In regels 1020 en 1030 wordt
30060 REM rekening gehouden met van de
30070 REM ASCII-tabel afwijkende codes
30080 REM voor letters (o.a.Commodore)
30090 REM
32000 REM door Ch.W.Brederode
32010 REM Von Bonninghausenlaan 33
32020 REM 2161 ES LISSE
32030 REM
32040 REM TROS-RADIO dd 881019