10 REM ********************
20 REM *                  *
30 REM *    Solitaire     *
40 REM *        by        *
50 REM *      Marion      *
60 REM *      Clarke      *
70 REM *                  *
80 REM ********************
90 '
100 ENV 1,15,-1,9:ENT -1,135,-1,1
110 SYMBOL AFTER 225:SYMBOL 225,0,0,0,0,0,0,0,0:SYMBOL 250,90,165,90,165,165,90,165,90
120 DIM a$(13),b$(13),c$(4):FOR a=1 TO 13:READ a$(a):NEXT:FOR a=1 TO 13:READ b$(a):NEXT:FOR a=1 TO 4:READ c$(a):NEXT
130 d$=" EA234567890JQK"
140 DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
150 DATA "Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"
160 DATA "Clubs","Diamonds","Hearts","Spades"
170 DATA "1 - Klondyke","2 - Spaces","3 - Accordion","4 - Poker Solitaire","5 - End"
180 CALL &BC02:PAPER 0:PEN 1:MODE 1:RESTORE 170:FOR a=0 TO 4:READ z$:LOCATE 13,a*2+8:PRINT z$:NEXT:WHILE INKEY$<>"":WEND
190 z$=UPPER$(INKEY$):IF z$="" THEN 190 ELSE a=INSTR("12345",z$):IF a=0 THEN 190 ELSE IF a=5 THEN CALL &BC02:PAPER 0:PEN 1:CLS:END
200 PAPER #2,0:WINDOW #2,2,39,2,24:PAPER #1,0:PEN #1,1
210 e=0
220 ON a GOSUB 440,850,1210,1520
230 ON z GOTO 240,260,270,280
240 CLS #1:LOCATE #1,1,1:PRINT #1,"End game";:LOCATE #1,1,3:PRINT #1,"Are you";:LOCATE #1,2,4:PRINT #1,"sure?";:WHILE INKEY$<>"":WEND
250 z$=UPPER$(INKEY$):IF z$="" THEN 250 ELSE IF z$="Y" THEN 280 ELSE IF z$="N" THEN 220 ELSE SOUND 2,600:GOTO 250
260 CLS #1:LOCATE #1,1,2:PRINT #1,"YOU WIN!";:FOR x=150 TO 25 STEP -1:SOUND 2,x,2:NEXT:GOTO 280
270 CLS #1:LOCATE #1,1,2:PRINT #1,"You lose";:FOR x=50 TO 150:SOUND 2,x,2:NEXT:GOTO 280
280 LOCATE #1,1,3:PRINT #1,CHR$(20):LOCATE #1,2,4:PRINT #1,"Again?":WHILE INKEY$<>"":WEND
290 z$=UPPER$(INKEY$):IF z$="" THEN 290 ELSE IF z$<>"Y" AND z$<>"N" THEN 290 ELSE ON a GOSUB 300,300,310,300:IF z$="Y" THEN 210 ELSE GOTO 180
300 ERASE i,j
310 ERASE f,g,h:RETURN
320 INK 0,9:INK 1,0:INK 2,6:INK 3,26:PAPER 0:BORDER 13:CLS
330 PLOT 0,0,1:DRAW 638,0:DRAW 638,398:DRAW 0,398:DRAW 0,0
340 PEN 1:LOCATE 16,24:PRINT "Shuffling";
350 DIM f(f):FOR b1=1 TO f:f(b1)=b1:NEXT
360 FOR b1=1 TO f*3:b2=RND*(f-1)+1:b3=RND*(f-1)+1:b4=f(b2):f(b2)=f(b3):f(b3)=b4:NEXT:CLS #2:RETURN
370 WHILE INKEY$<>"":WEND
380 u$=UPPER$(INKEY$):IF u$="" THEN 380 ELSE IF u$=CHR$(127) THEN SOUND 2,400,10:u=0:RETURN ELSE IF u$="1" THEN u$="0"
390 u=INSTR(d$,u$):IF u=0 THEN SOUND 2,600:GOTO 380 ELSE IF u=1 OR u=2 THEN SOUND 2,250,2:u=0:RETURN
400 u=u-2:LOCATE #1,1,e1:PRINT #1,b$(u);" of ";:SOUND 2,250,2:WHILE INKEY$<>"":WEND
410 v$=UPPER$(INKEY$):IF v$="" THEN 410 ELSE IF v$=CHR$(127) THEN SOUND 2,400,10:v=0:RETURN
420 v=INSTR(" ECDHS",v$):IF v=0 THEN SOUND 2,600:GOTO 410 ELSE IF v=1 OR v=2 THEN SOUND 2,250,2:v=0:RETURN
430 v=v-2:LOCATE #1,1,e1+1:PRINT #1,c$(v);:SOUND 2,400,2:RETURN
440 z=0:IF e=1 THEN 490 ELSE e=1:f=52:GOSUB 320:WINDOW #1,31,39,14,18
450 DIM g(52),h(126),i(4),j(12)
460 h1=0:w1=52:FOR y=2 TO 8:FOR x=y*4-6 TO 26 STEP 4:w=f(w1):GOSUB 800:g(f(w1))=(y-2)*7+(x-2)‡ 4+1:h(g(f(w1)))=f(w1):IF h1=1 THEN g(f(w1))=0-g(f(w1))
470 w1=w1-1:h1=1:NEXT:h1=0:NEXT:x=36:y=20:w=f(22):GOSUB 800:h1=1:x=31:GOSUB 800
480 h2=7:f1=22:f2=24:FOR t=1 TO 4:i(t)=0:NEXT
490 IF z<>0 THEN RETURN ELSE e1=1:CLS #1:SOUND 2,100,3:GOSUB 370
500 IF u=0 OR v=0 THEN IF u$=CHR$(127) OR v$=CHR$(127) THEN SOUND 2,600:GOTO 490 ELSE IF u$=" " OR v$=" " THEN GOSUB 610:GOTO 490 ELSE RETURN
510 u1=u:v1=v:w1=(v-1)*13+u:IF g(w1)>0 THEN k1=1:g1=g(w1)-((g(w1)-1)‡ 126)*126 ELSE IF f(f1)=w1 THEN k1=2 ELSE SOUND 2,600:GOTO 490
520 IF u1=1 THEN k2=2:GOTO 580 ELSE IF u1<13 THEN 530 ELSE FOR g2=1 TO 7:IF h(g2)=0 THEN k2=1:g2=g2-7:GOTO 580 ELSE NEXT:SOUND 2,600:GOTO 490
530 LOCATE #1,4,3:PRINT #1,"to";:e1=4:GOSUB 370
540 IF u=0 OR v=0 THEN IF u$=CHR$(127) OR v$=CHR$(127) THEN SOUND 2,600:GOTO 490 ELSE IF u$=" " OR v$=" " THEN GOSUB 610:GOTO 490 ELSE RETURN
550 w2=(v-1)*13+u:IF g(w2)>0 AND g(w2)<127 THEN k2=1:g2=g(w2) ELSE IF i(v)=u THEN k2=2 ELSE SOUND 2,600:GOTO 490
560 IF (k2=1 AND (u<>u1+1 OR v=v1 OR v+v1=5)) OR (k2=2 AND (u1<>u+1 OR v1<>v)) THEN SOUND 2,600:GOTO 490
570 IF k1=1 AND k2=2 THEN IF g(w1)<1 OR g(w1)>126 THEN SOUND 2,600:GOTO 490
580 t1=0:IF k1=1 THEN GOSUB 670 ELSE GOSUB 690
590 IF k2=1 THEN GOSUB 730 ELSE GOSUB 770
600 IF h2=52 THEN z=2:RETURN ELSE GOTO 490
610 t3=0:IF t1=0 THEN t2=f1:t1=1
620 IF f1=0 THEN RETURN ELSE y=20:CLS #1:LOCATE #1,3,3:PRINT #1,"twist";:FOR f3=f1-1 TO f1-3 STEP -1:s=f3:WHILE s<1:s=s+f2:WEND:IF s=f2 THEN x=31:h1=1:GOSUB 800
630 x=36:h1=0:w=f(s):GOSUB 800:IF s=1 THEN x=31:h1=2:GOSUB 800
640 IF t2=s THEN t3=1
650 NEXT:IF t3=1 THEN t1=t1+1:IF t1=4 THEN z=3:RETURN
660 f1=f1-3:WHILE f1<1:f1=f1+f2:WEND:RETURN
670 j=0:WHILE h(g1+j*7)<>0:j(j+1)=h(g1+j*7):h(g1+j*7)=0:j=j+1:g(j(j))=0:WEND:IF g1>7 THEN w=h(g1-7):IF g(w)<0 THEN g(w)=ABS(g(w)):h2=h2+1 ELSE g(w)=g(w)-126
680 r=(g1-1)‡ 7+2:x=((g1-1) MOD 7)*4+2:PLOT (x-1)*16,(26-r)*16,0:DRAWR 62,0:PAPER 0:FOR y=r TO r+j+3:LOCATE x,y:PRINT SPACE$(4):NEXT:IF g1<8 THEN RETURN ELSE y=r-1:h1=0:GOSUB 800:RETURN
690 y=20:f3=f1
700 WHILE f3<f2:f(f3)=f(f3+1):f3=f3+1:WEND:f2=f2-1:IF f2=0 THEN x=36:GOTO 710 ELSE IF f1>f2 THEN f1=1:x=31:GOTO 710 ELSE GOTO 720
710 y=20:h1=2:GOSUB 800
720 w=f(f1):h2=h2+1:j=1:j(1)=w1:IF f2=0 THEN RETURN ELSE x=36:h1=0:GOSUB 800:RETURN
730 IF g2>0 THEN x=((g2-1) MOD 7)*4+2 ELSE x=g2*4+26
740 h1=0:FOR j1=1 TO j:h(g2+j1*7)=j(j1):g(j(j1))=g2+j1*7:IF j1<j THEN g(j(j1))=g(j(j1))+126
750 IF g2<1 THEN y=j1+1 ELSE y=(g2-1)‡ 7+j1+2
760 w=j(j1):GOSUB 800:NEXT:IF g2>0 THEN g(w2)=g(w2)+126:RETURN ELSE RETURN
770 IF (v1 MOD 2)=0 THEN x=36 ELSE x=31
780 IF v1<3 THEN y=8 ELSE y=2
790 w=w1:h1=0:GOSUB 800:i(v1)=i(v1)+1:RETURN
800 IF h1=2 THEN PAPER 0:PLOT (x-1)*16,(26-y)*16,0:DRAWR 62,0 ELSE PAPER 3:PEN 1
810 FOR r=y TO y+4:LOCATE x,y:IF h1<>1 THEN PRINT SPACE$(4);ELSE PRINT STRING$(4,CHR$(250));
820 NEXT:IF h1=2 THEN RETURN ELSE IF h1=1 THEN 840 ELSE IF (w-1)‡ 13=0 OR (w-1)‡ 13=3 THEN PEN 1 ELSE PEN 2
830 z$=a$(((w-1) MOD 13)+1)+CHR$((w-1)‡ 13+226):LOCATE x,y:PRINT MID$(z$,INSTR(z$," ")+1);:LOCATE x+1,y+4:PRINT z$;
840 PLOT (x-1)*16,(26-y)*16,1:DRAWR 62,0:DRAWR 0,-80:DRAWR -62,0:DRAWR 0,80:RETURN
850 e1=3:z=0:IF e=1 THEN 890 ELSE e=1:f=52:GOSUB 320:WINDOW #1,16,25,21,24
860 DIM g(52),h(56),i(4),j(4)
870 k=1:LOCATE 18,2:PRINT"Deal 1";:FOR x=1 TO 56:h(x)=0:NEXT:w=1:FOR x=1 TO 4:FOR y=2 TO 14:p=(x-1)*14+y:g(f(w))=p:h(p)=f(w):w=w+1:GOSUB 1090:NEXT:NEXT
880 p=1:FOR x=1 TO 40 STEP 13:h(p)=h(g(x)):h(g(x))=0:n=g(x):g(x)=p:GOSUB 1070:GOSUB 1090:p=p+14:NEXT:FOR x=1 TO 4:i(x)=1:NEXT:u=0:GOSUB 1150
890 IF z>0 THEN RETURN ELSE IF q=4 THEN q=0:IF k<3 THEN GOSUB 940:GOTO 890 ELSE z=3:RETURN
900 CLS #1:LOCATE #1,3,1:PRINT #1,"Next";:SOUND 2,100,3:GOSUB 370
910 IF u=0 OR v=0 THEN IF u$=CHR$(127) OR v$=CHR$(127) THEN SOUND 2,600:GOTO 890 ELSE IF u$=" " OR v$=" " THEN q=4:GOTO 890 ELSE z=1:RETURN
920 m=(v-1)*13+u:p=g(m-1):IF (p MOD 14)=0 THEN SOUND 2,600:GOTO 890 ELSE IF h(p+1)<>0 THEN SOUND 2,600:GOTO 890
930 n=g(m):p=p+1:h(p)=h(n):h(n)=0:g(m)=p:GOSUB 1070:GOSUB 1090:GOSUB 1150:GOTO 890
940 SOUND 2,100,10:SOUND 2,0,10:SOUND 2,100,6:SOUND 2,0,4:SOUND 2,250,16
950 CLS #1:PAPER 0:PEN 1:k=k+1:LOCATE 22,2:PRINT k;:w=0:FOR x=1 TO 4:j(x)=i(x)+1:FOR y=j(x) TO 14:n=(x-1)*14+y:IF h(n)<>0 THEN w=w+1:f(w)=h(n):h(n)=0:GOSUB 1070
960 NEXT:NEXT:WHILE w>0:x=15
970 IF j(1)>j(2) OR j(1)>j(3) OR j(1)>j(4) THEN x=x-8
980 IF j(2)>j(3) OR j(2)>j(4) OR j(2)>j(1) THEN x=x-4
990 IF j(3)>j(4) OR j(3)>j(1) OR j(3)>j(2) THEN x=x-2
1000 IF j(4)>j(1) OR j(4)>j(2) OR j(4)>j(3) THEN x=x-1
1010 IF x>7 THEN y=1:GOSUB 1060:x=x-8
1020 IF x>3 THEN y=2:GOSUB 1060:x=x-4
1030 IF x>1 THEN y=3:GOSUB 1060:x=x-2
1040 IF x>0 THEN y=4:GOSUB 1060
1050 WEND:RETURN
1060 j(y)=j(y)+1:p=(y-1)*14+j(y):h(p)=f(w):g(f(w))=p:w=w-1:GOSUB 1090:RETURN
1070 PAPER 0:r=((n-1)‡ 14+1)*4:s=((n-1) MOD 14)*2+7
1080 FOR t=r TO r+2:LOCATE s,t:PRINT"  ";:NEXT:RETURN
1090 PAPER 3:q=h(p)-1:IF q‡ 13=0 OR q‡ 13=3 THEN PEN 1 ELSE PEN 2
1100 r=((p-1)‡ 14+1)*4:s=((p-1) MOD 14)*2+7
1110 FOR t=r TO r+2:LOCATE s,t:PRINT"  ";:NEXT
1120 LOCATE s,r:PRINT MID$(a$((q MOD 13)+1),INSTR(a$((q MOD 13)+1)," ")+1);
1130 LOCATE s+1,r+2:PRINT CHR$(q‡ 13+226);
1140 PLOT s*16-16,415-r*16,1:DRAWR 30,0:DRAWR 0,-46:DRAWR -30,0:DRAWR 0,46:RETURN
1150 IF u=0 THEN 1180 ELSE x=0:IF u+x>13 THEN RETURN
1160 IF p=(v-1)*14+u+x AND i(v)=u-1 THEN i(v)=i(v)+1:x=x+1:IF u+x<14 THEN 1160
1170 IF i(1)+i(2)+i(3)+i(4)=52 THEN z=2
1180 q=0:FOR x=13 TO 52 STEP 13:y=0
1190 IF ((g(x)+y) MOD 14)=0 THEN 1200 ELSE y=y+1:IF h(g(x)+y)=0 THEN q=q+1:GOTO 1190
1200 NEXT:RETURN
1210 IF e=1 THEN 1260 ELSE e=1:f=52:GOSUB 320:WINDOW #1,16,26,20,24
1220 DIM g(52),h(52):GOSUB 1360:LOCATE 35,17:PRINT"CARDS";:LOCATE 35,18:PRINT"LEFT:";:f1=52:GOSUB 1510
1230 h(1)=f(52):f1=51:h1=1:g(h(h1))=1:GOSUB 1500:GOSUB 1510:p=1:GOSUB 1460
1240 IF f1=0 THEN 1330 ELSE GOSUB 1500:h1=h1+1:h(h1)=f(f1):f1=f1-1:IF f1>0 THEN GOSUB 1510 ELSE PEN 1:LOCATE 35,16:PRINT"NO";:LOCATE 36,19:PRINT"  ";:LOCATE 39,18:PRINT " ";
1250 g(h(h1))=h1:p=h1:GOSUB 1460
1260 CLS #1:e1=1:SOUND 2,100,3:GOSUB 370
1270 IF u=0 OR v=0 THEN IF u$=CHR$(127) OR v$=CHR$(127) THEN SOUND 2,600:GOTO 1260 ELSE IF u$=" " OR v$=" " THEN CLS #1:GOTO 1240 ELSE z=1:RETURN
1280 u1=u:v1=v:w1=(v-1)*13+u:IF g(w1)=0 THEN SOUND 2,600:GOTO 1260
1290 LOCATE #1,4,3:PRINT #1,"to";:e1=4:GOSUB 370
1300 IF u=0 OR v=0 THEN IF u$=CHR$(127) OR v$=CHR$(127) THEN SOUND 2,600:GOTO 1260 ELSE IF u$=" " OR v$=" " THEN CLS #1:GOTO 1240 ELSE z=1:RETURN
1310 w2=(v-1)*13+u:IF g(w2)=0 THEN SOUND 2,600:GOTO 1260
1320 IF (g(w2)<>g(w1)-1 AND g(w2)<>g(w1)-3) OR (u<>u1 AND v<>v1) THEN SOUND 2,600:GOTO 1260 ELSE GOSUB 1430:GOTO 1260
1330 CLS #1:LOCATE #1,1,1:PRINT #1,"You got";h1;:LOCATE #1,3,2:PRINT #1,"I got";w;:LOCATE #1,2,4
1340 IF h1<w THEN PRINT #1,"YOU WIN!";:FOR x=150 TO 25 STEP -1:SOUND 2,x,2:NEXT: ELSE IF w<h1 THEN PRINT #1," I WIN!";:FOR x=50 TO 150:SOUND 2,x,2:NEXT ELSE PRINT #1,"A DRAW!";:FOR x=150 TO 75 STEP -1:SOUND 2,x,2:NEXT:FOR x=76 TO 150:SOUND 2,x,2:NEXT
1350 PAPER 0:PEN 1:LOCATE 27,24:PRINT"[press space]";:WHILE INKEY$<>"":WEND:WHILE INKEY$<>" ":WEND:CLS #1:LOCATE 27,24:PRINT SPACE$(13);:z=4:RETURN
1360 PEN 1:LOCATE 14,24:PRINT"Working it out";:h(1)=f(52):f1=51:h1=1:WHILE f1>0:h1=h1+1:h(h1)=f(f1):f1=f1-1:x=h1
1370 IF x>3 THEN y=x-3:GOSUB 1410:IF w=1 THEN 1370
1380 IF x>1 THEN y=x-1:GOSUB 1410:IF w=1 THEN 1370
1390 IF x<h1 THEN x=x+1:GOTO 1370
1400 WEND:w=h1:CLS #2:RETURN
1410 IF (h(x)-1)‡ 13<>(h(y)-1)‡ 13 AND ((h(x)-1) MOD 13)<>((h(y)-1) MOD 13) THEN w=0:RETURN
1420 h(y)=h(x):WHILE x<h1:h(x)=h(x+1):x=x+1:WEND:h1=h1-1:x=y:w=1:RETURN
1430 n=g(w1):p=g(w2):h(p)=h(n):g(w2)=0:g(w1)=p:GOSUB 1440:GOSUB 1460:WHILE n<h1:h(n)=h(n+1):g(h(n))=n:n=n+1:GOSUB 1440:p=n-1:GOSUB 1460:WEND:h1=h1-1:RETURN
1440 PAPER 0:r=((n-1) MOD 12)*3+3:s=((n-1)‡ 12)*4+2:IF s=2 THEN PLOT (r-1)*16,(26-s)*16,0:DRAWR 46,0
1450 FOR t=s TO s+3:LOCATE r,t:PRINT"   ":NEXT:RETURN
1460 PAPER 3:r=((p-1) MOD 12)*3+3:s=((p-1)‡ 12)*4+2:FOR t=s TO s+3:LOCATE r,t:PRINT"   ":NEXT:t=h(p)-1:IF t‡ 13=0 OR t‡ 13=3 THEN PEN 1 ELSE PEN 2
1470 LOCATE r,s:PRINT MID$(a$((t MOD 13)+1),INSTR(a$((t MOD 13)+1)," ")+1);
1480 LOCATE r+2,s+3:PRINT CHR$(t‡ 13+226);
1490 PLOT (r-1)*16,(26-s)*16,1:DRAWR 46,0:DRAWR 0,-64:DRAWR -46,0:DRAWR 0,64:RETURN
1500 PAPER 0:FOR y=21 TO 24:LOCATE 36,y:PRINT "   ";:NEXT:PLOT 560,80,0:DRAWR 46,0:RETURN
1510 PAPER 3:PEN 1:FOR y=21 TO 24:LOCATE 36,y:PRINT STRING$(3,CHR$(250));:NEXT:PLOT 560,80,1:DRAWR 46,0:DRAWR 0,-64:DRAWR -46,0:DRAWR 0,64:PAPER 0:LOCATE 36,19:PRINT f1:RETURN
1520 IF e=1 THEN 1570 ELSE e=1:f=52:GOSUB 320:DIM g(5),h(25),i(5),j(5):WINDOW #1,25,35,20,24
1530 w=1:FOR y=3 TO 19 STEP 4:FOR x=2 TO 14 STEP 3:GOSUB 1730:LOCATE x+1,y+1:PRINT CHR$(64+w);:w=w+1:NEXT:NEXT
1540 WINDOW #3,21,38,2,24:PAPER #3,0:CLS #3:PAPER #3,3:PEN #3,1:RESTORE 1650:FOR w=1 TO 11:READ z$:LOCATE #3,1,w:PRINT #3,z$:NEXT
1550 PAPER #3,0:FOR w=14 TO 15:READ z$:LOCATE #3,1,w:PRINT #3,z$:NEXT
1560 f1=1:GOSUB 1680
1570 CLS #1:LOCATE #1,1,1:PRINT #1,"Move to:":LOCATE #1,1,3:PRINT #1,"(Z to end)"
1580 SOUND 2,100,3:WHILE INKEY$<>"":WEND
1590 z$=UPPER$(INKEY$):IF z$="" THEN 1590 ELSE h1=INSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZ",z$):IF h1=0 THEN SOUND 2,600:GOTO 1590 ELSE IF h1=26 THEN z=1:RETURN
1600 LOCATE #1,10,1:PRINT #1,z$;:IF h(h1)<>0 THEN SOUND 2,600:GOTO 1590
1610 GOSUB 1670:h(h1)=f(f1):h2=h2+1:f1=f1+1:GOSUB 1710:IF f1<26 THEN GOSUB 1680:GOTO 1580
1620 PAPER 0:PEN 1:s=0:FOR m=0 TO 4:FOR n=1 TO 5:g(n)=h(m*5+n):NEXT:r=0:GOSUB 1740:LOCATE 17,m*4+4:PRINT r:SOUND 2,250,2:s=s+r:NEXT
1630 FOR m=1 TO 5:FOR n=0 TO 4:g(n+1)=h(n*5+m):NEXT:r=0:GOSUB 1740:LOCATE (m-1)*3+2,24:PRINT r:SOUND 2,400,2:s=s+r:NEXT
1640 PAPER #3,0:PEN #3,1:FOR y=12 TO 17:LOCATE #3,5,y:PRINT #3,SPACE$(10):NEXT:CLS #1:LOCATE #3,3,16:PRINT #3,"You Score";s:SOUND 2,200,135,15,1,1:z=4:RETURN
1650 DATA "     SCORING      ","                  ","STRAIGHT FLUSH  30","4 OF A KIND     16","STRAIGHT        12","FULL HOUSE      10"
1660 DATA "3 OF A KIND      6","FLUSH            5","2 PAIRS          3","1 PAIR           1",,"    next","    card"
1670 PAPER #3,3:PEN #3,1:FOR y=13 TO 17:LOCATE #3,11,y:PRINT #3,STRING$(4,CHR$(250));:NEXT:GOSUB 1700:RETURN
1680 PAPER #3,3:FOR y=13 TO 17:LOCATE #3,11,y:PRINT #3,SPACE$(4):NEXT:IF (f(f1)-1)‡ 13 = 0 OR (f(f1)-1)‡ 13 = 3 THEN PEN #3,1 ELSE PEN #3,2
1690 z$=a$(((f(f1)-1) MOD 13)+1)+CHR$((f(f1)-1)‡ 13+226):LOCATE #3,11,13:PRINT #3,MID$(z$,INSTR(z$," ")+1);:LOCATE #3,12,17:PRINT #3,z$:GOSUB 1700:RETURN
1700 PLOT 480,192,1:DRAWR 62,0:DRAWR 0,-80:DRAWR -62,0:DRAWR 0,80:RETURN
1710 x=((h1-1) MOD 5)*3+2:y=((h1-1)‡ 5)*4+3:PAPER 3:IF (h(h1)-1)‡ 13=0 OR (h(h1)-1)‡ 13=3 THEN PEN 1 ELSE PEN 2
1720 FOR w=0 TO 3:LOCATE x,y+w:PRINT SPACE$(3):NEXT:LOCATE x,y:PRINT MID$(a$(((h(h1)-1) MOD 13)+1),INSTR(a$(((h(h1)-1) MOD 13)+1)," ")+1);:LOCATE x+2,y+3:PRINT CHR$((h(h1)-1)‡ 13+226);:GOSUB 1730:RETURN
1730 PLOT (x-1)*16,(26-y)*16,1:DRAWR 46,0:DRAWR 0,-64:DRAWR -46,1:DRAWR 0,64:RETURN
1740 x=1:w=0:WHILE x<5:IF g(x)>g(x+1) THEN y=g(x):g(x)=g(x+1):g(x+1)=y:w=1
1750 x=x+1:WEND:IF w=1 THEN 1740 ELSE FOR x=1 TO 5:i(x)=(g(x)-1)‡ 13+1:j(x)=((g(x)-1) MOD 13)+1:NEXT
1760 x=1:w=0:WHILE x<5:IF j(x)>j(x+1) THEN y=j(x):j(x)=j(x+1):j(x+1)=y:w=1
1770 x=x+1:WEND:IF w=1 THEN 1760
1780 v=0:FOR x=1 TO 4:IF i(x)<>i(x+1) THEN 1790 ELSE NEXT:r=r+5:v=1
1790 FOR x=1 TO 4:IF j(x+1)<>j(x)+1 THEN IF v=1 THEN RETURN ELSE 1820
1800 NEXT:IF v=1 THEN r=r+25 ELSE r=r+12
1810 RETURN
1820 u=1:FOR x=1 TO 3:IF j(x)=j(x+1) THEN u=u+1:NEXT:r=r+16:RETURN
1830 v=1:FOR x=2 TO 4:IF j(x)=j(x+1) THEN v=v+1:NEXT:r=r+16:RETURN
1840 IF u=3 THEN IF j(4)=j(5) THEN r=r+10:RETURN ELSE r=r+6:RETURN
1850 IF u=2 THEN r=r+1:IF j(3)=j(4) OR j(4)=j(5) THEN r=r+2:IF j(3)=j(5) THEN r=r+7:RETURN ELSE RETURN ELSE RETURN
1860 IF v=3 THEN r=r+6:RETURN
1870 IF v=2 THEN IF j(4)=j(5) THEN r=r+3:RETURN ELSE r=r+1:RETURN
1880 IF j(3)=j(4) OR j(4)=j(5) THEN r=r+1:IF j(3)=j(5) THEN r=r+5
1890 RETURN