10DIM ca(6, 8), c$(2), s(2)
15DATA     "ABS","2BS","3BS","4BS","5BS","6BS","7BS","8BS","9BS","TBS","QBS","KBS"
20DATA     "ARD","2RD","3RD","4RD","5RD","6RD","7RD","8RD","9RD","TRD","QRD","KRD"
25DATA     "ARH","2RH","3RH","4RH","5RH","6RH","7RH","8RH","9RH","TRH","QRH","KRH"
30DATA     "ABC","2BC","3BC","4BC","5BC","6BC","7BC","8BC","9BC","TBC","QBC","KBC"
50? "PRESS ANY KEY"
55GET a$
60 a=-ASC(a$)
65 a=RND(a)
100FOR x=1 TO 6
105FOR y=1 TO 8
110 a=INT(RND(1)*48)+1
115 x1=1: y1=1
120IF a=ca(x1, y1) THEN 110
125 y1=y1+1
130? "*"; 
135IF y1<9 THEN 120
140 y1=1: x1=x1+1
145? "+"; 
150IF x1<x THEN 120
155 ca(x, y)=a
160NEXT y
165NEXT x
170 pl=1
175 c1=24
195GOSUB 20000
197VTAB 1
200INPUT "SELECT FIRST CARD "; x, y
201VTAB 1
202IF x<1 OR x>6 THEN ? "OUT OF RANGE":GOTO 197
203IF y<1 OR y>8 THEN ? "OUT OF RANGE":GOTO 197
205IF ca(x, y)=0 THEN ? "THAT CARD HAS BEEN MATCHED":GOTO 197
210FOR z=1 TO ca(x, y)
215READ c$(1)
220NEXT z
225RESTORE
227 a=1:GOSUB 30000
229VTAB 1
230INPUT "SELECT SECOND CARD "; x1, y1
231VTAB 1
232IF x1<1 OR x1>6 THEN ? "OUT OF RANGE":GOTO 229
233IF y1<1 OR y1>8 THEN ? "OUT OF RANGE":GOTO 229
235IF ca(x, y)=0 THEN ? "THAT CARD HAS BEEN MATCHED":GOTO 229
237IF x=x1 AND y=y1 THEN 229
240FOR z=1 TO ca(x1, y1)
245READ c$(2)
250NEXT z
255RESTORE
260 a=2:GOSUB 30000
300IF LEFT$(c$(1), 2)=LEFT$(c$(2), 2) THEN GOSUB 10000
301IF pl=1 THEN  pl=2
302IF pl=2 THEN  pl=1
304FOR i=1 TO 2500:NEXT i
305IF c1>0 THEN 195
307HOME
310IF s(1)>s(2) THEN ? "PLAYER ONE WON"
315IF s(2)>s(1) THEN ? "PLAYER TWO WON"
320? "PLAYER ONE'S SCORE "; s(1); " TO"
325? "PLAYER TWO'S SCORE "; s(2); "."
9995STOP
10000 s(pl)=s(pl)+1
10005 c1=c1-1
10010 ca(x1, y1)=0
10015 ca(x, y)=0
10020HTAB 24:VTAB 6:INVERSE:? "MATCH":NORMAL
10500RETURN
20000HOME:FOR x=1 TO 6
20005?
20010FOR z=1 TO 3
20015FOR y=1 TO 8
20020IF ca(x, y)=0 THEN INVERSE:? "  "; :NORMAL
20025IF ca(x, y)<>0 THEN ? "**"; 
20027IF y<8 THEN ? " "; 
20030NEXT
20035IF z=3 AND x=6 THEN 20040
20037?
20040NEXT z
20045NEXT x
20050HTAB 24:VTAB 8:? "PLAYER"
20055HTAB 24:VTAB 15:? "PLAYER"
20060HTAB 25:VTAB 9:? "ONE"
20065HTAB 25:VTAB 16:? "TWO"
20070HTAB 25:VTAB 11:? s(1)
20075HTAB 25:VTAB 18:? s(2)
20100RETURN
30000IF a=2 THEN 30030
30005 y2=3*y-2
30010 x2=4*x-2
30025GOTO 30050
30030 y2=y1*3-2
30035 x2=x1*4-2
30050HTAB y2:VTAB x2:INVERSE:? LEFT$(c$(a), 1); " "; :NORMAL
30055HTAB y2:VTAB x2+1:INVERSE:? "  "; :NORMAL
30060HTAB y2:VTAB x2+2:INVERSE:? " "; RIGHT$(c$(a), 1); :NORMAL
