home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-09-19 | 3.9 KB | 141 lines |
- 100 CLS
- 110 PRINT "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- 120 PRINT "++ ++"
- 130 PRINT "++ M O R S E M E N T O R ++"
- 140 PRINT "++ ++"
- 150 PRINT "++ Copyright 1983 - Software Bulletin Board ++"
- 160 PRINT "++ ++"
- 170 PRINT "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- 180 REM
- 190 OPTION BASE 1
- 200 PLAY "MF"
- 210 DIM CODE$(40), MORS$(40), GESS$(50)
- 220 DIM GRP(50)
- 230 DATA ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---"
- 240 DATA "-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-"
- 250 DATA "..-","...-",".--","-..-","-.--","--.."
- 260 FOR I=1 TO 26: READ CODE$(I):NEXT I
- 270 ST$="Press any key to continue ... "
- 280 PRINT ST$;
- 290 INPUT Z$
- 300 REM --------------------------------------------------------------------
- 310 CLS
- 320 PRINT
- 330 PRINT "Select tone -- High (3) - Mid (2) - Low (1): ";
- 340 INPUT TONE
- 350 IF TONE<1 OR TONE>3 THEN 330
- 360 TONE=INT(TONE)
- 370 IF TONE=1 THEN PLAY "o2"
- 380 IF TONE=2 THEN PLAY "o3"
- 390 IF TONE=3 THEN PLAY "o4"
- 400 REM
- 410 REM --------------------------------------------------------------------
- 420 PRINT
- 430 PRINT "How many Words Per Minute (5-35): ";
- 440 INPUT WPM
- 450 DLA=6000/WPM
- 460 DL2=400+INT(6000/WPM)
- 470 DL3=INT(DL2/5)
- 480 XPM=WPM*2.5
- 490 SHORT$=" G"+STR$(INT(3*XPM/5)+1)
- 500 LONG$=" G"+STR$(INT(XPM/5)+1)
- 510 REM --------------------------------------------------------------------
- 520 CLS
- 530 PRINT
- 540 PRINT "Please choose training option:"
- 550 PRINT " 1. Send non-stop random groups without display"
- 560 PRINT " 2. Send non-stop random groups with display"
- 570 PRINT " 3. Send random groups -- pause briefly for response"
- 580 PRINT " 4. Press key -- hear code"
- 590 PRINT " 9. End program"
- 600 PRINT "Enter option number: ";
- 610 INPUT OPT
- 620 IF OPT=9 THEN STOP
- 630 IF OPT=1 THEN DEF FNA(I)=32
- 640 IF OPT=2 THEN DEF FNA(I)=GRP(I)+64
- 650 REM -------------------------------------------------------------------
- 660 CLS
- 670 PRINT
- 680 PRINT "INITIALIZING ---- Please Wait"
- 683 IF OPT=3 THEN PRINT "AFTER EACH NOTE IS SENT -- PRESS APPROPRIATE KEY!"
- 690 FOR I=1 TO 26
- 700 MORS$(I)=""
- 710 LC=LEN(CODE$(I))
- 720 FOR N=1 TO LC
- 730 X$=MID$(CODE$(I),N,1)
- 740 IF X$="." THEN MORS$(I)=MORS$(I)+SHORT$ ELSE MORS$(I)=MORS$(I)+LONG$
- 750 NEXT N
- 760 MORS$(I)=MORS$(I)+" p"+STR$(INT(XPM/4.8))
- 770 NEXT I
- 780 IF OPT=4 THEN 1300
- 790 REM -------------------------------------------------------------------
- 800 REM SELECT RANDOM GROUPING
- 810 SD=(VAL(MID$(TIME$,7,2))*100)+VAL(MID$(TIME$,4,2))
- 820 RANDOMIZE(SD)
- 830 FOR I=1 TO 50
- 840 GRP(I)=(INT(RND(SD)*26)+1)
- 850 NEXT I
- 860 CLS
- 870 PRINT "GET READY!"
- 880 FOR K=1 TO 2000:NEXT K
- 890 IF OPT=3 THEN 1120
- 900 REM --------------------------------------------------------------------
- 910 REM NON-STOP GROUPS
- 920 S0=VAL(MID$(TIME$,7,2))
- 930 M0=VAL(MID$(TIME$,4,2))
- 940 H0=VAL(MID$(TIME$,1,2))
- 950 REM
- 960 FOR I=1 TO 50
- 970 PLAY MORS$(GRP(I))
- 980 PRINT CHR$(FNA(I)),
- 990 IF (I/5)-INT(I/5)<>0 THEN 1010
- 1000 FOR K=1 TO DLA:NEXT K
- 1010 NEXT I
- 1020 REM
- 1030 S1=VAL(MID$(TIME$,7,2))
- 1040 M1=VAL(MID$(TIME$,4,2))
- 1050 H1=VAL(MID$(TIME$,1,2))
- 1060 DIF=((H1-H0)*3600)+((M1-M0)*60)+(S1-S0)
- 1070 CPM=600/DIF
- 1080 PRINT USING "W P M = ##.#";CPM
- 1090 PRINT "Another session (Y/N): ";
- 1100 INPUT Z$
- 1110 IF Z$="y" OR Z$="Y" THEN 300 ELSE STOP
- 1120 REM --------------------------------------------------------------------
- 1130 REM SEND AND RECEIVE
- 1140 CLS
- 1150 FOR I=1 TO 50
- 1160 PLAY MORS$(GRP(I))
- 1170 FOR K=1 TO DL2
- 1180 GESS$(I)=INKEY$
- 1190 IF GESS$(I)<>"" THEN 1210
- 1200 NEXT K
- 1210 FOR D=1 TO DL3
- 1220 NEXT D
- 1230 NEXT I
- 1239 RIGHT=0
- 1240 FOR I=1 TO 50
- 1242 IF CHR$(GRP(I)+64)=GESS$(I) THEN RIGHT=RIGHT+1
- 1250 PRINT CHR$(GRP(I)+64);"/";GESS$(I),
- 1260 NEXT I
- 1265 PRCT=(RIGHT*2)
- 1266 PRINT:PRINT "YOUR HAD ";PRCT;" PERCENT CORRECT"
- 1270 PRINT "Another session (Y/N): :;
- 1280 INPUT Z$
- 1290 IF Z$="Y" OR Z$="y" THEN 300 ELSE STOP
- 1300 REM -------------------------------------------------------------------
- 1310 REM PRESS KEY -- HEAR CODE
- 1320 CLS
- 1330 PRINT "PRESS EQUAL SIGN (=) TO END"
- 1340 GP$=INKEY$
- 1350 IF GP$="" THEN 1340
- 1360 IF GP$="=" THEN 1420
- 1370 GP=ASC(GP$)-64
- 1380 LOCATE 12,40
- 1390 PRINT GP$
- 1400 PLAY MORS$(GP)
- 1410 GOTO 1340
- 1420 PRINT "Another session: ";
- 1430 INPUT Z$
- 1440 IF Z$="Y" OR Z$="y" THEN 300 ELSE STOP
-