1 *FX229,1
   10 GOTO 1000
   30 IF B<(.5*T) THEN LET T=T-2
   32 IF DO>200 THEN LET DO=200
   33 IF DA>200 THEN LET DA=200
   35 RETURN
   80 GOSUB 9070
   90 LET DO=0:LET DA=0
  100 DIM A$(120)
  101 RESTORE
  110 FOR N=1 TO 120:READ A$(N):NEXT
  115 PRINT "READY":LET P=0:LET N=0:LET K=0
  116 PRINT
  120 LET T=20
  125 IF T>45 THEN LET T=40
  130 X=ADVAL(0) AND 3:IF X=0 THEN GOTO 125
  150 LET B=0
  160 X=ADVAL(0) AND 3:LET B=B+1
  170 IF X=0 THEN LET DO=2*DO:LET DA=2*DA:LET DO=DO+1:GOSUB 30:GOTO 220
  180 IF B<(.7*T) THEN GOTO 160
  190 LET DO=2*DO:LET DA=2*DA:LET DA=DA+1
  200 X=ADVAL(0) AND 3:LET P=P+1:IF X=1 THEN GOTO 200
  213 IF P>T THEN LET T=T+1
  214 IF P<(.5*T) THEN LET T=T-.5
  215 LET P=0
  220 LET B=0
  230 X=ADVAL(0) AND 3:LET B=B+1:IF X=1 THEN GOTO 150
  250 IF B<(.5*T) THEN GOTO 230
  260 GOSUB 320
  270 X=ADVAL(0):LET B=B+1:IF X=1 THEN GOTO 150
  290 IF B<1.4*T THEN GOTO 270
  300 PRINT " ";:GOTO 130
  320 LET DA=DA*2:LET D=DA+DO:IF D>120 THEN LET D=18
  330 PRINT A$(D);
  331 X$=INKEY$(0):IF X$="R" OR X$="r" THEN LET T=20
  332 IF X$="C" OR X$="c" THEN CLS
  340 LET DA=0:LET DO=0:RETURN
  350 DATA E,T,I,A,N,M,S,U,R,W,D,K,G,O,H,V,F,*,L,*,P,J,B,X,C
  360 DATA Y,Z,Q,*,*,5,4,*,3,*,*,*,2,WAIT,*,+,*,*,*,*,1,6,=,/,*
  370 DATA *,CT,(,*,7,*,*,*,8,*,9,0,*,*,*,*,*,END OF WORK,*,*,*,*,*,*,?
  380 DATA UNDERLINE,*,*,*,*,'',*,*,.,*,*,*,*,*,*,*,*,',*,*,-,*,*,*,*
  390 DATA *,*,*,*,*,*,*,),*,*,*,*,*,",",*,*,*,*,:,*
 1000 GOSUB 9070
 1005 PRINT TAB(10,1);"MORSE READER"
 1010 PRINT TAB(15,3);"BY"
 1020 PRINT TAB(9,5);"G4OIK ** G4OIL"
 1030 PRINT TAB(0,14);"     MORSE READER COPYRIGHT 1984       "
 1031 PRINT TAB(9,15);"G4OIK+G4OIL"
 1032 PRINT TAB(0,20);"DO YOU NEED INSTRUCTIONS?  Y/N"
 1050 A$=INKEY$(18000):IF A$="Y" OR A$="y" THEN 1500
 1060 IF A$="N" THEN GOTO 80
 1070 GOTO 1032
 1185 PRINT B,T
 1500 GOSUB 9070
 1520 PRINT TAB(0,6);"   TO OBTAIN THE BEST RESULTS FROM THIS PROGRAMME, YOU SHOULD HAVE A C.W.       FILTER FITTED, AND YOU MAY NEED TO      ADJUST THE AUDIO VOLUME AND R.F. GAIN   CONTROLS FOR THE BEST RATIO BETWEEN THE"
 1521 PRINT"SIGNAL AND BACKGROUND NOISES."
 1580 PRINTTAB(3,18);"PRESS ANY KEY TO CONTINUE"
 1590 G$=INKEY$(18000)
 1600 GOSUB 9070
 1650 PRINT TAB(0,6);"   BY TURNING DOWN THE R.F. GAIN CONTROLBACKGROUND NOISES CAN BE MINIMISED    - THEY CAN BE INTERPRETED AS A SIGNAL BY  THE PROGRAMME!"
 1651 PRINTTAB(0,11);"   FOR EXAMPLE, A VERY HIGH BACKGROUND  NOISE, COMPARED WITH THE SIGNAL TO BE   INTERPRETED, USUALLY RESULTS IN LONG    ROWS OF THE LET TERS E AND I. EXPERIMENT,AND THIS ADJUSTMENT SOON BECOMES        AUTOMATIC."
 1660 PRINT TAB(3,18);"PRESS ANY KEY TO CONTINUE"
 1670 G$=INKEY$(18000)
 1700 GOSUB 9070
 1710 PRINT TAB(0,6);"   IF LONG ROWS OF THE LET TERS T AND M  APPEAR ON THE SCREEN, THE PROGRAMME HAS LOCKED AT A HIGH SPEED."
 1711 PRINT TAB(0,10);"   SIMPLY PRESS THE RESET KEY 'R' WHILE TWO OR THREE CHARACTERS ARE RECEIVED,   AND EVERYTHING RETURNS TO NORMAL."
 1720 PRINT TAB(3,18);"PRESS ANY KEY TO CONTINUE"
 1730 G$=INKEY$(18000)
 1800 GOSUB 9070
 1810 PRINT TAB(0,6);"   CONNECT YOUR RECEIVER'S EXTENSION    SPEAKER SOCKET TO THE INPUT OF THE      INTERFACE. THE OUTPUT OF THE INTERFACE  SHOULD BE CONNECTED TO THE COMPUTERS    'ANALOGUE IN' SOCKET. CONNECTION SHOULD BE TO PINS";
 1811 PRINT " 3 AND 13, AS SHOWN IN THE    INSTRUCTION SHEET."
 9060 PRINT TAB(0,20);"DO YOU WISH TO READ INSTRUCTIONS        THROUGH AGAIN/  Y/N"
 9065 F$=INKEY$(18000):IF F$="Y" OR F$="y" THEN GOTO 1500
 9066 IF F$="N" OR F$="n" THEN GOTO 80
 9067 GOTO 9060
 9069 
 9070 PRINT TAB(0,0);
 9072 FOR F=0 TO 21: PRINTTAB(0,F);"****************************************"
 9073   PRINT TAB(0,F)"                                        "
 9074 NEXT F
 9075 RETURN