10 REM MORSEAVKODARE : ROBERT L. KURTS 20 REM MORSEINKODARE OCH MODIF. AV 30 REM AVKOD. : PETER ]KERSTR\M 11.7.79 35 REM L[MNAT AV AMAT\RRADIOSEKT. M.G. 40 ; CHR$(12%)'KODNING OCH AVKODNING AV MORSE' 50 ; : ; 'Programmet andv{nder V-24 kontaktens' 60 ; 'stift 3 (stift 7 jord) f|r avk{nning' 70 ; 'av mottagen signal och rel{utg}ngen' 80 ; 'f|r s{ndning.' 90 ; : ; 'Vid mottagning skall stift 3 g} h|g' 100 ; 'f|r att indikera signal, men genom att' 110 ; '{ndra rad 1130 och rad 1160 fr}n' 120 ; 'IF A%=1% THEN... till IF A%=0% THEN...' 130 ; 'samt rad 1200,1250,1300 }t motsatt h}ll' 140 ; 'reagerar programmet p} l}g signal' 150 ; 'p} stift 3.' 160 ; : ; 'Programmet startar upp i s{ndningsl{ge.' 170 ; 'F|r att s{nda skriver man in en' 180 ; 'textstr{ng med max 118 tecken' 190 ; 'och d{refter RETURN.' 200 ; 'Avslutas textstr{ngen med ett eller' 210 ; 'flera mellanslag upprepas s{ndningen' 220 ; 'tills RETURN trycks ned.' 230 ; 240 ; 'Tryck p} en tangent n{r du l{st klart '; : GET X$ 250 ; CHR$(12%); 260 ; 'S{ndningshastigheten g}r att v{lja' 270 ; 'mellan 20-200 tecken per minut.' 280 ; 'Om man vill {ndra hastighet trycks' 290 ; 'utropstecken ned,(!) och d{refter RETURN' 300 ; 'Till}tna tecken {r' 310 ; 'siffror, samtliga bokst{ver' 320 ; 'och f|ljande specialtecken: - / , . ?' 330 ; 'Sm} bokst{ver g|rs om till stora och' 340 ; 'otill}tna tecken till mellanslag.' 350 ; : ; 'F|r att komma till mottagningsl{ge' 360 ; 'trycks enbart RETURN ned.' 370 ; 'I mottagningsl{ge sker en automatisk' 380 ; 'anpassning till takten.' 390 ; 'Vid stora taktf|r{ndringar kan' 400 ; 'insv{ngningen ta ett par sek.' 410 ; : ; 'Trycker man ned en tangent i' 420 ; 'mottagningsl{ge kopplas' 430 ; 's{ndningsl{get in igen.' 440 ; : ; 'Tryck n{r du {r klar att b|rja '; : GET X$ : ; CHR$(12%) 450 DIM M%(50%,5%),A$(125%)=1%,A$=120% 460 REM , - . / 470 DATA 3,3,1,1,3,3,3,1,1,1,1,3,1,3,1,3,1,3,3,1,1,3,1,0 480 REM 0,1,2,3,4,5,6,7,8 490 DATA 3,3,3,3,3,0,1,3,3,3,3,0,1,1,3,3,3,0,1,1,1,3,3,0,1,1,1,1,3,0,1,1,1,1,1,0,3,1,1,1,1,0,3,3,1,1,1,0,3,3,3,1,1,0 500 REM 9,?,@ 510 DATA 3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,3,1,1,1,1,3,1,1,0 520 REM A,B,C,D,E,F,G,H,I 530 DATA 1,3,0,0,0,0,3,1,1,1,0,0,3,1,3,1,0,0,3,1,1,0,0,0,1,0,0,0,0,0,1,1,3,1,0,0,3,3,1,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0 540 REM J,K,L,M,N,O,P,Q,R 550 DATA 1,3,3,3,0,0,3,1,3,0,0,0,1,3,1,1,0,0,3,3,0,0,0,0,3,1,0,0,0,0,3,3,3,0,0,0,1,3,3,1,0,0,3,3,1,3,0,0,1,3,1,0,0,0 560 REM S,T,U,V,W,X,Y,Z 570 DATA 1,1,1,0,0,0,3,0,0,0,0,0,1,1,3,0,0,0,1,1,1,3,0,0,1,3,3,0,0,0,3,1,1,3,0,0,3,1,3,3,0,0,3,3,1,1,0,0 580 REM [,\,],^ 590 DATA 1,3,1,3,0,0,3,3,3,1,0,0,1,3,3,1,3,0,1,1,3,3,0,0 600 DATA E,T,I,A,N,M,S,U,R,W,D,K,G,O,H,V,F,^,L,[,P,J,B,X,C 610 DATA Y,Z,Q,\,-,5,4,-,3,@,-,-,2,-,-,-,-,-,],-,1,6,_,/,- 620 DATA -,-,(,-,7,-,-,-,8,-,9,0,-,-,-,-,-,-,-,-,-,-,-,-,? 630 DATA -,-,-,-,-,'"',-,-,.,-,-,-,-,-,-,-,-,"'",-,-,-,-,-,-,- 640 DATA -,-,-,-,-,-,-,),-,-,-,-,-,',',-,-,-,-, : ,-,-,-,-,-,- 650 FOR S%=0% TO 50% 660 FOR S1%=0% TO 5% 670 READ M%(S%,S1%) 680 NEXT S1% 690 NEXT S% 700 FOR N%=1% TO 125% : READ A$(N%) : NEXT N% 710 ; 'Hur m}nga tecken per minut?' 720 ONERRORGOTO 740 730 H1%=0% : INPUT H1% 740 IF H1%<20% OR H1%>200% THEN ; CHR$(7%)'V{lj mellan 20-200 tecken per minut' : GOTO 710 750 REM HASTIGHETSKONSTANT 760 H%=22000%/H1% 770 ; : INPUTLINE A$ : ; 780 IF LEN(A$)=2% THEN 1100 790 IF LEFT$(A$,1%)='!' THEN 710 800 FOR Q%=1% TO LEN(A$)-2% 810 REM OTILL]TET TECKEN ?? 820 IF INSTR(1%,'"'+"!#$%&()=+<>*'_:;",MID$(A$,Q%,1%))<>0% THEN A%=-12% : GOTO 860 830 A%=ASC(MID$(A$,Q%,1%))-44% 840 REM SM] BOKST[VER TILL STORA 850 IF A%>50% THEN A%=A%-32% 860 ; CHR$(A%+44%); 870 REM PAUS OM MELLANSLAG 880 IF A%=-12% THEN FOR Z%=1% TO 5%*H% : NEXT Z% : GOTO 1000 890 FOR S%=0% TO 5% 900 T%=M%(A%,S%) 910 REM SLUT TECKEN ?? 920 IF T%=0% THEN 980 930 OUT 58%,32% 940 FOR Z%=1% TO H%*T% : NEXT Z% 950 OUT 58%,0% 960 FOR Z%=1% TO H% : NEXT Z% 970 NEXT S% 980 FOR D%=1% TO 3%*H% : NEXT D% 990 REM RETURN NERTRYCKT ?? 1000 IF PEEK(65013%)<>0% AND (INP(56%) AND 127%)=13% THEN 1040 1010 NEXT Q% 1020 REM UPPREPA TEXTSTR[NGEN ?? 1030 IF MID$(A$,Q%-1%,1%)=' ' THEN 800 ELSE 770 1040 POKE 65013%,0% : GOTO 770 1050 REM ************ 1060 REM *MOTTAGNING* 1070 REM ************ 1080 REM D1='KORT' D0='L]NG' 1090 REM B=SIGNALL[NGD, C=TAKTVARIABEL 1100 A%=(INP(58%) AND 1%) 1110 REM TANGENT NERTRYCKT ?? 1120 IF PEEK(65013%)<>0% THEN 1040 1130 IF A%=1% THEN 1100 1140 B=0% 1150 A%=(INP(58%) AND 1%) : B=B+10% : IF PEEK(65013%)<>0% THEN 1040 1160 IF A%=1% THEN C=((5%*C)+(2%*B))/6% : D0=2%*D0+1% : D1=2%*D1 : GOTO 1220 1170 IF B<(.5*C) THEN 1150 1180 D0=2%*D0 : D1=2%*D1 : D1=D1+1% 1190 A%=(INP(58%) AND 1%) : B=B+10% : IF PEEK(65013%)<>0% THEN 1040 1200 IF A%=0% THEN 1190 1210 C=((4%*C)+B)/5% 1220 B=0% 1230 A%=(INP(58%) AND 1%) 1240 B=B+10% 1250 IF A%=0% THEN 1140 1260 IF B<(.5*C) THEN 1230 1270 GOSUB 1340 1280 A%=(INP(58%) AND 1%) 1290 B=B+10% 1300 IF A%=0% THEN 1140 1310 IF B<(2%*C) THEN 1280 1320 ; ' '; 1330 GOTO 1100 1340 D1=D1*2% 1350 D=D1+D0 1360 IF D>125% THEN D=125% 1370 ; A$(D); 1380 D1=0% : D0=0% 1390 RETURN