10 REM ANAGRAMMATIC
20 REM à H.WALWYN
30 MODE 1:BORDER 0:INK 0,0:INK 1,24:INK 2,20:INK 3,6:PAPER 0:PEN 3
35 FOR x=1 TO 7:WINDOW #1,1,40,1,25:NEXT
40 DIM B$(10),C$(10),Q(10)
50 REM
60 PEN 1: PRINT TAB(15): PRINT "ANAGRAMMATIC":PEN 3
70 LOCATE 1,5:PRINT"IF YOU ARE A CROSSWORD ADDICT YOU WILL  KNOW THE PROBLEMS OF TYPING TO REARRANGELETTERS"
80 PRINT:PRINT"FOLLOW THE INSTRUCTIONS  AND  THEN      SIT BACK AND WATCH THE SCREEN AS EVERY  POSSIBLE COMBINATION RUNS UP BEFORE     YOUR VERY EYES."
90 PRINT:PRINT"THE AIM IS NOT TO LOOK AT EVERY GROUP,  BUT SIMPLY TO GLANCE AT THE SCREEN      OCCASIONALLY AND YOU MAY WELL GET SOME  INSPIRATION."
100 PRINT:PRINT"ALTERNATIVELY,                          PUT IN A PRINTER SUBROUTINE FOR COPY."
110 LOCATE 11,23:PEN 2:PRINT"PRESS ENTER TO START":PEN 3
120 IF INKEY$<>CHR$(13) THEN 120 ELSE CLS
130 LOCATE 14,2:PRINT CHR$(24)"ANAGRAMMATIC":PRINT CHR$(24)
140 LOCATE 1,5:PEN 2:PRINT"TYPE ONLY THOSE LETTERS WHICH ARE TO BE REARRANGED.": PEN 1
145 LOCATE 1,8: PEN 3:PRINT"DO NOT INPUT ANY LETTERS WHOSE POSITION IS KNOWN.";:PRINT:PEN 1
150 INPUT A$:IF A$="" THEN 150
160 PRINT
170 L=LEN(A$)
180 ERASE B$,C$,Q
190 DIM B$(L),C$(L),Q(L)
200 FOR X=1 TO L:B$(X)=" ":C$(X)=" ":NEXT
210 PRINT CHR$(24)"ARE ANY LETTERS/SPACES KNOWN? [Y OR N]?":PRINT CHR$(24)
220 Z$=INKEY$:IF Z$="" THEN 220
230 IF Z$="N" OR Z$="n" THEN K$=STRING$(L,"-"):W=L:GOTO 290
240 IF Z$<>"1" AND Z$<>"y" THEN 220
250 PEN 2:PRINT:PRINT"TYPE IN THE KNOWN ORDER AS PER EXAMPLE         [ E.g. '---E-F -EE']":PEN 1
260 INPUT K$:W=L
270 T=0: FOR J=1 TO LEN(K$):IF MID$(K$,J ,1)="-" THEN T=T+1
280 NEXT J:IF T<>L THEN GOSUB 540:GOTO 260
290 PRINT STRING$(40,"-")
300 GOSUB 520
310 FOR J=W TO L
320 K=1
330 Q(K)=1
340 IF B$(Q(K))=" " THEN 450
350 C$(K)=B$(Q(K)):B$(Q(K))=" "
360 K=K+1
370 IF K<=J THEN 330
380 A=1
390 FOR S=1 TO LEN(K$)
400 IF MID$(K$,S,1)="-" THEN PRINT C$(A);:A=A+1:GOTO 420
410 PRINT MID$(K$,S,1);
420 NEXT S:PRINT,
430 K=J
440 B$(Q(K))=MID$(A$,Q(K),1)
450 Q(K)=Q(K)+1
460 IF Q(K)<=L THEN 340
470 K=K-1
480 IF K>=1 THEN 440
490 NEXT J
500 PEN 2:PRINT"THAT'S ALL! -  PRESS [ENTER] TO RESTART.  ":PEN 3:GOTO 120
510 STOP
520 FOR N=1 TO L
530 B$(N)=MID$(A$,N,1):NEXT:RETURN
540 PRINT:PRINT CHR$(24)"    ERROR RE-TYPE.":PRINT CHR$(24):RETURN