1 REM  2 REM  *** MORSE\VN.BAS ***  3 REM  G{ller f o m 81-11-06  4 REM  Av : Bj|rn Larsen  5 REM  T{ckhammarsv.10  6 REM  125 36 [LVSJ\  7 REM  Tel : 08/474504  8 REM  ABC-medl nr : 2089  9 REM  10 REM 11 REM 12 REM  13 REM  DIM-satser  14 REM  15 REM 16 DIM D$=880% 17 DIM E%(23%) 18 REM 19 REM  20 REM  HUVUDMENY  21 REM  22 REM 23 ; CHR$(12%) 24 ; ,"M O R S E" 25 ; ,"=========" 26 ; CUR(7%,5%)"1. Information" 27 ; CUR(9%,5%)"2. Visning av MORSE-alfabet" 28 ; CUR(11%,5%)"3. MORSEKOD till ALFABET" 29 ; CUR(13%,5%)"4. ALFABET till MORSEKOD" 30 ; CUR(15%,5%)"5. Slut" 31 ; CUR(20%,2%)"Vilket alternativ ? "; 32 GET C$ 33 IF ASC(C$)>53% OR ASC(C$)<49% THEN 32 34 ; C$;"-Tack !" 35 FOR I=0 TO 1000 : NEXT I 36 C%=VAL(C$) 37 ON C% GOTO 43,131,149,203,278 38 REM 39 REM  40 REM  INFORMATION  41 REM  42 REM 43 ; CHR$(12%) 44 ; CUR(0%,9%)"I N F O R M A T I O N" 45 ; CUR(1%,9%)"=====================" 46 ; CUR(4%,0%)"* Anv{nd alltid stora bokst{ver." 47 ; CUR(7%,0%)"* Uthopp fr}n 3 o. 4 sker med @-" 48 ; " tangenten." 49 ; CUR(10%,0%)"* Kopplingschema f|r eventuell" 50 ; " telegrafnyckel:" 51 FOR I%=13% TO 21% 52 ; CUR(I%,0%);CHR$(151%); 53 NEXT I% 54 ; CUR(13%,4%)"pppppppp pppppppppppp" 55 ; CUR(14%,4%)"######"CHR$(135%)"IB1"CHR$(151%)" ##########" 56 ; CUR(15%,4%)""CHR$(135%)"V24-"CHR$(151%)"###############5 `& " 57 ; CUR(16%,4%)""CHR$(135%)"kon-"CHR$(151%)""CHR$(135%)"+9V"CHR$(151%)"  5`8! `0 " 58 ; CUR(17%,4%)""CHR$(135%)"takt"CHR$(151%)"#################! ""#k " 59 ; CUR(18%,4%)" "CHR$(135%)"IB0"CHR$(151%)"  NYCKELj " 60 ; CUR(19%,4%)" ####################### " 61 ; CUR(20%,4%)"//////// ////////////" 62 ; CUR(23%,0%)"Tryck n{r Du l{st f{rdigt. "; 63 GET C$ : GOTO 23 64 REM 65 REM  66 REM  VARIABLER  67 REM  68 REM 69 REM A$ - Val av telegrafnyckel 70 REM A% - -"- 71 REM B$ - Val av tangent 72 REM B% - -"- 73 REM C$ - Alternativval 74 REM C% - -"- 75 REM D$ - Inmatad textstr{ng 76 REM D0$- Del av inmatad str{ng 77 REM D1$- Enskild bokstav i str{ng 78 REM E%(0)-E%(23) - Bildminnet 79 REM H% - Telegraferingshastighet 80 REM I - Loopvariabel (paus) 81 REM I% - -"- (snabb) 82 REM J% - Loopvariabel (snabb) 83 REM L1%- L{ngd p} textstr{ng 84 REM L2%- L{ngd p} MORSE-tecken 85 REM N% - Antal pulser 86 REM P$ - Skrivet MORSE-tecken 87 REM R% - Pulstid 88 REM S$ - MORSE-tecken i DATA-sats 89 REM T$ - ALFA-tecken i DATA-sats 90 REM T1%- Pulsens starttid 91 REM T2%- Pulsens stopptid 92 REM U% - Bildminnesadress f blink 93 REM U1%- Radadress f mark|r 94 REM U2%- Kolumnadress f mark|r 95 REM 96 REM  97 REM  DATA-satser  98 REM  99 REM 100 DATA ._,A,_...,B,_._.,C,_..,D,.,E 101 DATA .._.,F,__.,G,....,H,..,I 102 DATA .___,J,_._,K,._..,L,__,M,_.,N 103 DATA ___,O,.__.,P,__._,Q,._.,R 104 DATA ...,S,_,T,.._,U,..._,V,.__,W 105 DATA _.._,X,_.__,Y,__..,Z,.__._,] 106 DATA ._._,[,___.,\,____,CH,..__,^ 107 DATA _____,0,.____,1,..___,2 108 DATA ...__,3,...._,4,.....,5 109 DATA _....,6,__...,7,___..,8 110 DATA ____.,9 111 DATA ._._._,.,__..__,",",___..., : 112 DATA _._._.,;,..__..,?,._.._.,""" 113 DATA _.__._,(,_.__._,),_.._.,/ 114 DATA _...._,-,.____.,"'" 115 DATA ......,#,.......,# 116 DATA ........,#,.........,# 117 DATA ..........,#,...........,# 118 DATA "FINNS EJ! (tolkas som blank)"," " 119 REM * DATA-satser till bildminnet * 120 REM 121 DATA 31744,31872,32000,32128,32256 122 DATA 32384,32512,32640,31784,31912 123 DATA 32040,32168,32296,32424,32552 124 DATA 32680,31824,31952,32080,32208 125 DATA 32336,32464,32592,32720 126 REM 127 REM  128 REM  Visning av MORSE-alfabet  129 REM  130 REM 131 ; CHR$(12%) 132 ; CUR(0%,12%)"MORSE-alfabet" 133 ; CUR(1%,12%)"=============" 134 RESTORE 135 FOR J%=0% TO 26% STEP 13% 136 FOR I%=3% TO 20% 137 READ S$,T$ 138 IF T$="#" THEN 142 139 ; CUR(I%,J%);T$;" ";S$ 140 NEXT I% 141 NEXT J% 142 ; CUR(23%,0%)"Tryck n{r Du l{st f{rdigt. "; 143 GET C$ : GOTO 23 144 REM 145 REM  146 REM  MORSEKOD till ALFABET  147 REM  148 REM 149 ; CHR$(12%); 150 ; CUR(0%,10%)"TELEGRAFERINGSNYCKEL" 151 ; CUR(1%,10%)"====================" 152 ; 153 ; " 1. En riktig telegrafnyckel" 154 ; : ; " 2. En valfri tangent" 155 ; CUR(8%,5%)"V{lj nyckel ? "; 156 GET A$ 157 IF NOT A$<>"1" XOR A$<>"2" THEN 155 158 A%=VAL(A$) 159 IF A%=1% THEN ; "RIKTIG NYCKEL !" ELSE ; "TANGENT-NYCKEL !" 160 ; CUR(11%,5%)"******************************" : ; : ; 161 FOR I=0 TO 1000 : NEXT I 162 ON A% GOSUB 295,311 163 ; CHR$(12%);"Telegrafera !" : ; 164 N%=0% : P$=" " 165 IF INP(56%)=192% THEN 23 ELSE IF A%=1% AND (1% AND INP(58%)) THEN 165 166 IF INP(56%)=192% THEN 23 ELSE IF A%=2% AND INP(56%)<>B% THEN 166 167 FOR I=0 TO 250 168 IF (1% AND INP(58%)) THEN 169 ELSE 323 169 IF INP(56%)=B% THEN 323 170 NEXT I 171 REM +----------------+ 172 REM ! Ber{kning av ! 173 REM ! morse-tecken ! 174 REM ! och bokstav ! 175 REM +----------------+ 176 FOR I%=0% TO N%-1% 177 IF R%(I%)>50 THEN ; : GOTO 164 178 IF R%(I%)<10% THEN P$=P$+"." ELSE P$=P$+"_" 179 NEXT I% 180 P$=RIGHT$(P$,2) 181 RESTORE 182 READ S$,T$ 183 IF S$="FINNS EJ! (tolkas som blank)" THEN GOTO 189 184 IF P$<>S$ THEN 182 185 IF T$="#" THEN 190 186 REM +------------+ 187 REM ! Utskrift ! 188 REM +------------+ 189 ; T$; 190 U1%=PEEK(65011%) : U2%=PEEK(65012%) 191 ; CUR(22,0);S$;" "; 192 IF T$="#" THEN U2%=U2%-1% : ; CUR(22,12);"Misskrivning!"; 193 POKE 65011%,U1%,U2% 194 GOTO 164 : REM --- N{sta tecken 195 REM 196 REM  197 REM  ALFABET till MORSEKOD  198 REM  199 REM 200 REM +--------------------+ 201 REM ! Val av hastighet ! 202 REM +--------------------+ 203 ; CHR$(12%) 204 ; CUR(1%,8%)"TELEGRAFERINGSHASTIGHET" 205 ; CUR(2%,8%)"=======================" 206 ; CUR(7%,9%)"1. Mycket l}ngsam" 207 ; CUR(9%,9%)"2. L}ngsam" 208 ; CUR(11%,9%)"3. Medel" 209 ; CUR(13%,9%)"4. Snabb" 210 ; CUR(15%,9%)"5. Mycket snabb" 211 ; CUR(20%,3%)"Vilken hastighet ? "; 212 GET C$ 213 IF ASC(C$)>53% OR ASC(C$)<49% THEN 32 214 ; C$;"-Tack !" 215 FOR I=0 TO 1000 : NEXT I 216 H%=VAL(C$) 217 REM +----------------------+ 218 REM ! Bildminnesadresser ! 219 REM +----------------------+ 220 RESTORE 121 221 FOR I%=0% TO 23% 222 READ E%(I%) 223 NEXT I% 224 REM +-----------+ 225 REM ! Text in ! 226 REM +-----------+ 227 ; CHR$(12%); 228 D$=O$ 229 ; "Skriv text. Obs! VERSALER!!! (RETURN)" 230 ; CUR(2%,0%); 231 GET D0$ 232 IF D0$="@" THEN 23 233 IF ASC(D0$)=8% THEN D$=LEFT$(D$,LEN(D$)-1%) : GOTO 231 234 IF ASC(D0$)=13% THEN 241 235 D$=D$+D0$ 236 ; CUR(2%,0%)D$; 237 GOTO 231 238 REM +--------------------------+ 239 REM ! Omvandl t MORSE-tecken ! 240 REM +--------------------------+ 241 ; CUR(0%,0%)" " 242 L1%=LEN(D$) 243 FOR I%=1% TO L1% 244 D1$=MID$(D$,I%,1%) 245 FOR I=0 TO INT(600/H%) : NEXT I 246 RESTORE 247 READ S$,T$ 248 IF T$="#" THEN FOR I=0 TO INT(1500/H%) : NEXT I : GOTO 270 249 IF D1$<>T$ THEN 247 250 ; CUR(0%,0%)S$" " 251 REM +-----------------+ 252 REM ! Bokstavsblink ! 253 REM +-----------------+ 254 U1%=INT((I%-1%)/40%)+2% 255 U2%=I%-(INT((I%-1%)/40%)*40) 256 U%=E%(U1%)+U2%-1% 257 POKE U%,PEEK(U%) OR 128% 258 REM +-------------------------+ 259 REM ! Ljud enl MORSE-tecken ! 260 REM +-------------------------+ 261 L2%=LEN(S$) 262 FOR J%=1% TO L2% 263 D2$=MID$(S$,J%,1%) 264 OUT 6,3% 265 IF D2$="." THEN FOR I=0 TO INT(250/H%) : NEXT I 266 IF D2$="_" THEN FOR I=0 TO INT(600/H%) : NEXT I 267 OUT 6,0% 268 FOR I=0 TO INT(220/H%) : NEXT I 269 NEXT J% : REM # N{sta tonst|t 270 POKE U%,PEEK(U%) AND 127% 271 NEXT I% : REM # N{sta bokstav 272 GOTO 227 273 REM 274 REM  275 REM  SLUT  276 REM  277 REM 278 ; CHR$(12%); 279 ; CUR(9%,7%)"Tack f|r den h{r g}ngen !" 280 ; CUR(12%,12%)"P} }terseende !" 281 ; CUR(15%,16%)"ABC-80" 282 OUT 6,17% 283 FOR I=0 TO 3000 : NEXT I 284 OUT 6,0% 285 ; CHR$(12%); 286 END 287 REM 288 REM  289 REM  SUBRUTINER  290 REM  291 REM 292 REM 293 REM ====== TELEGRAFNYCKEL ====== 294 REM 295 IF (2% AND INP(58%)) THEN 296 ELSE 303 296 ; " Anslut telegrafnyckeln till" 297 ; " V24-kontakten p} baksidan av" 298 ; " tangentbordet." : ; : ; 299 IF (2% AND INP(58%)) THEN 299 300 OUT 6,251 301 FOR I=0 TO 300 : NEXT I 302 OUT 6,0 303 ; " Nyckeln {r isatt och" 304 ; " programmet {r klart att" 305 ; " k|ras." 306 FOR I=0 TO 3500 : NEXT I 307 RETURN 308 REM 309 REM ====== TANGENTNYCKEL ======= 310 REM 311 ; " Tryck ner den tangent som Du" 312 ; " |nskar anv{nda som nyckel." 313 ; CUR(18%,5%); : GET B$ 314 ; "Tangent (";B$;") {r vald och" 315 ; " programmet {r klart att k|-" 316 ; " ras." 317 B%=ASC(B$)+128% 318 FOR I=0 TO 3000 : NEXT I 319 RETURN 320 REM 321 REM =========== PULS =========== 322 REM 323 OUT 6,3 324 T1%=PEEK(65008) 325 IF (1% AND INP(58%)) THEN 326 ELSE 325 326 IF INP(56%)=B% THEN 326 327 T2%=PEEK(65008) 328 OUT 6,0 329 IF T2%>T1% THEN T1%=T1%+256% 330 R%(N%)=T1%-T2% 331 N%=N%+1% 332 GOTO 167 333 REM 334 REM 335 REM  336 REM  337 REM