Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FFF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\CFBB\FF\FF\FF\FF\FF\FF\FF\FFB\FF\FFF\AB\C7\E7\F7\FFFF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F Skip to contentFF\BF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"FFF\FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F\DF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F\FFF\FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F\BFFFFF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\BF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\FFFF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\DF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F\EF itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
FF\B7 20 REM \E0\E0FE Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F\B9\C8EE itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D\C8 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
BFE\ED Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
A Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
A\CB\CB Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0" itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0" itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\CD\FB Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
D\F8\F2 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0" itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F\CD\A0\FB\F8\C3 Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
C\CB Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0" itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"\F0\CD\A0\FB Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
D\F8\F2\C3 Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
C\EDBED\FC\C3 Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
\C3 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0" Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
\CD\FB Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
D\F8FE Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
F\B9\C8 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0" Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
\CD\A0\FB Skip to contentMorse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People
D\F8\E3 itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E itemtype='https://schema.org/Blog' itemscope='itemscope' class="computer_media-template-default single single-computer_media postid-56702 wp-custom-logo ast-desktop ast-page-builder-template ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU \n1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ \n1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- \n1056 FAST \n1070 LET A=USR 16824 \n1200 SLOW \n1210 RETURN \n2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- \n2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- \n2005 REM MAKE SURE WANT TO SEND. \n2010 CLS \n2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" \n2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " \n2040 IF INKEY$="N" THEN GOTO MAINMENU \n2050 IF INKEY$="Y" THEN GOTO 2100 \n2060 GOTO 2040 \n2100 REM INPUT, CALCULATE SPEEDS \n2105 CLS \n2110 PRINT AT 5,0;"CHARACTER SPEED?" \n2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " \n2120 INPUT C$(1) \n2121 GOSUB 2800 \n2122 IF WRONG=1 THEN GOTO 2120 \n2127 GOSUB 2700 \n2128 LET BC=B \n2129 LET CC=C \n2130 PRINT AT 6,10;WPM;" WPM" \n2131 LET CHSP=WPM \n2140 PRINT AT 8,0;"CODE SPEED?" \n2150 INPUT C$(1) \n2151 GOSUB 2800 \n2152 IF WRONG=1 THEN GOTO 2150 \n2153 LET TOTSP=WPM \n2154 LET WPM=35/(100/TOTSP-65/CHSP) \n2156 GOSUB 2700 \n2158 LET BS=B \n2159 LET CS=C \n2160 PRINT AT 9,10;TOTSP;" WPM" \n2170 POKE 16703,CC \n2180 POKE 16717,CC \n2190 POKE 16704,BC \n2400 POKE 16718,BC \n2410 POKE 16743,BS \n2420 POKE 16742,CS \n2500 LET A$(22,32)="\' " \n2510 CLS \n2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" \n2521 PRINT \n2522 PRINT "PRESS ""B"" TO STOP THE TONE." \n2523 PRINT \n2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" \n2525 PRINT \n2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." \n2530 IF INKEY$<>"T" THEN GOTO 2530 \n2532 GOSUB 1000 \n2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ \n2540 FOR N=1 TO 165 \n2550 NEXT N \n2560 CLS \n2595 REM %/CALL MACHINE ROUTINE%/%/ \n2600 FAST \n2610 LET A=USR 16758 \n2615 SLOW \n2620 GOTO MAINMENU \n2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ \n2705 LET SN=620/WPM \n2710 LET B=INT (SN+0.5) \n2715 SLOW \n2720 IF B>256 THEN GOTO 2750 \n2725 LET C=0 \n2730 LET C=C+1 \n2735 LET B=B+1 \n2740 RETURN \n2750 LET C=INT (B/256) \n2760 LET B=B-C*256 \n2770 GOTO 2730 \n2800 REM %/%/INPUT VALIDITY CHECK%/ \n2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 \n2820 IF C$(1,2)=" " THEN GOTO 2840 \n2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 \n2840 LET WPM=VAL C$(1) \n2850 LET WRONG=0 \n2855 PRINT AT 19,0;" " \n2860 RETURN \n2900 LET WRONG=1 \n2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " \n2920 RETURN \n3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- \n3005 CLS \n3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ \n3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " \n3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" \n3030 PRINT AT 10,5;"B ALL CHARACTERS" \n3040 PRINT AT 12,5;"C LETTERS ONLY" \n3050 PRINT AT 14,5;"D NUMBERS ONLY" \n3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" \n3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" \n3100 IF INKEY$="A" THEN GOTO 3200 \n3110 IF INKEY$="B" THEN GOTO 3400 \n3120 IF INKEY$="C" THEN GOTO 3500 \n3130 IF INKEY$="D" THEN GOTO 3600 \n3140 IF INKEY$="E" THEN GOTO 3700 \n3145 IF INKEY$="F" THEN GOTO 200 \n3150 GOTO 3100 \n3200 REM %/%/SPECIFIC CHARACTERS%/%/ \n3205 CLS \n3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" \n3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" \n3221 PRINT AT 10,0;"USE """" FOR """ \n3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" \n3226 PRINT \n3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." \n3230 INPUT B$ \n3240 LET SL=LEN B$ \n3250 GOTO 4000 \n3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ \n3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" \n3410 LET SL=LEN B$ \n3420 GOTO 4000 \n3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ \n3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" \n3510 LET SL=26 \n3520 GOTO 4000 \n3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ \n3605 LET B$="1234567890" \n3610 LET SL=10 \n3620 GOTO 4000 \n3700 REM %/%/NUMBERS AND LETTERS%/%/ \n3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" \n3710 LET SL=36 \n4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- \n4005 CLS \n4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." \n4020 FOR N=1 TO 80 \n4030 NEXT N \n4040 FAST \n4050 LET L=1 \n4060 LET C=1 \n4065 LET N=1 \n4070 IF N>5 THEN GOTO 4120 \n4075 LET R=INT (1+SL*RND) \n4080 LET A$(L,C)=B$(R) \n4090 LET C=C+1 \n4100 IF C>32 THEN GOTO 4500 \n4110 LET N=N+1 \n4115 GOTO 4070 \n4120 LET A$(L,C)=" " \n4130 LET C=C+1 \n4140 IF C>32 THEN GOTO 4500 \n4145 LET N=1 \n4150 GOTO 4070 \n4500 LET C=1 \n4510 LET L=L+1 \n4520 IF L<23 THEN GOTO 4070 \n4525 SLOW \n4530 GOTO MAINMENU \n6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- \n6005 CLS \n6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" \n6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." \n6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " \n6040 IF INKEY$<>"C" THEN GOTO 6040 \n6100 CLS \n6110 FOR L=1 TO 22 \n6120 PRINT A$(L) \n6130 NEXT L \n6140 IF INKEY$<>"C" THEN GOTO 6140 \n6150 GOTO MAINMENU \n9000 REM ---WRITE A MESSAGE --- \n9002 REM MAKE SURE WANT TO WRITE \n9010 CLS \n9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" \n9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " \n9040 IF INKEY$="N" THEN GOTO 200 \n9050 IF INKEY$="Y" THEN GOTO 9090 \n9060 GOTO 9040 \n9090 REM %/%/INITILIZE THE ARRAY%/%/ \n9095 PRINT AT 19,0;" INITILIZING ARRAY" \n9100 FOR L=1 TO 22 \n9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " \n9120 NEXT L \n9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ \n9200 CLS \n9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" \n9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." \n9230 PRINT \n9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." \n9245 PRINT \n9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." \n9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " \n9270 IF INKEY$<>"C" THEN GOTO 9270 \n9275 REM %/%/%/L IS LINE COUNTER%/%/%/ \n9276 REM %/%/C IS COLUMN COUNTER%/%/ \n9280 LET L=1 \n9290 LET C=1 \n9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ \n9305 CLS \n9310 FOR M=1 TO 22 \n9320 PRINT A$(M) \n9330 NEXT M \n9400 SLOW \n9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ \n9530 INPUT B$ \n9535 FAST \n9540 LET N=1 \n9545 IF B$(N)="*" THEN GOTO 9800 \n9550 LET A$(L,C)=B$(N) \n9560 LET N=N+1 \n9570 LET C=C+1 \n9580 IF C<=32 THEN GOTO 9700 \n9590 LET C=1 \n9600 LET L=L+1 \n9610 IF L=23 THEN GOTO 9815 \n9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ \n9705 IF N>LEN (B$) THEN GOTO 9300 \n9710 GOTO 9545 \n9800 REM %/STOP - RETURN TO MENU%/ \n9810 LET A$(L,C)="\' " \n9815 SLOW \n9820 GOTO MAINMENU \n9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-Morse Code
Practice sending, composing and listening to Morse code.
Content
Source Code
10 REM \FF\7F\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\03\1F\03\CF\03\4B\03\4B\FF\FF\FF\FF\FF\FF\FF\FF\03\7B\FF\FF\07\6F\03\57\03\33\03\AB\07\07\07\87\07\C7\07\E7\07\F7\07\FF\07\7F\07\3F\07\1F\07\0F\3F\BF\0F\7F\0F\5F\1F\7F\7F\FF\0F\DF\1F\3F\0F\FF\3F\FF\0F\8F\1F\5F\0F\BF\3F\3F\3F\7F\1F\1F\0F\9F\0F\2F\1F\BF\1F\FF\7F\7F\1F\DF\0F\EF\1F\9F\0F\6F\0F\4F\0F\3F\03\B7 20 REM \E0\E0\4F\3E\2F\B9\C8\21\7E\62\5E\23\22\12\41\1D\C8\1C\16\00\7B\83\5F\21\82\40\19\4E\23\46\ED\43\0A\41\21\0A\41\CB\26\38\27\23\CB\26\38\04\26\03\18\02\26\01\01\01\3F\CD\92\41\10\FB\0D\20\F8\25\20\F2\01\01\3F\CD\A0\41\10\FB\03\20\F8\C3\2C\41\23\CB\26\38\04\26\06\18\02\26\02\01\01\F0\CD\A0\41\10\FB\0D\20\F8\25\20\F2\C3\0C\41\ED\6B\10\40\3E\08\23\3D\20\FC\C3\14\41\00\00\00\00\00\00\C3\1D\41 30 REM )% COPY PEEK COPY +4 CLEAR <= RETURN 14 CLEAR TAN )% COPY +4 CLEAR <= RETURN 14 CLEAR TAN 90 40 REM \1D\1E\01\04\00\CD\92\41\10\FB\0D\20\F8\4F\3E\2F\B9\C8\01\04\00\CD\A0\41\10\FB\0D\20\F8\18\E3\1E\1F\20\21\22\23 80 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-A$ IS MESSAGE ARRAY. C$ IS USEDTO INPUT DATA. MAINMENU IS LINE NUMBER OF MAIN MENU. N IS ACOUNTER. C IS COLUMN AND L IS LINE COUNTERS OF A$ ARRAY %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 100 DIM A$(22,32) 110 DIM C$(1,2) 120 LET MAINMENU=200 150 FOR N=1 TO 22 160 LET A$(N)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 170 NEXT N 200 REM %/%/%/%/%/%/MAIN MENU%/%/%/%/%/%/%/%/ 201 CLS 205 PRINT "CHOOSE" 210 PRINT AT 7,10;"A WRITE A MESSAGE" 220 PRINT AT 9,10;"B RANDOM CODE" 230 PRINT AT 11,10;"C SEND CODE" 240 PRINT AT 13,10;"D DISPLAY MESSAGE" 250 PRINT AT 15,10;"E SAVE ON TAPE" 300 IF INKEY$="C" THEN GOTO 2000 310 IF INKEY$="A" THEN GOTO 9000 320 IF INKEY$="B" THEN GOTO 3000 330 IF INKEY$="D" THEN GOTO 6000 340 IF INKEY$="E" THEN GOTO 500 400 GOTO 300 500 REM %/%/%/%/%/SAVE ON TAPE%/%/%/%/%/%/ 510 SAVE "MORSE COD%E" 520 GOTO MAINMENU 1000 REM %/%/%/%/TUNE TELEVISIO%/%/%/%/%/ 1010 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE MAKES A TONE TO ALLOW THE USER TO TUNE THE TELEVISIN FOR THE BEST TONE %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 1056 FAST 1070 LET A=USR 16824 1200 SLOW 1210 RETURN 2000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-CODE SEND ROUTINE. ADJUSTS SPEED OF MACHINE PROGRAM, THEN CALLS MACHINE PROGRAM. C$ IS USED TO INPUT SPEEDS. WRONG IS USED TO INDICATE IF INPUTED SPEE5 IS OK(0=OK,1=BAD) INKEY$ %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2001 REM B,C OUTPUT OF CALCULATE SPEED SUBROUTINE. BC,CC,BS,CS MACHINE CODE SPEEDS. WPM= SPEED, OUTPUT OF VALITY CHECK SUBROUTINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 2005 REM MAKE SURE WANT TO SEND. 2010 CLS 2020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO SEND CODE?" 2030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 2040 IF INKEY$="N" THEN GOTO MAINMENU 2050 IF INKEY$="Y" THEN GOTO 2100 2060 GOTO 2040 2100 REM INPUT, CALCULATE SPEEDS 2105 CLS 2110 PRINT AT 5,0;"CHARACTER SPEED?" 2115 PRINT AT 21,0;"% % % % %P%R%E%S%S% %N%U%M%B%E%R%S% %T%H%E%N% %E%N%T%E%R% % % % " 2120 INPUT C$(1) 2121 GOSUB 2800 2122 IF WRONG=1 THEN GOTO 2120 2127 GOSUB 2700 2128 LET BC=B 2129 LET CC=C 2130 PRINT AT 6,10;WPM;" WPM" 2131 LET CHSP=WPM 2140 PRINT AT 8,0;"CODE SPEED?" 2150 INPUT C$(1) 2151 GOSUB 2800 2152 IF WRONG=1 THEN GOTO 2150 2153 LET TOTSP=WPM 2154 LET WPM=35/(100/TOTSP-65/CHSP) 2156 GOSUB 2700 2158 LET BS=B 2159 LET CS=C 2160 PRINT AT 9,10;TOTSP;" WPM" 2170 POKE 16703,CC 2180 POKE 16717,CC 2190 POKE 16704,BC 2400 POKE 16718,BC 2410 POKE 16743,BS 2420 POKE 16742,CS 2500 LET A$(22,32)="\' " 2510 CLS 2520 PRINT AT 7,0;"PRESS ""T"" TO TUNE YOUR TV FOR THE BEST TONE" 2521 PRINT 2522 PRINT "PRESS ""B"" TO STOP THE TONE." 2523 PRINT 2524 PRINT "YOU WILL THEN HAVE ABOUT TEN SECONDS BEFORE MORSE CODE STARTS" 2525 PRINT 2526 PRINT "PRESS ""B"" ONCE THE CODE HAS STARTED TO STOP CODE AND RETURN TO THE MAIN MENU." 2530 IF INKEY$<>"T" THEN GOTO 2530 2532 GOSUB 1000 2535 REM %/%/%/%/%/%/WASTE TIME%/%/%/%/%/%/%/ 2540 FOR N=1 TO 165 2550 NEXT N 2560 CLS 2595 REM %/CALL MACHINE ROUTINE%/%/ 2600 FAST 2610 LET A=USR 16758 2615 SLOW 2620 GOTO MAINMENU 2700 REM %/%/%/CALCULATE SPEED%/%/%/%/%/ 2705 LET SN=620/WPM 2710 LET B=INT (SN+0.5) 2715 SLOW 2720 IF B>256 THEN GOTO 2750 2725 LET C=0 2730 LET C=C+1 2735 LET B=B+1 2740 RETURN 2750 LET C=INT (B/256) 2760 LET B=B-C*256 2770 GOTO 2730 2800 REM %/%/INPUT VALIDITY CHECK%/ 2810 IF C$(1,1)<"0" OR C$(1,1)>"9" THEN GOTO 2900 2820 IF C$(1,2)=" " THEN GOTO 2840 2830 IF C$(1,2)<"0" OR C$(1,2)>"9" THEN GOTO 2900 2840 LET WPM=VAL C$(1) 2850 LET WRONG=0 2855 PRINT AT 19,0;" " 2860 RETURN 2900 LET WRONG=1 2910 PRINT AT 19,0;"% % % %I%N%C%O%R%R%E%C%T% %I%N%P%U%T%-%-%-%T%R%Y% %A%G%A%I%N% % " 2920 RETURN 3000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-RANDOM CODE GENERATOR. B$ CONTAINS THE LETTERS TO BE RANDOMIZED.SL IS THE LENGTH OF B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 3005 CLS 3006 REM %/%/%/%/%/RANDOM MENU%/%/%/%/%/%/%/ 3010 PRINT AT 5,0;"% % % %Y%O%U% %H%A%V%E% %C%H%O%S%E%N% %R%A%N%D%O%M% %C%O%D%E% % " 3020 PRINT AT 8,5;"A SPECIFIC CHARACTERS" 3030 PRINT AT 10,5;"B ALL CHARACTERS" 3040 PRINT AT 12,5;"C LETTERS ONLY" 3050 PRINT AT 14,5;"D NUMBERS ONLY" 3060 PRINT AT 16,5;"E LETTERS AND NUMBERS ONLY" 3070 PRINT AT 18,5;"F I DO NOT WANT RANDOM CODE" 3100 IF INKEY$="A" THEN GOTO 3200 3110 IF INKEY$="B" THEN GOTO 3400 3120 IF INKEY$="C" THEN GOTO 3500 3130 IF INKEY$="D" THEN GOTO 3600 3140 IF INKEY$="E" THEN GOTO 3700 3145 IF INKEY$="F" THEN GOTO 200 3150 GOTO 3100 3200 REM %/%/SPECIFIC CHARACTERS%/%/ 3205 CLS 3210 PRINT AT 5,0;"CHOOSE THE CHARACTERS YOU WANT FROM THIS LIST" 3220 PRINT AT 7,0;"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?/-.,;""" 3221 PRINT AT 10,0;"USE """" FOR """ 3225 PRINT AT 13,0;"PRESS ENTER AFTER YOU HAVE MADE YOUR CHOICE" 3226 PRINT 3227 PRINT "A CHARCTER MAY BE ENTERED MORE THAN ONCE TO GET EXTRA PRACTICE WITH IT." 3230 INPUT B$ 3240 LET SL=LEN B$ 3250 GOTO 4000 3400 REM %/%/%/%/%/ALL CHARACTERS%/%/%/%/ 3405 LET B$="0123456789?)-/;,.""$£ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3410 LET SL=LEN B$ 3420 GOTO 4000 3500 REM %/%/%/%/%/LETTERS ONLY%/%/%/%/%/%/ 3505 LET B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3510 LET SL=26 3520 GOTO 4000 3600 REM %/%/%/%/%/NUMBERS ONLY%/%/%/%/%/%/ 3605 LET B$="1234567890" 3610 LET SL=10 3620 GOTO 4000 3700 REM %/%/NUMBERS AND LETTERS%/%/ 3705 LET B$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 3710 LET SL=36 4000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-THIS ROUTINE CREATES 5 LETTER "WORDS" IN ARRAY A$ FROM THE LETTERS IN THE STRING B$. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 4005 CLS 4010 PRINT "IN APPROXIMATELY FIVE SECONDS THE SCREEN WILL GO BLANK AND AFTER A PERIOD OF TIME IT WILL COME BACK WITH THE FIRST MENU." 4020 FOR N=1 TO 80 4030 NEXT N 4040 FAST 4050 LET L=1 4060 LET C=1 4065 LET N=1 4070 IF N>5 THEN GOTO 4120 4075 LET R=INT (1+SL*RND) 4080 LET A$(L,C)=B$(R) 4090 LET C=C+1 4100 IF C>32 THEN GOTO 4500 4110 LET N=N+1 4115 GOTO 4070 4120 LET A$(L,C)=" " 4130 LET C=C+1 4140 IF C>32 THEN GOTO 4500 4145 LET N=1 4150 GOTO 4070 4500 LET C=1 4510 LET L=L+1 4520 IF L<23 THEN GOTO 4070 4525 SLOW 4530 GOTO MAINMENU 6000 REM %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-DISPLAY ROUTINE. PRINTS INSTRUCTIONS, THEN PRINTS MESSAGE ARRAY LINE BY LINE. %-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%- 6005 CLS 6010 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 6020 PRINT AT 7,0;"WHEN YOU HAVE FINISHED READING THE MESSAGE PRESS ""C"" TO RETURN TO THE MAIN MENU." 6030 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 6040 IF INKEY$<>"C" THEN GOTO 6040 6100 CLS 6110 FOR L=1 TO 22 6120 PRINT A$(L) 6130 NEXT L 6140 IF INKEY$<>"C" THEN GOTO 6140 6150 GOTO MAINMENU 9000 REM ---WRITE A MESSAGE --- 9002 REM MAKE SURE WANT TO WRITE 9010 CLS 9020 PRINT AT 10,0;"ARE YOU SURE YOU WANT TO WRITE A MESSAGE?" 9030 PRINT AT 21,0;"% %P%R%E%S%S% %"%Y%"% %F%O%R% %Y%E%S%,% %"%N%"% %F%O%R% %N%O%.% " 9040 IF INKEY$="N" THEN GOTO 200 9050 IF INKEY$="Y" THEN GOTO 9090 9060 GOTO 9040 9090 REM %/%/INITILIZE THE ARRAY%/%/ 9095 PRINT AT 19,0;" INITILIZING ARRAY" 9100 FOR L=1 TO 22 9110 LET A$(L)="\' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' \' " 9120 NEXT L 9190 REM %/%/%/PRINT INSTRUCTIONS%/%/ 9200 CLS 9210 PRINT AT 5,10;"%I%N%S%T%R%U%C%T%I%O%N%S" 9220 PRINT AT 7,0;"ENTER ANY LENGTH OF MESSAGE UP TO 1 SCREEN FULL. YOU MAY ENTERANY CONVENIENT LENGTH PHRASE AT ONE TIME. WHEN YOUR MESSAGE IS COMPLETE ENTER ""*""(SHIFTED B)." 9230 PRINT 9240 PRINT "FOR YOUR CONVIENCE ALL SPACES WHICH HAVE NOT BEEN FILLED CON- TAIN ""\' ""." 9245 PRINT 9250 PRINT "IF YOU FILL THE SCREEN THE PRO- GRAM WILL AUTOMATICALLY RETURN TO THE INITIAL MENU." 9260 PRINT AT 21,0;"% % % % % % %P%R%E%S%S% %"%C%"% %T%O% %C%O%N%T%I%N%U%E% % % % % " 9270 IF INKEY$<>"C" THEN GOTO 9270 9275 REM %/%/%/L IS LINE COUNTER%/%/%/ 9276 REM %/%/C IS COLUMN COUNTER%/%/ 9280 LET L=1 9290 LET C=1 9300 REM %/%/%/%/%/%/PRINT ARRAY%/%/%/%/%/%/ 9305 CLS 9310 FOR M=1 TO 22 9320 PRINT A$(M) 9330 NEXT M 9400 SLOW 9500 REM %/%/%/%/%/INPUT MESSAGE%/%/%/%/%/ 9530 INPUT B$ 9535 FAST 9540 LET N=1 9545 IF B$(N)="*" THEN GOTO 9800 9550 LET A$(L,C)=B$(N) 9560 LET N=N+1 9570 LET C=C+1 9580 IF C<=32 THEN GOTO 9700 9590 LET C=1 9600 LET L=L+1 9610 IF L=23 THEN GOTO 9815 9700 REM %/%/%/%/%/ALL OF INPUT?%/%/%/%/%/ 9705 IF N>LEN (B$) THEN GOTO 9300 9710 GOTO 9545 9800 REM %/STOP - RETURN TO MENU%/ 9810 LET A$(L,C)="\' " 9815 SLOW 9820 GOTO MAINMENU 9999 REM "MORSE CODE"BY GARY FOXCOPYRIGHT(C)1983-EXCLUSIVE DIST-RIBUTION BY HAWG WILD SOFTWARE, P.O.BOX 7668,LITTLE ROCK,AR72217 -ALL RIGHTS RESERVED-People