Some Prior art Software Listings

1840 ' 谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪 /b>. 1850 ' ³ MAIN ..... 9356 PRINT "SKY TV SNOOKER service 1 9 9 1 "; ...... 10240 PRINT "(G)eneral messages (S)core manual ...... case 3: {fonction();break;} /*process restart boitier etc */.
420KB taille 56 téléchargements 898 vues
OVERTURNING THE BARSTOW SPORT EVENT PATENTS Sample Software Annex, with some parameter files.

Stephen Parry; 1 August 2011.

SUMMARY INDEX SNOOKER TV CAPTIONS ....................................................................................................................................................... 2 TENNIS VOICE MACHINE .....................................................................................................................................................24 TENNIS REUTER RESULTS ...................................................................................................................................................41 GOLF ASSOCIATED PRESS RESULTS.....................................................................................................................................51 TENNIS DATA CAPTURE BOX ...............................................................................................................................................62

Scoring Art – Software Listings Stephen Parry – July 2011

Page 1 of 79

SNOOKER TV CAPTIONS 1 'SAVE"CAPDSKY.BAS",A 'SCPP 07.12.90 SKY 2 '$INCLUDE: 'SPACEBAS.INC' 3 DUMMY%=SETMEM(-30000) 4 DUMMY%=SETMEM(-30000) 5 DUMMY%=SETMEM(-30000) 6 IF INIT.SPQL%("SNK90",1) 0 THEN PRINT "Error initialising SuperNova": END 8 HRES%=INQ.HRES% : VRES%=INQ.VRES% : HRES100=HRES%/100 : VRES100=VRES%/100: VRES1000=VRES%/1000 15 'ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ¿ 20 '³ 89 ³ PILOT ³ 27/11/90 ³ SNOOKER ³ Copyright SPORTINFO 1990 ³ 25 '³ ³ ³ ³ SKY / ³ SUPERNOVA ³ 30 'ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Ù 40 'clear 41 KEY OFF: WIDTH 80 45 COLOR BLANCC,VERT 50 CLS 51 DEFSTR F: DEFINT I-P 52 ON ERROR GOTO 3000 53 OPTION BASE 1 54 'OPEN "COM1:1200,N,8,1,CS,DS" FOR RANDOM AS #1' swiss centre receive 55 'OPEN "COM2:300,E,7,1,CS,DS" AS #5 ' J C DECAUX 56 'ON TIMER(6) GOSUB 10300 60 NOIR = 0: BLEU = 1: VERT = 2: CYAN = 3: ROUGE = 4: MAGENTA = 5: BRUN = 6: BLANC = 7 61 GRIS = 8: BLEUC = 9: VERTC = 10: CYANC = 11: ROUGEC = 12: MAGENTAC = 13: JAUNE = 14: BLANCC = 15 62 COLOR ROUGE, CYAN 64 INF = 120 65 DIM CLSS$(INF),IMAGNO(INF),IFONT(INF),IFCHIER(INF),LINEX(INF),COLY(INF), CENTRE(INF),COLER(INF),EDGEX(INF),EDGEY(INF),SOUSLINE$(INF),OFFSET(I NF),PROF(INF),SLCOL(INF),EFFECT(INF),XSTRT(INF),XLGTH(INF),ITXT$(INF ) 68 TEXTES=90 69 DIM TEXTPS$(TEXTES), TEXTNOV$(TEXTES),POSCT(TEXTES),TEXTAB$(TEXTES),TEXTLT$(TEXTES) 70 DIM PRLIN$(6) 71 NAMES=500:DIM CODE$(NAMES)

Scoring Art – Software Listings Stephen Parry – July 2011

72 COUNES=180:DIM COUNSH$(COUNES),COUNLG$(COUNES) 73 LOCATE 10, 10: PRINT "TABLE (1=1 or 2=2 etc ) "; 75 K$ = INKEY$: IF K$ = "" THEN 75 ELSE PRINT K$; 76 IF K$ < "0" OR K$ > "9" THEN BEEP: GOTO 75 78 CTAUT = VAL(K$) 'court no 82 UNDERON$=CHR$(&H1B)+"-1" 83 UNDEROFF$=CHR$(&H1B)+"-0" 84 'UNDERON$=CHR$(&H1B)+"&d0D" 'LASER 85 'UNDEROFF$=CHR$(&H1B)+"&d@" 'LASER 89 SCRDUM=4 'DUMMY SCREEN RASTERS 90 ZKY=1:ZNOST=2:ZCOLP=3:ZNORD=4:ZNOSC=5:ZISCO=6:ZSCR1=7:ZSCR2=8:ZBRK=9 :ZBKST=10:ZBKSHTNO=11:ZBKVAL=12:ZTABLMIN=13:ZTABLSEC=14:ZSKORSHT=15: ZTOTLSHT=16:ZSAFTSHT=17:ZSAFTSKO=18:ZSNKRSHT=19:ZSNKRSKO=20 91 YBKSHTNO=206:YBKVAL=207:YTABLMIN=208:YTABLSEC=209:YSKORSHT=210:YTOTL SHT=211:YSAFTSHT=212:YSAFTSKO=213:YSNKRSHT=214:YSNKRSKO=215 92 ISC = 10: INOM = 11: IDEC = 12: ISTATUS = 13: IIMP = 14: IDSP = 15: IMEN = 16: IPMAT = 17 93 INOML = 22: INOMR = 36: SCST = 50 94 NCTS% = 3: NOCRTS = NCTS: LINE1 = 1: LINE2 = 4 95 NOBUF = 4: IPBUF = 1: LENSCOR=200: LENPAK = LENSCOR+1+YSNKRSKOYBKSHTNO: NOPAG = 4: INIPAG = 1: IWKPAGE = 1: IDSPPAG = 0'no points memorises, premier= 96 SCBUF = LENPAK: ISCBUF = 1: CURSCBUF=1 'NUMBER OF SCORE BUFFERS 99 DIM ISAV(SCBUF,ZSNKRSKO):ERRMESSL=40: PRNLEN=50: CURLEN=0: OFFZET=20: OFFZET1=0: OFFZET2=10: OFFZET3=12 100 ZEROES$="" :FOR IZCNT=1 TO LENPAK: ZEROES$=ZEROES$+CHR$(0): NEXT IZCNT 120 NOFIELDS=6 130 DIM ISCOR(NOFIELDS,LENPAK),DSP(NOCRTS),IBALL(2,LENPAK) 140 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 150 ' ³ OPEN FILES ³ 160 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 170 ' 200 GOSUB 18000: GOSUB 18100: GOSUB 18300:GOSUB 18200 ' DEMARRE FICHIERS 205 GOSUB 18400: GOSUB 18500: GOSUB 18600 210 GOSUB 30500 'CLEAR SCREEN 1230 OPEN "R", 4, "DATESNO.fic", 29 1240 FIELD #4, 8 AS DTETOD$, 21 AS MATCHES$ 1250 OPEN "R", 8, "CURMSNO.fic", 127 1260 FIELD #8, 127 AS ENRMAT$ 1270 OPEN "R", 3, "MATCSNO.FIC", 127 1280 FIELD #3, 127 AS ENR$ 1300 DIM KOLER$(10)

Page 2 of 79

1310 DATA "RED","YELLOW","GREEN","BROWN","BLUE","PINK","BLACK","EXTRA BLACK","FINISH","ANY" 1315 FOR I=1 TO 10 1317 READ KOLER$(I) 1320 NEXT I 1330 FCOLPOSS="RYGBLPKXFZ" ' RED,YELLOW,BROWN,GREEN,BLUE,PINK,BLACK,EXTRA BLACK,FINISH,ANY 1340 DIM MTH$(12) 1350 DATA "JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","Oct","NOV","D EC" 1360 FOR I=1 TO 12 1370 READ MTH$(I) 1380 NEXT I 1400 GET 4, 1: GOTO 1480 'XXXXX 1402 LOCATE 12,10 : PRINT "TO-DAY'S SCHEDULE IS FOR ";VAL(MID$(DTETOD$,7,2));" ";MTH$(VAL(MID$(DTETOD$,5,2)));" OK Y/N ? "; 1405 K$ = INKEY$: IF K$ = "" THEN 1405 1406 K$=CHR$(ASC(K$) AND &H5F) 1407 IF K$ "Y" AND K$ "N" THEN BEEP: GOTO 1405 1409 PRINT K$; 1410 IF K$="Y" THEN 1480 1430 MID$(MATCHES$,7*CTAUT-6,2)="01" 1440 PUT 4, 1 1442 NOENR=1+8*(CTAUT-1) 1443 GET 3, NOENR 'get first matches 1445 LSET ENRMAT$ = ENR$ 1447 PUT 8, CTAUT 'and stock in curmsno.fic 1452 CLOSE #8 'FORCE ECRITURE 1455 OPEN "R", 8, "CURMSNO.fic", 127 1456 FIELD #8, 127 AS ENRMAT$ 1458 '-------- ON INDIQUE LA DATE 1460 LSET DTETOD$ = MID$(DATE$,7,4)+MID$(DATE$,1,2)+MID$(DATE$,4,2) 1465 FMAT=MID$(ENRMAT$,13,5) 1470 PUT 4, 1 1480 CLOSE #4 'FORCE ECRITURE 1490 OPEN "R", 4, "DATESNO.fic", 29 1495 FIELD #4, 8 AS DTETOD$, 21 AS MATCHES$ 1500 GET 4, 1 1503 MATCHESS$=MATCHES$: CLOSE #4 1510 CLS 1515 GOSUB 9350 'START STATS DISPLAY 1517 GOSUB 2192 'screen heading 1540 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 1550 ' ³ OPEN MATCH FILES, and set RAM ³ 1560 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 1570 ' 1600 FILNO$=MID$(MATCHESS$,CTAUT*7-2,3) 1610 MATNO$=MID$(MATCHESS$,CTAUT*7-4,5) 1620 OPEN "R", 4, "RESLSNO."+FILNO$, 58

Scoring Art – Software Listings Stephen Parry – July 2011

1640 FIELD #4, 58 AS SCOTOT$ 1645 GET 4, 1 1650 IF LEFT$(SCOTOT$,5)MATNO$ THEN GOSUB 2000 'CREATE NEW MATCH FILE 1653 OPEN "R", 2, "SCORSNO."+FILNO$,LENPAK+5 1655 FIELD #2, LENPAK+5 AS SCORDET$ 1700 GOSUB 2280 'psi key 1710 MATNO=(CTAUT-1)*8+VAL(MID$(MATCHESS$,(CTAUT-1)*7+1,2)) 1720 GET #8,CTAUT 1730 GOSUB 14000 'LOAD SCORE TOTALS 1740 GOSUB 9300 'PUT UP NAMES 1750 SCORREC=NOFIELDS*VAL(MID$(SCOTOT$,12,2))-NOFIELDS 1760 GOSUB 4950 'SET SCORE DETAILS AS ZERO IF NEW MATCH 1770 ICYCLE = IPBUF 1790 GOSUB 1985 'SET RAM TO SCORES FILES 1795 GOSUB 9600 'DISPLAY SCORES RAM 1820 CALL SET.DISP.SCREEN(0) 1830 GOSUB 9575 'POINTS LEFT 1840 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 1850 ' ³ MAIN PROGRAM LOOP ³ 1860 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 1870 ' 1880 K$ = INKEY$: IF K$ "" THEN GOSUB 2080:PREVKY$=UPK$ 1881 ' 1882 ' 1885 GOTO 1950 'SEE IF NEW SCORE DISPLAY? 1887 ' 1890 GOTO 1880 1942 PRIN1 = 0: GOTO 1880 1950 IF DSP1 = 0 THEN 1880 1951 IDSPCRT = 0 1952 '--------------------- VA A AFFICHER ------------------------1955 FOR IXI = 1 TO NOCRTS 'CHERCHE LEQUEL 1960 IF DSP(IXI) = 1 THEN IDSPCRT = IXI 1965 NEXT IXI 1968 IF IDSPCRT = 0 THEN DSP1 = 0: GOTO 1880 1974 UPDSCR = 1 1975 GOSUB 9480 1978 GOTO 1880 1985 FOR IB = 1 TO NOFIELDS 1987 GET #2,IB+SCORREC 1990 FOR IC = 1 TO LENPAK 1995 ISCOR(IB, IC) = ASC(MID$(SCORDET$, IC+5, 1)) 'extract buffer depart 1997 NEXT IC 1998 NEXT IB 1999 RETURN 2000 ' START A NEW FILE FOR THE MATCH 2003 LSET SCOTOT$=MATNO$+"00000001000000001R151000 1"+SPACE$(20) 'STARTS WITH A RED, 15 LEFT, STRIKE IS PLAYER 1, no break

Page 3 of 79

2004 BEEP: ERO$="NEW MATCH FRAME STARTED ": GOSUB 9080: RETURN 2005 PUT # 4,1 2007 MATSTAT=0:SCORREC=0 2009 RETURN 2010 ' START A NEW FILE FOR THE FRAME 2013 FOR IFEEL=1 TO NOFIELDS 2014 LSET SCORDET$=MATNO$+ZEROES$ 2015 PUT # 2,IFEEL+SCORREC 2016 NEXT IFEEL 2019 RETURN 2020 ' RESTART FRAME FOR THE MATCH 2023 MID$(SCOTOT$,14,24)="000000001R151000 " 'STARTS WITH A RED, 15 LEFT, STRIKE IS UNCHANGED, NO BREAK/START TIME FRAME 2024 BEEP: ERO$="FRAME RE-STARTED ": GOSUB 9080: RETURN 2040 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 2050 ' ³ ANALYSE KEY PRESSED ³ 2060 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 2070 ' 2080 ' 2081 COLOR BLANCC,CYAN 2082 UPK$=CHR$(ASC(K$) AND &H5F) 2083 ERO$=SPACE$(ERRMESSL+1): GOSUB 9080 'CLEAR ERROR 2084 IF X3%>0 THEN GOTO 2103 'IN MIDDLE OF SPECIAL FUNCTION 2085 IF LEN(K$) > 1 THEN KYY = ASC(RIGHT$(K$, 1)) - 58 ELSE GOTO 2102 'TEST FUNCTION KEYS 2088 'IF KYY > 0 AND KYY < 9 THEN ON KYY GOTO 2130, 2300, 2102, 2102, 2102, 2102, 2102, 2497 2090 ' 84 85 86 87 88 89 90 91 2091 IF KYY>15 THEN KYY=KYY-15 ' ADJUST FOR F10=68, F11=84 2092 IF KYY7 THEN LASTKY=KYY+1000: SAVKY=LASTKY 'WITH SHIFT, IGNORE TOGGLE POINTS LEFT 2093 IF KYY > 0 AND KYY < 21 THEN ON KYY GOTO 2102,36000,40000,40000,39000, 2188,33000,30000, 32000, 32100, 2130, 2102, 40000,40000,41000,41000,41200,41200,32000,36000 2094 IF KYY > 20 AND KYY < 31 THEN ON KYY-20 GOTO 2102,36000,42300,42600,42100,2102,42200,2102,42310,2102 2095 ' 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 2096 RETURN 2102 IF X2% = 0 THEN 2212 'PSI KEY 2103 IF K$=CHR$(27) AND X3%>1 THEN GOTO 2150 'CANCEL ACTIVITY 2104 ON X3% + 1 GOTO 2105, 2345, 2660, 2600, 2800, 2850 2105 IF K$ = CHR$(0) + CHR$(85) THEN 2300 2106 IF LEN(K$)=1 THEN ON INSTR(CHR$(27) , K$) GOTO 7030: GOTO 2210 2107 GOTO 2210 2110 IF X1% = 1 THEN X1% = 0: GOSUB 2180 ELSE X1% = 1: IF X1% = 1 THEN GOSUB 2160 2120 RETURN

Scoring Art – Software Listings Stephen Parry – July 2011

2130 IF X2% = 1 THEN X2% = 0: GOSUB 2280 ELSE X2% = 1: IF X2% = 1 THEN GOSUB 2260 2140 RETURN 2150 IF X2%=0 THEN GOSUB 2130 'FORCE CONTROL 2152 DSP1=0:DSP(CTAUT)=0:GOTO 2497 2160 COLOR 2, 0: LOCATE 24, 1: PRINT "Date: " + DATE$ + " Heure: " + TIME$; 2170 FLASH$ = "": NFLASH$ = "": RETURN 2180 LOCATE 24, 1: PRINT SPACE$(34); 2185 RETURN 2188 IF BL$ ="B" THEN BL$ =" ": ELSE BL$ ="B" 2189 DSP1=1:DSP(CTAUT)=1:LOCATE 21,75:COLOR JAUNE,MAGENTA: PRINT BL$;:RETURN 2190 IF TM$ ="T" THEN TM$ =" ": ELSE TM$ ="T" 2191 DSP1=1:DSP(CTAUT)=1:LOCATE 21,74:COLOR JAUNE,MAGENTA: PRINT TM$;:RETURN 2192 LOCATE 1,1:COLOR BLANC,BLEU:PRINT "End=Shift+F1+Esc Name Change=Shift+F2 Cancel Op'n=Shift+?? "; : RETURN 2194 LOCATE 1, 1: COLOR BLANC, BLEU 2195 PRINT "End=F1+Esc Restart Video=F4 Type on Video=F7 Cancel Operation=F8 Other=F9"; : RETURN 2196 IF MT$ ="H" THEN MT$ =" ": ELSE MT$ ="H" 2197 DSP1=1:DSP(CTAUT)=1:LOCATE 21,76:COLOR JAUNE,MAGENTA: PRINT MT$;:RETURN 2198 IF BK$ ="N" THEN BK$ =" ": ELSE BK$ ="N" 2199 DSP1=1:DSP(CTAUT)=1:LOCATE 21,77:COLOR JAUNE,MAGENTA: PRINT BK$;:RETURN 2200 ' 2210 IF X2% = 1 THEN RETURN 2212 ' PROCESS KEY PRESSED 2213 KY=VAL(K$):UPK$=CHR$(ASC(K$) AND &H5F): IF UPK$="T" OR UPK$="I" THEN 2215 2214 IF (STARTTIM$="" OR STARTTIM$=" ") AND UPK$"E" THEN ERO$="Must Br(E)ak First":GOSUB 9080: RETURN 2215 DSP1=1:DSP(CTAUT)=1 'FORCE DISPLAY AFTER CALCULATION OF SCORE 2216 IF K$ >="0" AND K$NOFR\2 THEN BEEP: MATSTAT=1: ERO$="MATCH WON BY "+ERN$: GOSUB 9080 2493 COMPFR=COMPFR+1: CURFR=CURFR+1: SAVSCORS=NOSCORS: GOSUB 39950: MATTIM$=MID$(STR$(VAL(MATTIM$)+ELAPTIM),2) 'ELAPSED TIME/FRAME TIME 2494 BKST=0: BREAK=0: SCOR1=0: SCOR2=0: NOSCORS=1: FCOLLET="R": NOREDS=15: STRIKX=CURFR+(STARSTRK+1)\2:NOSTRIKE=4*(STRIKX(STRIKX\2)*2)+(-1)^STRIKX:STARTTIM$=" ":SKOR=0:CURLEN=0:PTDISP=0:GOSUB 32052 2495 GOSUB 14200: GOSUB 26020 : IDSPCRT=CTAUT:GOSUB 9534 'SET SCOTOT, THEN RELOAD BACK, + TO SCREEN 2497 GOSUB 2130: X3%=0: X4 =0: X5 =0: LOCATE 23,1: PRINT SPACE$(79); 2498 LOCATE 24,1: PRINT SPACE$(71);: LOCATE 25,1: PRINT SPACE$(60); 2499 RETURN 2500 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 2510 ' ³ UPDATE MATCH DETAILS ³ 2515 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 2520 ' 2600 ' 2602 IF K$ = CHR$(0) + CHR$(75) THEN GOTO 9750'GO LEFT 2603 IF K$ = CHR$(0) + CHR$(77) THEN GOTO 9780'GO RIGHT 2605 IF K$ = CHR$(13) THEN 2685 'NEXT FIELD 2610 PRINT K$; 2612 IF (POS(0) < SCST + 17) AND (X4 = 0) THEN GOSUB 9780 2615 RETURN 2620 X4 = ASC(K$)

Scoring Art – Software Listings Stephen Parry – July 2011

2627 IF X4 = 14 THEN GOSUB 2650 'ctl N 2628 IF X4 = 3 THEN X3% = 2: GOSUB 4400: GOSUB 2640 'ctl C 2629 IF X4 = 16 THEN X3% = 2: GOSUB 4600: GOSUB 2640 'ctl P 2630 RETURN 2632 K$ = CHR$(15): GOSUB 2215 'ctl home 2634 K$ = CHR$(48 + CTNO%): GOSUB 2215 'court no 2636 K$ = CHR$(18): GOSUB 2215 'ctl R 2638 RETURN 2640 OFFST = 1: LOCATE 24, 1 + OFFST 2642 PRINT LEFT$(ENRMAT$,76)+" "; 'display match 2643 LINEP = 23: GOSUB 2375 'request confirm 2644 RETURN 2645 IF K$ = "Y" OR K$ = "y" THEN 2646 ELSE 2497'fini or send order to save 2646 K$ = CHR$(15): GOSUB 2215 'ctl home 2647 K$ = CHR$(48 + NOCRT%): GOSUB 2215'court no 2648 K$ = CHR$(18): GOSUB 2215 'ctl R 2649 K$ = CHR$(15): GOSUB 2215: GOTO 2497 'ctl home+fini 2650 GOSUB 4950 ' get MATCHNO 2652 GOSUB 2640 'display proposed match 2654 RETURN 2660 IF X4 = 18 THEN 2645 2662 IF K$ = "Y" OR K$ = "y" THEN 2670 ELSE 2680 2670 GOSUB 4450 'UPDATE CURRENT MATCHNO FILE, AND MATCH FILE 2675 GOSUB 2497 2676 CLOSE #2 2677 GOTO 1510 'display noms et fini after update of fmat .... 2680 X3% = 3: X5 = 0 2681 COLOR BLANCC, ROUGE 2682 LOCATE 23, 17: PRINT "CORRECT the DATE, SEQUENCE, then hit Carriage Return "; 2683 COLOR JAUNE, ROUGE 2684 LOCATE 24, 1 + OFFST, 1: RETURN '+display cursor 2685 ON X5 + 1 GOTO 2700,2686, 2688, 2720 2686 LOCATE 23, 17: PRINT "CORRECT name code 1 "; 2687 X5 = 2: LOCATE 24, 21 + OFFST, 1: RETURN '+display cursor 2688 LOCATE 23, 17: PRINT "CORRECT name code 2 "; 2689 X5 = 3: LOCATE 24, 27 + OFFST, 1: RETURN '+display cursor 2700 LOCATE 23, 17: PRINT "CORRECT matchid etc "; 2705 X5 = 1: LOCATE 24, 13 + OFFST, 1: RETURN '+display cursor 2709 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 2710 ' ³ READ DETAILS off SCREEN ³ 2715 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 2718 ' 2720 FOR ISCR = 1 TO 72 2722 MID$(ENRMAT$, ISCR, 1) = CHR$(SCREEN(24, ISCR + OFFST)) 2724 NEXT ISCR 2730 CODE1$= MID$(ENRMAT$,21,6)

Page 5 of 79

2732 CODE2$= MID$(ENRMAT$,27,6) 2735 OPEN "R", 6, "\SNK\NAMESNO.TXT", 337 2736 FIELD #6, 6 AS SCODE$, 15 AS SSURN$, 4 AS SINIT$, 3 AS SCOUN$, 25 AS SFULL$, 23+176 AS REST$ 2740 SEKY$=CODE1$: GOSUB 2750: IF REEZUN=1 THEN ERO$="NAME code 1"+CODE1$+" not recognised": GOSUB 9080: GOTO 2796 2741 GET #6,SE:SE1=SE:COUN1$=SCOUN$:SINIT1$=SINIT$:SFULL1$=SFULL$ 'FRIG TO GET CORRECT ENTRY IN TXT FILE FOR FIRST NAME 2742 MID$(ENRMAT$,33,22)=SSURN$+SINIT$+SCOUN$:MID$(ENRMAT$,77,25)=SFULL$ 2745 SEKY$=CODE2$: GOSUB 2750: IF REEZUN=1 THEN ERO$="NAME code 2"+CODE2$+" not recognised": GOSUB 9080: GOTO 2796 2746 GET #6,SE:SE2=SE:COUN2$=SCOUN$:SINIT2$=SINIT$:SFULL2$=SFULL$ 2747 MID$(ENRMAT$,55,22)=SSURN$+SINIT$+SCOUN$:MID$(ENRMAT$,102,25)=SFULL$ 2748 CLOSE #6: IF X5=3 THEN GOTO 2796 ELSE RETURN 2750 REEZUN=0 ' SEARCH OF NAME 2752 FOR SE = 1 TO NMINF 2754 IF CODE$(SE)=SEKY$ THEN RETURN 2756 NEXT SE 2758 REEZUN=1: RETURN 2760 REEZUN=0 ' SEARCH OF COUNTRY 2762 FOR SE = 1 TO CNINF 2764 IF COUNSH$(SE)=SEKY$ THEN RETURN 2766 NEXT SE 2768 REEZUN=2: RETURN 2796 CLOSE #6: GOTO 2640 'REQUEST CONFIRMATION 2800 IF UPK$="Y" THEN 2490 2805 IWIN=3-IWIN: GOTO 27020 'TRY OTHER WINNER 2850 IF UPK$="Y" THEN ERO$=" GET NEXT MATCH ": GOSUB 9080: GOTO 2890 2855 IWIN=3-IWIN 2860 IF IWIN=1 THEN ERN$=NAME1$ ELSE ERN$=NAME2$ 2870 ERO$="MATCH WON BY "+ERN$: X3%=5: GOSUB 9080: RETURN 2890 OPEN "RESLSNO.TXT" FOR APPEND AS #5 2892 PRINT #5,SCOTOT$+ERN$+DATE$+TIME$ 2894 RETURN 2895 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 2896 ' ³ MAIN SCORING RULES/ANALYSIS ³ 2897 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 2898 ' 2900 'ZERO SCORING CAPTION 2901 IF COLPOSS=9 THEN BEEP: ERO$="STOP SCORING, FRAME FINISHED.": GOSUB 9080: RETURN 2902 IF MATSTAT=1 THEN BEEP: ERO$="STOP SCORING, MATCH FINISHED.": GOSUB 9080: RETURN 2903 GOSUB 24600 'SAVE CURRENT POSITION 2910 IF KY7 THEN BEEP: ERO$="INVALID SCORE entered ": GOSUB 9080: RETURN 2911 IF PREVKY$="B" THEN GOTO 2930 'PREVIOUS BALL A FREE BALL 2912 IF COLPOSS=10 THEN GOSUB 2980: GOTO 2990 'A COLOUR POTTED AFTER A RED

Scoring Art – Software Listings Stephen Parry – July 2011

2915 IF (KY=COLPOSS OR (COLPOSS=8 AND KY=7)) THEN GOSUB 2950 ELSE BEEP: ERO$="DIFFERENT COLOUR EXPECTED " : GOSUB 9080 : RETURN 2920 GOTO 2990 2925 IF COLPOSS=10 THEN COLPOSS=1 ' IF COLOUR MISS, OTHER PLAYER GOES FOR RED 2928 GOTO 2985 '? NO MORE REDS 2930 GOSUB 2940:IF KY>1 THEN NOSCORS=NOSCORS+1 'AFTER FREE BALL 2932 IF KY=1 THEN COLPOSS=10: NOSTRIKE=NOSTRIKE+1: GOTO 2990 'ALLOW A COLOUR 2934 GOTO 2990 'NOSCORS=NOSCORS+1: COLPOSS=10: GOTO 2990 'ALLOW SAME COLOUR???????????? 2940 IDH=(NOSTRIKE+1)\2 : SKOR=KY: IB=NOSTRIKE+IDH-1 2941 ISCOR(NOSTRIKE+IDH-1,NOSCORS)=KY: IDG=NOSCORS : IDI=NOSTRIKE2*IDH+2 2945 RETURN 2950 GOSUB 2940 2952 IF KY=1 THEN COLPOSS=10: NOSTRIKE=NOSTRIKE+1: NOREDS=NOREDS-1: RETURN 'RED SCORED 2955 XCOR1=SCOR1:XCOR2=SCOR2:IF (NOSTRIKE-1)\2=0 THEN XCOR1=SCOR1+KY ELSE XCOR2=SCOR2+KY 2960 IF KY>1 THEN COLPOSS=COLPOSS+1: NOSCORS=NOSCORS+1:IF (XCOR1XCOR2 AND COLPOSS=8) THEN COLPOSS=9 'NO LAST BLACK NEEDED FOR END OF FRAME 2970 IF COLPOSS=9 THEN BEEP: TRASTAT=1: ERO$="(C)onfirm FRAME FINISHED ? ": GOSUB 9080 2979 RETURN 2980 GOSUB 2940:COLPOSS=1:NOSTRIKE=NOSTRIKE-1:NOSCORS=NOSCORS+1 'NEXT IS A RED 2985 IF NOREDS=0 AND COLPOSS=1 THEN BEEP: COLPOSS=2: ERO$="NO MORE REDS ? ": GOSUB 9080 2987 RETURN 2990 BREAK=BREAK+KY: GOSUB 2996:GOSUB 26950:IF (NOSTRIKE-1)\2=0 THEN SCOR1=SCOR1+KY ELSE SCOR2=SCOR2+KY 2991 FCOLLET=MID$(FCOLPOSS,COLPOSS,1) ' RED,YELLOW,BROWN,GREEN,BLUE,PINK,BLACK SELECTED 2992 DSP1=1 'INDICATE FILE 2994 DSP(CTAUT)=1 ' AND SCORES UPDATE 2995 GOTO 9575 'CALCULATE NO REDS LEFT 2996 SKORSHT=SKORSHT+1: TOTLSHT=TOTLSHT+1 'STATISTICS 2997 IF CURSCBUF>1 THEN IF ISAV(CURSCBUF-2,ZKY)=8+ASC("A")-48 THEN SAFTSKO=SAFTSKO+1 2999 RETURN 3000 'TIMER ON 3010 ERO$ = "ERROR " + STR$(ERR) + " IN LINE " + STR$(ERL) 3012 IF X3% > 0 THEN GOSUB 2497 3015 GOSUB 9080 3017 'IF ERL=14464 THEN PRINT "I=";I;"LEN SCOR";LEN(SCORDET$);" RECNO= ";IDH*3+SCORREC;"CARA";ISAV(CURSCBUF,IYBKSHTNO+ZBKSHTNO);"INDEX=";I-YBKSHTNO+ZBKSHTNO;"TABLMIN=";TABLMIN; 3019 IF ERL = 4520 THEN CLOSE #4 3025 'STOP

Page 6 of 79

3030 RESUME 1880 4400 ' GET NEW MATCH 4401 ' 4402 ' 4420 MATNO=MATNO+1 4422 NOENR=MATNO+8*(CTAUT-1) 4443 GET 3, NOENR 'get NEXT match for THIS TABLE 4445 LSET ENRMAT$ = ENR$ 4447 GOSUB 2640: RETURN 4450 PUT 8, CTAUT 'and stock in MAT.fic 4452 CLOSE #8 'FORCE ECRITURE 4455 OPEN "R", 8, "CURMSNO.fic", 127 4456 FIELD #8, 127 AS ENRMAT$ 4470 GET 8, CTAUT 'and RETRIEVE FROM CURMSNO.FIC 4475 FMAT=MID$(ENRMAT$,13,5) 4480 CLOSE #4 'FORCE ECRITURE 4490 OPEN "R", 4, "DATESNO.fic", 29 4495 FIELD #4, 8 AS DTETOD$, 21 AS MATCHES$ 4500 GET 4, 1 4502 MID$(MATCHES$,7*CTAUT-4,5)=FMAT 4503 MID$(MATCHES$,7*CTAUT-6,2)=STR$(MATNO) 4505 MATCHESS$=MATCHES$ 4510 PUT #4,1: CLOSE #4 4520 RETURN 4600 ' GET PREVIOUS MATCH 4601 ' 4602 ' 4620 MATNO=MATNO-1 4622 GOTO 4422 'REJOIN NEXT MATCH PROCESSING 4950 ' 4951 ' 4953 'OPEN "R", 2, "SCORSNO."+FILNO$,LENPAK+5 4955 'FIELD #2, LENPAK+5 AS SCORDET$ 4960 GET #2,1 +SCORREC 'LOOK AT FIRST RECORD 4965 IF LEFT$(SCORDET$,5)MATNO$ THEN GOSUB 2010 'CREATE NEW FILE 4970 RETURN 4980 'FOR IXYY=1 TO 5:FOR IXYZ=1 TO 10000: NEXT IXYZ: NEXT IXYY 4985 RETURN 7030 END 9080 ' ³ DISPLAY ERROR MESSAGE 9085 CX = POS(0) 9090 CY = CSRLIN 9100 LOCATE 25, 1: PRINT ERO$; 9105 IF LEN(ERO$)PRNLEN THEN CURLEN=PRNLEN ELSE CURLEN=0 14195 SCORREC=NOFIELDS*VAL(MID$(SCOTOT$,12,2))-NOFIELDS 14197 GOSUB 14500 'SET NEXT COLOUR and NUMBER OF REDS 14199 RETURN 14200 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 14202 ' ³ LOAD Score of MATCH to file ³ 14204 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 14206 ' 14232 MID$(SCOTOT$,6,2)=RIGHT$(STR$(TFRAMES1),2) 14262 MID$(SCOTOT$,8,2)=RIGHT$(STR$(TFRAMES2),2) 14270 MID$(SCOTOT$,10,2)=RIGHT$(STR$(COMPFR),2) 14280 MID$(SCOTOT$,12,2)=RIGHT$(STR$(CURFR),2) 14332 MID$(SCOTOT$,14,3)=RIGHT$(" "+STR$(SCOR1),3) 14362 MID$(SCOTOT$,17,3)=RIGHT$(" "+STR$(SCOR2),3) 14370 MID$(SCOTOT$,20,3)=RIGHT$(" "+STR$(NOSCORS),3) 14372 MID$(SCOTOT$,23,1)=FCOLLET 14373 MID$(SCOTOT$,24,2)=RIGHT$(STR$(NOREDS),2) 14374 MID$(SCOTOT$,26,1)=RIGHT$(STR$(NOSTRIKE),1) 14375 MID$(SCOTOT$,27,3)=RIGHT$(" "+STR$(BREAK),3) 14376 MID$(SCOTOT$,30,8)=STARTTIM$ 14377 MID$(SCOTOT$,38,1)=MID$(STR$(STARSTRK),2) 14387 MID$(SCOTOT$,39,4)=MATTIM$ 14389 MID$(SCOTOT$,45,8)=STARTBK$ 14391 MID$(SCOTOT$,53,3)=RIGHT$(STR$(P1BIGBK),3) 14393 MID$(SCOTOT$,56,3)=RIGHT$(STR$(P2BIGBK),3)

Page 9 of 79

14398 SCORREC=NOFIELDS*VAL(MID$(SCOTOT$,12,2))-NOFIELDS 14399 PUT #4,1:RETURN 14400 IF IDH>2 THEN RETURN ' REINSTATE SCORE DETAILS 14410 GET #2,IB+SCORREC 14420 MID$(SCORDET$, IDG+5, 2)=CHR$(SKOR)+CHR$(0) 'extract buffer depart 14425 PUT #2,IB+SCORREC 14430 IF NOSTRIKE AND 1=0 THEN GOTO 14440 'ON A COLOUR AFTER A RED 14432 GET #2,IB+SCORREC+1 'THE COLOUR 14434 MID$(SCORDET$, IDG+5, 2)=CHR$(0)+CHR$(0) 'extract buffer depart 14436 PUT #2,IB+SCORREC+1 14440 GOSUB 14490 'BLANK OUT 14450 GET #2,IDH*3+SCORREC 14455 MID$(SCORDET$, IDG+5, 2)=CHR$(BREAK)+CHR$(0) 'extract buffer depart 14461 GOSUB 24685:GOSUB 24500 'FORCE SAVE OF STATISTICS 14462 FOR I=YBKSHTNO TO YSNKRSKO 14464 MID$(SCORDET$,I,1)=CHR$(ISAV(CURSCBUF,I-YBKSHTNO+ZBKSHTNO)) 14466 NEXT I 14470 PUT #2,IDH*3+SCORREC 14480 ISCOR((IDH-1)*3+3,IDG)=BREAK 'UPDATE ISCOR 14489 RETURN 14490 'BLANK OUT OTHER 14492 FOR IX=1 TO 3 14493 GET #2,(2-IDH)*3+SCORREC+IX 14494 MID$(SCORDET$, IDG+5, 2)=CHR$(0)+CHR$(0) 14495 PUT #2,(2-IDH)*3+SCORREC+IX 14496 NEXT IX 14497 RETURN 14500 ' CONTROL COLOUR POSSIBILITIES 14510 FCOLLET=MID$(SCOTOT$,23,1) 14520 COLPOSS=INSTR(FCOLPOSS,FCOLLET) 14530 IF COLPOSS10 THEN BEEP: ERO$="ERROR LOADING RESULT FILE - NEXT COLOUR ": GOSUB 9080 14550 NOREDS=VAL(MID$(SCOTOT$,24,2)) 'NUMBER OF REDS LEFT 14552 LOCATE ISTLN + 5,43 + OFFZET, 0 14554 PRINT RIGHT$(STR$(NOREDS),2) 14556 LOCATE ISTLN + 7,43 + OFFZET, 0: COLOR JAUNE,ROUGE 14558 PRINT RIGHT$(" "+KOLER$(COLPOSS),12): COLOR BLANCC,CYAN 14560 NOSTRIKE=VAL(MID$(SCOTOT$,26,1)) 14561 BREAK=VAL(MID$(SCOTOT$,27,3)) 14562 LOCATE ISTLN + 5,22 + OFFZET, 0 14564 IF (NOSTRIKE-1)\2=0 THEN PRINT "*" ELSE PRINT " " 14566 LOCATE ISTLN + 7,22 + OFFZET, 0 14568 IF (NOSTRIKE-1)\2=1 THEN PRINT "*" ELSE PRINT " " 14570 LOCATE ISTLN + 7,53 + OFFZET, 0 14572 PRINT "NOSTRIKE ";NOSTRIKE; "NOSCORS ";NOSCORS;" COLPOSS";COLPOSS;" LASTKY";LASTKY 14580 STARTTIM$=MID$(SCOTOT$,30,8) 14585 STARSTRK=VAL(MID$(SCOTOT$,38,1)) 'PERSON WHO BROKE FRAME

Scoring Art – Software Listings Stephen Parry – July 2011

14587 14589 14591 14593 14595 14599 14600 14610 14620 14630 14640 14650 14660 14699 18000 18002 18004 18006 18010 18020 18030 18035 18037 18040 18045 18047 18075 18080 18082 18084 18086 18099 18100 18102 18104 18106 18110 18112 18115 18120 18130 18140 18195 18199 18200 18202 18204 18206 18210 18211 18212

MATTIM$=MID$(SCOTOT$,39,4) 'FRAME TIME STARTBK$=MID$(SCOTOT$,45,8) 'BREAK START P1BIGBK=VAL(MID$(SCOTOT$,53,3)) 'PLAYER 1 BIG BRK VALUE P2BIGBK=VAL(MID$(SCOTOT$,56,3)) 'PLAYER 2 BIG BRK VALUE GOSUB 14600 'RESTORE INFO BREAK RETURN 'RESTORE BREAK DETAILS I=(NOSTRIKE+1)\2 GET #2, I*3+SCORREC FOR I=YBKSHTNO TO YSNKRSKO ISAV(CURSCBUF,I-YBKSHTNO+ZBKSHTNO)=ASC(MID$(SCORDET$,I,1)) NEXT I GOSUB 24785 RETURN ' ' ' ' textes OPEN "\SNK\TEXTSNO.TXT" FOR INPUT AS #4 IF EOF(4) THEN 18080 ELSE LINE INPUT #4, FREC$ INX = VAL(MID$(FREC$, 1, 2)): IF INX=0 THEN GOTO 18020 IF 29>INX>22 THEN TEXTAB$(INX)=MID$(FREC$,6,6) IF 29>INX>22 THEN TEXTLT$(INX)=MID$(FREC$,12,1) TEXTPS$(INX) = (MID$(FREC$, 3, 3)) TXTTMP$ = (MID$(FREC$, 13, 40))+" " TEXTNOV$(INX) = MID$(TXTTMP$+" ",1,INSTR(TXTTMP$," ")-1) GOTO 18020 ' ' ' ' INTXT = INX: CLOSE #4: RETURN ' ' ' ' FONTS OPEN "\SNK\FONTSNO.TXT" FOR INPUT AS #4 IFONTS = 10 DIM FONTS$(IFONTS) IF EOF(4) THEN 18199 ELSE LINE INPUT #4, FREC$ INX = VAL(MID$(FREC$,1, 2)) FONTS$(INX) = (MID$(FREC$, 3, 10)) GOTO 18120 INNAME= INX: CLOSE #4: RETURN ' ' ' ' FICHIERS OPEN "\SNK\FICHSNO.TRT" FOR INPUT AS #4 'CALL SET.DISP.SCREEN(SCRDUM) IFICH = 20

Page 10 of 79

18215 DIM FICHS$(IFICH),LOCXFIC(IFICH),LOCYFIC(IFICH),WIDIM(IFICH),HGTIM(IFICH ) 18220 IF EOF(4) THEN 18299 ELSE LINE INPUT #4, FREC$ 18225 'CALL SET.WORK.SCREEN(SCRDUM) 18230 INX = VAL(MID$(FREC$,1, 2)) 18240 FICHS$(INX) = MID$(FREC$, 3, 10) 18245 LOCXFIC(INX) = VAL(MID$(FREC$, 13, 2)) 18250 LOCYFIC(INX) = VAL(MID$(FREC$, 15, 2)) 18255 IPX=HRES100*LOCXFIC(INX): IPY=VRES100*LOCYFIC(INX) 18260 DSP$=FICHS$(INX) 18265 'IF LOAD.IMAGE%(DSP$,IPX,IPY) THEN LOCATE 4+INX,20:PRINT "CANNOT LOAD "+DSP$;IPX;IPY; 18270 WIDIM(INX)=VAL(MID$(FREC$,17,4))'WID.IMAGE%(DSP$) 18275 HGTIM(INX)=VAL(MID$(FREC$,21,4))'HGT.IMAGE%(DSP$) 18295 GOTO 18220 18299 INFICH= INX: CLOSE #4: RETURN 18300 ' 18302 ' 18304 ' 18306 ' GENERAL INFORMATION 18310 OPEN "\SNK\GENRSNO.TXT" FOR INPUT AS #4 18320 IF EOF(4) THEN 18399 ELSE LINE INPUT #4, FREC$ 18330 INX = VAL(MID$(FREC$,1, 3)) 18340 CLSS$(INX) = MID$(FREC$,23+1, 1) 18345 IMAGNO(INX) = VAL(MID$(FREC$, 24+1, 2)) 18350 IFONT(INX) = VAL(MID$(FREC$, 26+1, 1)) 18355 IFCHIER(INX) = VAL(MID$(FREC$, 27+1, 1)) 18360 LINEX(INX) = VAL(MID$(FREC$, 28+1, 2)) 18365 COLY(INX) = VAL(MID$(FREC$, 30+1, 2)) 18370 CENTRE(INX) = VAL(MID$(FREC$, 32+1, 1)) 18373 COLER(INX) = VAL(MID$(FREC$, 33+1, 3)) 18385 EFFECT(INX) = VAL(MID$(FREC$, 36+1, 2)) 18376 EDGEX(INX) = VAL(MID$(FREC$, 38+1, 2)) 18378 EDGEY(INX) = VAL(MID$(FREC$, 40+1, 2)) 18380 SOUSLINE$(INX) = MID$(FREC$, 42+1, 1) 18382 OFFSET(INX) = VAL(MID$(FREC$, 43+1, 2)) 18384 PROF(INX) = VAL(MID$(FREC$, 45+1, 2)) 18386 SLCOL(INX) = VAL(MID$(FREC$, 47+1, 3)) 18395 GOTO 18320 18399 ININF= INX: CLOSE #4: RETURN 18400 ' 18402 ' 18404 ' 18406 ' PLAYERS 18410 OPEN "\SNK\NAMESNO.TXT" FOR INPUT AS #4 18412 INX=0 18420 IF EOF(4) THEN 18499 ELSE LINE INPUT #4, FREC$ 18430 INX = INX+1 18440 CODE$(INX) = MID$(FREC$, 1, 6) 18495 GOTO 18420 18499 NMINF= INX: CLOSE #4: RETURN

Scoring Art – Software Listings Stephen Parry – July 2011

18500 18502 18504 18506 18510 18512 18520 18555 18560 18570 18599 18600 18602 18604 18606 18610 18620 18630 18635 18640 18645 18650 18655 18660 18665 18670 18673 18676 18678 18680 18682 18684 18685 18686 18688 18690 18695 18699 24000 24100 24400 24410 24420 24430 24500 24510 24520 24530 24600 24602 24604 24606

' ' ' ' COUNTRIES OPEN "\SNK\COUNSNO.TXT" FOR INPUT AS #4 INX=0 IF EOF(4) THEN 18599 ELSE LINE INPUT #4, FREC$ INX=INX+1 COUNSH$(INX)=MID$(FREC$,1,3) GOTO 18520 CNINF= INX: CLOSE #4: RETURN ' ' ' ' STATISTICS LAYOUT OPEN "\SNK\statSNO.TXT" FOR INPUT AS #4 IF EOF(4) THEN 18699 ELSE LINE INPUT #4, FREC$ INX = VAL(MID$(FREC$,1, 2))+50 ITXT$(INX) = MID$(FREC$,3,20) CLSS$(INX) = MID$(FREC$,23, 1) IMAGNO(INX) = VAL(MID$(FREC$, 24, 2)) IFONT(INX) = VAL(MID$(FREC$, 26, 1)) IFCHIER(INX) = VAL(MID$(FREC$, 27, 1)) LINEX(INX) = VAL(MID$(FREC$, 28, 2)) COLY(INX) = VAL(MID$(FREC$, 30, 2)) CENTRE(INX) = VAL(MID$(FREC$, 32, 1)) COLER(INX) = VAL(MID$(FREC$, 33, 3)) EDGEX(INX) = VAL(MID$(FREC$, 38, 2)) EDGEY(INX) = VAL(MID$(FREC$, 40, 2)) SOUSLINE$(INX) = MID$(FREC$, 42, 1) OFFSET(INX) = VAL(MID$(FREC$, 43, 2)) PROF(INX) = VAL(MID$(FREC$, 45, 2)) EFFECT(INX) = VAL(MID$(FREC$, 36, 2)) SLCOL(INX) = VAL(MID$(FREC$, 47, 3)) XSTRT(INX) = VAL(MID$(FREC$, 50, 3)) XLGTH(INX) = VAL(MID$(FREC$, 53, 2)) GOTO 18620 LNINF= INX: CLOSE #4: RETURN ' MEMORY BEEP: ERO$="FREE MEMORY = "+STR$(FRE(0)): GOSUB 9080: RETURN ' ADVANCE CURSCBUF=CURSCBUF+1 IF CURSCBUF>SCBUF THEN CURSCBUF=ISCBUF RETURN ' REVERSE CURSCBUF=CURSCBUF-1 IF CURSCBUFPRNLEN THEN CURLEN=PRNLEN ELSE CURLEN=0 24760 ISCOR(NOSTRIKE,NOSCORS)=ISAV(CURSCBUF,ZISCO) 24770 SCOR1=ISAV(CURSCBUF,ZSCR1) 24780 SCOR2=ISAV(CURSCBUF,ZSCR2) 24782 BREAK=ISAV(CURSCBUF,ZBRK) 24784 BKST=ISAV(CURSCBUF,ZBKST): GOSUB 24785: GOTO 24795 24785 BKSHTNO=ISAV(CURSCBUF,ZBKSHTNO) 24786 BKVAL=ISAV(CURSCBUF,ZBKVAL) 24787 TABLMIN=ISAV(CURSCBUF,ZTABLMIN):TABLSEC=ISAV(CURSCBUF,ZTABLSEC) 24788 SKORSHT=ISAV(CURSCBUF,ZSKORSHT) 24789 TOTLSHT=ISAV(CURSCBUF,ZTOTLSHT) 24790 SAFTSHT=ISAV(CURSCBUF,ZSAFTSHT) 24791 SAFTSKO=ISAV(CURSCBUF,ZSAFTSKO):SNKRSHT=ISAV(CURSCBUF,ZSNKRSHT):SNKR SKO=ISAV(CURSCBUF,ZSNKRSKO):RETURN 24795 FCOLLET=MID$(FCOLPOSS,COLPOSS,1) ' RED,YELLOW,BROWN,GREEN,BLUE,PINK,BLACK SELECTED

Scoring Art – Software Listings Stephen Parry – July 2011

24796 KY=0:GOSUB 2940:GOSUB 9575 'REUPDATE PARAMS/NO REDS LEFT/SCOR ZERO 24797 DSP1=1 'INDICATE FILE 24798 DSP(CTAUT)=1 ' AND SCORES UPDATE 24799 RETURN 25000 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 25002 ' ³ PROCESSING of SPECIFIC Keystrokes ³ 25003 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 25004 ' 25008 'FOUL 25010 ERO$= "ENTER VALUE OF FOUL (4-7) or 0 TO EXIT ": GOSUB 9080 25015 K$ = INKEY$: IF K$ = "" THEN 25015 25016 ERO$=SPACE$(ERRMESSL+1): GOSUB 9080 'CLEAR message 25017 IF K$="0" THEN RETURN 25020 IF K$ < "4" OR K$ > "7" THEN BEEP: GOTO 25010 25030 KY=8+ASC("F")-48 : GOSUB 24600 :GOSUB 2940: NOSTRIKE=4(2*((NOSTRIKE-1)\2)+1): GOSUB 2925: IDSPCRT=CTAUT:GOSUB 9480 'CHANGE PLAYER 25050 KY=8+VAL(K$) : GOSUB 24600 :GOSUB 2940: NOSCORS=NOSCORS+1: GOSUB 2925: GOSUB 25060: GOTO 26900 'CHANGE PLAYER 25060 BREAK=BREAK+KY-8: IF (NOSTRIKE-1)\2=1 THEN SCOR2=SCOR2+KY-8 ELSE SCOR1=SCOR1+KY-8 25065 IF CURSCBUF>2 THEN IF ISAV(CURSCBUF-3,ZKY)=8+ASC("S")-48 THEN SNKRSKO=SNKRSKO+1 'FOULS AFTER SNOOKER 25070 GOSUB 43000:RETURN 25100 CURREDS=NOREDS 'NOREDS+1 25110 NOREDS=NOREDS+1 25115 IF NOREDS>15 THEN NOREDS=CURREDS: BEEP: ERO$="REDS CANNOT EXCEED 15": GOSUB 9080: RETURN 25120 GOSUB 14200: GOTO 14500 25200 CURREDS=NOREDS 'NOREDS-1 25210 NOREDS=NOREDS-1 25215 IF NOREDS0 THEN KY=1: IF NOSTRIKE AND 1 =1 THEN NOSTRIKE=NOSTRIKE-1 25955 IF NOREDS>0 THEN NOSCORS=NOSCORS+1:GOSUB 24600 :GOSUB 2940: NOSTRIKE=NOSTRIKE+1: NOREDS=NOREDS-1:GOTO 2990 'AVOID TEST OF RED 25999 RETURN 26000 'ZAP 26002 ERO$= "CONFIRM ZAP Y/N ": GOSUB 9080 26004 K$ = INKEY$: IF K$ = "" THEN 26004 26005 K$=CHR$(ASC(K$) AND &H5F) 26006 IF K$"Y" THEN RETURN 26008 SAVSCORS=NOSCORS 26010 GOSUB 2000 ' TOTALS TO 0 26020 GOSUB 2010 ' DETAILS TO 0 26025 GOSUB 14000 'BRING BACK TOTALS TO RAM, AND DISPLAY 26030 GOSUB 1985 'SCORES RAM TO 0 26032 GOSUB 26050 'BLANK SCREEN 26035 GOSUB 9600 'DISPLAY RAM 26040 RETURN 26050 FOR IDG = 0 TO SAVSCORS 'STATS SUR ECRAN BULL 26055 FOR IDH = 1 TO 2 26065 FOR IDI = 1 TO NOFIELDS\2 26070 GOSUB 26090 26073 NEXT IDI

Scoring Art – Software Listings Stephen Parry – July 2011

26075 NEXT IDH 26078 NEXT IDG 26080 RETURN 26090 LINEP = ISTLN + IDH*5 +4+IDI 26092 LOCATE LINEP, OFFZET3-CURLEN+IDG 26094 PRINT " ";:IF IDI NOPAG THEN IWKPAGE = INIPAG 29949 RETURN 30000 ' 30004 ' 30006 ' next spacewd page 30008 GOSUB 29900 30010 GOSUB 34000 30194 COLOR BLANCC, BLEU 30200 RETURN 30500 'CLEAR SCREEN 30510 IMGTYP=15: SLCOLCL=SLCOL(IMGTYP): LINSEP%=VRES1000*POS3:KOLER=COLER(IMGTYP): CALL SET.EDGE.COLOUR(KOLER) 30520 FOR I=0 TO NOPAG-1 30522 CALL SET.WORK.SCREEN(I):CALL CLEAR.SCREEN(SLCOLCL) 30598 NEXT I 30599 RETURN 31000 ' 31004 ' 31011 IMGTYP=3 31018 DSP$=SFULL1$ 31020 GOSUB 34300 'NAME1 31022 NM1YCORD=YCORD 31024 'IMGTYP=9:IMGNO=IFCHIER(IMGTYP):GOSUB 34550 'FLAG 31026 IMGTYP=4 31028 DSP$=SFULL2$ 31030 GOSUB 34300 'NAME2 31032 NM2YCORD=YCORD 31034 'IMGTYP=10:IMGNO=IFCHIER(IMGTYP):GOSUB 34550 'FLAG 31040 GOSUB 31100:GOSUB 27200:IMGTYP=19 'MATCH DESCRIPTION+ROUNDTEXT 31045 DSP$=MATCHDES$+" "+RNDTXT$ 'EVENT TYPE + ROUND 31049 GOSUB 34300:GOSUB 34100 'SEND TEXT+UNDERLINE 31050 IMGTYP=1 'CHAMPIONSHIP 31055 DSP$=TEXTNOV$(21) 31059 GOSUB 34300: GOSUB 34100 31060 IMGTYP=2 31065 DSP$=TEXTNOV$(59) 'POINTS 31069 GOSUB 34300: GOSUB 34100 ' WITH UNDERLINE 31070 IMGTYP=36 31075 IF COUNF1$="" THEN DSP$="" ELSE DSP$="("+COUNF1$+")" 'COUNTRY 31079 GOSUB 34300 31080 IMGTYP=37 31085 IF COUNF2$="" THEN DSP$="" ELSE DSP$="("+COUNF2$+")" 'COUNTRY 2

Scoring Art – Software Listings Stephen Parry – July 2011

31089 GOSUB 34300 31090 IMGTYP=86:DSP$=TEXTNOV$(57)+STR$(NOFR)+" "+TEXTNOV$(58) 31099 GOSUB 34300: RETURN 31100 ' SEARCH MATCH DESCRIPTION 31110 MATCHID$=MID$(ENRMAT$,13,2)+" " 'MATCH CODE 31120 FOR ICNT=78 TO 82 'TEXT OF CODES 31125 IF MATCHID$=TEXTPS$(ICNT) THEN 31200 31130 NEXT ICNT 31140 MATCHDES$="": RETURN 'NO MATCH 31200 MATCHDES$=TEXTNOV$(ICNT):RETURN 32000 ' CLEAR SCREEN 32010 ' 32020 ' 32030 GOSUB 29900 'NEXT SPACE PAGE 32040 CALL SET.WORK.SCREEN(IWKPAGE-1) 32050 CALL CLEAR.SCREEN(SLCOLCL):GOSUB 32052: GOTO 34095 32052 IF BL$="B" THEN GOSUB 2188 'FORCE OFF 32054 IF TM$="T" THEN GOSUB 2190 'FORCE OFF 32056 IF MT$="H" THEN GOSUB 2196 'FORCE OFF 32058 IF BK$="N" THEN GOSUB 2198 'FORCE OFF 32060 PTDISP=0:RETURN 32070 ' 32100 ' CLEAR SCREEN 32110 ' 32120 ' 32130 GOSUB 29900 'NEXT SPACE PAGE 32140 CALL SET.WORK.SCREEN(IWKPAGE-1) 32150 CALL CLEAR.SCREEN(SLCOLCL):GOSUB 32052: GOTO 9534 33000 ' 33010 ' 33020 ' POINTS LEFT 33025 'GOSUB 29900 'NEXT PAGE 33030 'IMGTYP=12: CALL SET.WORK.SCREEN(IWKPAGE-1):IF CLSS$(IMGTYP)="O" THEN CALL CLEAR.SCREEN(SLCOLCL) 33032 PTDISP=1-PTDISP 'TOGGLE 33033 GOTO 9534 'RE-DO PAGE WITH LAST DATA 33035 IMGTYP=12: IF PTDISP=0 OR KYY=9 THEN RETURN 33040 DSP$=TEXTNOV$(22): GOSUB 34300 33050 DSP$=STR$(PTSLEFT): GOSUB 34350 33055 IMGTYP=84: LORR=(NOSTRIKE-1)\2 33060 IF (NOSTRIKE+1)\2=1 THEN IDIFF=SCOR1-SCOR2 ELSE IDIFF=SCOR2SCOR1 33070 IF IDIFFWIDDSP2 THEN WIDDSP=WIDDSP1 ELSE WIDDSP=WIDDSP2 'GET LONGER NAME 36390 XCORDTB=XCORDTB+WIDDSP 'ADJUST ADJUSTMENT FOR LONGER NAME 36399 RETURN 39000 ' DISPLAY BALLS, AND CONTINOUS SCORE 39005 SAVKY=LASTKY

Page 16 of 79

39010 LASTKY= 1010: GOSUB 36000 'GET CONTINOUS SCORE BOTTOM NOT SKY, SEE 36000 39020 LASTKY=SAVKY: SAVKY=0 39050 IF ((BREAK14 AND KYY14 AND KYY8 THEN RETURN 39685 IMGNO=IBALL(IDI,IDG)+9 39687 GOSUB 34500 'IMAGE TO SCREEN 39688 GOSUB 39800 'BALL VALUE, INSIDE BALL

Scoring Art – Software Listings Stephen Parry – July 2011

39699 RETURN 39700 ' 39705 ' 39710 ' BREAK SCORE, TEXT having put up BALLS 39716 IF IDH=1 THEN IMGTYP=44 ELSE IMGTYP=45 39720 XCORD1=HRES100*LINEX(IMGTYP): YCORD1=VRES100*COLY(IMGTYP)LINEP 'PUT BACK OFFSET 39730 KOLER=COLER(IMGTYP):CALL SET.COLOUR(KOLER) 39752 CALL MOVE.REL(XCORD1,YCORD1) 39755 DSP$=TEXTNOV$(18) 'BREAK SCORE 39760 GOSUB 34330 39762 ' PRINT POINTS SCORE OF PLAYERS 39763 XCORD2=HRES100*OFFSET(IMGTYP): YCORD2=VRES100*PROF(IMGTYP)LINEP 39780 CALL MOVE.REL(-XCORD1,-YCORD1) 39782 CALL MOVE.REL(XCORD2,YCORD2) 39784 DSP$=STR$(BKSCOR): GOSUB 34330 39799 RETURN 39800 ' 39805 ' 39810 ' PUT BALL VALUE INSIDE BALLS 39816 IMGTYP=47 39817 IF CLSS$(IMGTYP)"O" THEN GOTO 39840 'DO NOT PUT IN VALUE OF BALL 39820 XCORDV=HRES100*LINEX(IMGTYP): YCORDV=VRES100*COLY(IMGTYP) 39822 CALL MOVE.REL(XCORDV,YCORDV):KOLER=COLER(IMGTYP):CALL SET.COLOUR(KOLER) 39825 DSP$=MID$(STR$(IMGNO-9),2) 'BALL SCORE 39830 GOSUB 34330 'DISPLAY 39840 IMGTYP=42 39849 RETURN 39850 ' 39855 ' 39860 ' ELAPSED TIME, OF MATCH 39865 IF MT$"H" THEN RETURN 39868 IMGTYP=49: GOSUB 39950 39870 DSP$=TEXTNOV$(42)+STR$(VAL(MID$(SCOTOT$,39,4))+ELAPTIM)+TEXTNOV$(43) 39875 GOSUB 34300 39879 RETURN 39880 ' 39882 ' 39884 ' ELAPSED TIME, OF BREAK 39886 IF BK$"N" THEN RETURN 39888 IMGTYP=70:GOSUB 39970 39889 IBRKSECD=IBRKSEC:IBRKMIND=IBRKMIN: IF IBRKSECDCURFR OR IFRAMNO59 THEN INFO11=INFO11-60:INFO1=INFO1+1 42025 IF INFO21>59 THEN INFO21=INFO21-60:INFO2=INFO2+1 42027 IBRKSECD1=INFO11:IBRKMIND1=INFO1 42028 IBRKSECD2=INFO21:IBRKMIND2=INFO2 42029 CUMINFO1=CUMINFO1+IBRKMIND1:CUMINFO11=CUMINFO11+IBRKSECD1:CUMINFO2=C UMINFO2+IBRKMIND2:CUMINFO21=CUMINFO21+IBRKSECD2 42030 NEXT IFR 42040 ADJSEC=CUMINFO11\60:CUMINFO11=CUMINFO1160*ADJSEC:CUMINFO1=CUMINFO1+ADJSEC 'ADJUST FOR WHOLE MINUTES EXTRA 42045 ADJSEC=CUMINFO21\60:CUMINFO21=CUMINFO2160*ADJSEC:CUMINFO2=CUMINFO2+ADJSEC 'ADJUST FOR WHOLE MINUTES EXTRA 42055 DSP1$=STR$(IBRKMIND1)+":"+RIGHT$("00"+MID$(STR$(IBRKSECD1),2),2) 42065 DSP2$=STR$(IBRKMIND2)+":"+RIGHT$("00"+MID$(STR$(IBRKSECD2),2),2) 42068 CUMDSP1$=STR$(CUMINFO1)+":"+RIGHT$("00"+MID$(STR$(CUMINFO11),2),2) 42070 CUMDSP2$=STR$(CUMINFO2)+":"+RIGHT$("00"+MID$(STR$(CUMINFO21),2),2) 42072 DSP$=TEXTNOV$(46) '"TIME AT TABLE" 42075 IMGTYP=71: GOSUB 34300: GOSUB 34100 ' WITH UNDERLINE 42078 IMGTYP=78: TOP=1.2:DSP$=TEXTNOV$(50)+STR$(CURFR): GOSUB 36300 ' FRAME 42079 IMGTYP=79: DSP$=TEXTNOV$(51): GOSUB 36300 ' FRAME 42080 IMGTYP=72: DSP$=NAME1$: GOSUB 36300 42082 IMGTYP=73: DSP$=DSP1$: GOSUB 36300 42086 IMGTYP=74: DSP$=CUMDSP1$: GOSUB 36300 42090 IMGTYP=75: DSP$=NAME2$: GOSUB 36300 42092 IMGTYP=76: DSP$=DSP2$: GOSUB 36300 42094 IMGTYP=77: DSP$=CUMDSP2$: GOSUB 36300:TOP=0 42097 IF CLSS$(IMGTYP)="O" THEN GOTO 36050 ELSE GOSUB 32052'INCLUDE TOP RIGHT SCORE OR OFF WITH EVERYTHING ELSE 42099 GOTO 34095 42100 ' 42101 ' 42102 ' STRIKE RATE 42103 ' PREPARE 42104 GOSUB 29900 'NEXT PAGE 42105 IMGTYP=42: CALL SET.WORK.SCREEN(IWKPAGE-1):IF CLSS$(IMGTYP)="O" THEN CALL CLEAR.SCREEN(SLCOLCL) 42106 CUMINFO1=0:CUMINFO11=0:CUMINFO2=0:CUMINFO21=0

Scoring Art – Software Listings Stephen Parry – July 2011

42107 IPOS1=YSKORSHT:IPOS2=YTOTLSHT: GOSUB 42108: DSP$=TEXTNOV$(47): GOTO 42075 42108 FOR IFR=1 TO CURFR 42109 GOSUB 42500 42110 INFO1=ASC(MID$(SCORDET$,IPOS1,1)) 42112 INFO11=ASC(MID$(SCORDET$,IPOS2,1)) 42113 GET #2,REKNOPP 42114 INFO2=ASC(MID$(SCORDET$,IPOS1,1)) 42116 INFO21=ASC(MID$(SCORDET$,IPOS2,1)):LOCATE 23,1:PRINT INFO1,INFO11,INFO2,INFO21 42117 IF KYY=23 THEN ITMP=INFO1:INFO1=INFO2:INFO2=ITMP 'REVERS FOR SUCCESS OF OPPONENT, FOR SNOOKER, AND OWN SHOT 42118 IF KYY=27 THEN ITMP=INFO1:INFO1=INFO2:INFO2=ITMP 'REVERS FOR SUCCESS OF OPPONENT, FOR SAFETY 42119 IF KYY=23 THEN ITMP=INFO11:INFO11=INFO21:INFO21=ITMP 'REVERS FOR SUCCESS OF OPPONENT, FOR SNOOKER 42120 CUMINFO1=CUMINFO1+INFO1:CUMINFO11=CUMINFO11+INFO11:CUMINFO2=CUMINFO2 +INFO2:CUMINFO21=CUMINFO21+INFO21 42130 NEXT IFR 42150 IF (KYY=23 OR KYY=27) THEN GOTO 42175 42155 IF INFO11=0 THEN DSP1$="-" ELSE DSP1$=STR$(INT(INFO1*100/(INFO11)+0.5))+"%" 42165 IF INFO21=0 THEN DSP2$="-" ELSE DSP2$=STR$(INT(INFO2*100/(INFO21)+0.5))+"%" 42168 IF CUMINFO11=0 THEN CUMDSP1$="-" ELSE CUMDSP1$=STR$(INT(CUMINFO1*100/(CUMINFO11)+0.5))+"%" 42170 IF CUMINFO21=0 THEN CUMDSP2$="-" ELSE CUMDSP2$=STR$(INT(CUMINFO2*100/(CUMINFO21)+0.5))+"%" 42172 RETURN 42175 IF INFO11=0 THEN DSP1$="-" ELSE DSP1$=STR$(INT(((INFO11INFO1)*100/(INFO11))+0.5))+"%" 42185 IF INFO21=0 THEN DSP2$="-" ELSE DSP2$=STR$(INT(((INFO21INFO2)*100/(INFO21))+0.5))+"%" 42188 IF CUMINFO11=0 THEN CUMDSP1$="-" ELSE CUMDSP1$=STR$(INT((CUMINFO11-CUMINFO1)*100/(CUMINFO11)+0.5))+"%" 42190 IF CUMINFO21=0 THEN CUMDSP2$="-" ELSE CUMDSP2$=STR$(INT((CUMINFO21-CUMINFO2)*100/(CUMINFO21)+0.5))+"%" 42192 RETURN 42200 ' 42201 ' 42202 ' SAFETY SUCCESS 42203 ' PREPARE 42204 GOSUB 29900 'NEXT PAGE 42205 IMGTYP=42: CALL SET.WORK.SCREEN(IWKPAGE-1):IF CLSS$(IMGTYP)="O" THEN CALL CLEAR.SCREEN(SLCOLCL) 42206 CUMINFO1=0:CUMINFO11=0:CUMINFO2=0:CUMINFO21=0 42207 IPOS1=YSAFTSKO:IPOS2=YSAFTSHT 42208 ' 42209 GOSUB 42108 42275 DSP$=TEXTNOV$(48) '"SAFETY 42280 GOTO 42075

Page 19 of 79

42300 ' 42301 ' 42302 ' SNOOKER ESCAPE RATE 42303 ' PREPARE 42304 GOSUB 29900 'NEXT PAGE 42305 IMGTYP=42: CALL SET.WORK.SCREEN(IWKPAGE-1):IF CLSS$(IMGTYP)="O" THEN CALL CLEAR.SCREEN(SLCOLCL) 42306 CUMINFO1=0:CUMINFO11=0:CUMINFO2=0:CUMINFO21=0 42307 IPOS1=YSNKRSKO:IPOS2=YSNKRSHT: GOSUB 42108 42309 DSP$=TEXTNOV$(60):GOTO 42075 '"SAFETY 42310 ' 42311 ' 42312 ' FRAME SUMMARY 42313 ' PREPARE 42314 GOSUB 29900 'NEXT PAGE 42315 IMGTYP=91: CALL SET.WORK.SCREEN(IWKPAGE-1):IF CLSS$(IMGTYP)="O" THEN CALL CLEAR.SCREEN(SLCOLCL) 42316 IFR=CURFR:GOSUB 42500 'GET RECORD OF PLAYER1, CURRENT FRAME 42317 IMGTYP=91: DSP$=TEXTNOV$(70)+STR$(CURFR): GOSUB 34300 : GOSUB 34100 'WITH UNDERLINE 42318 IMGTYP=92: DSP$=NAME1$:GOSUB 34300 42320 IMGTYP=93: DSP$=NAME2$:GOSUB 34300 42325 IMGTYP=94: DSP$=TEXTNOV$(71): GOSUB 34300 'SCORE 42330 IMGTYP=95: DSP$=TEXTNOV$(72): GOSUB 34300 'SCORING SHOTS 42335 IMGTYP=96: DSP$=TEXTNOV$(73): GOSUB 34300 'MISSES 42340 IMGTYP=97: DSP$=TEXTNOV$(74): GOSUB 34300 'SAFETY SHOTS 42345 IMGTYP=98: DSP$=TEXTNOV$(75): GOSUB 34300 'SNOOKERS 42350 IMGTYP=100: DSP$=STR$(SCOR1): GOSUB 34300 'SCORE 42355 IMGTYP=101: DSP$=STR$(ASC(MID$(SCORDET$,YSKORSHT,1))): GOSUB 34300 'SCORING SHOTS 42360 IMGTYP=102: DSP$=STR$(ASC(MID$(SCORDET$,YTOTLSHT,1))ASC(MID$(SCORDET$,YSKORSHT,1))): GOSUB 34300 'SCORING SHOTS 42365 IMGTYP=103: DSP$=STR$(ASC(MID$(SCORDET$,YSAFTSHT,1))): GOSUB 34300 'SAFETY SHOTS 42370 IMGTYP=104: DSP$=STR$(ASC(MID$(SCORDET$,YSNKRSHT,1))): GOSUB 34300 'SNOOKERS 42400 GET #2,REKNOPP 42450 IMGTYP=105: DSP$=STR$(SCOR2): GOSUB 34300 'SCORE 42455 IMGTYP=106: DSP$=STR$(ASC(MID$(SCORDET$,YSKORSHT,1))): GOSUB 34300 'SCORING SHOTS 42460 IMGTYP=107: DSP$=STR$(ASC(MID$(SCORDET$,YTOTLSHT,1))ASC(MID$(SCORDET$,YSKORSHT,1))): GOSUB 34300 'SCORING SHOTS 42465 IMGTYP=108: DSP$=STR$(ASC(MID$(SCORDET$,YSAFTSHT,1))): GOSUB 34300 'SAFETY SHOTS

42470 IMGTYP=109: DSP$=STR$(ASC(MID$(SCORDET$,YSNKRSHT,1))): GOSUB 34300 'SNOOKERS 42480 GOTO 42097 42500 ' 42510 GOSUB 32052 'OFF WITH TIMES OF CURRENT FRAME ETC 42545 PLAYNO=((KYY+1) AND 1)+1:OPPNO=3-PLAYNO 42550 REKNO=NOFIELDS*IFR-NOFIELDS+PLAYNO*3 'WHICH FRAME/PLAYER 42552 REKNOPP=NOFIELDS*IFR-NOFIELDS+OPPNO*3 'WHICH FRAME/PLAYER 42555 GET #2,REKNO 42599 RETURN 42600 ' 42611 ' 42612 ' HEADH 2 HEADS 42613 ' PREPARE 42614 GOSUB 29900 'NEXT PAGE 42615 IMGTYP=110: CALL SET.WORK.SCREEN(IWKPAGE-1):IF CLSS$(IMGTYP)="O" THEN CALL CLEAR.SCREEN(SLCOLCL) 42616 OPEN "\SNK\HEADSNO.TXT" FOR INPUT AS #7:LINE INPUT #7, FREC$: CLOSE #7 'GET DATA 42617 IMGTYP=110: DSP$=TEXTNOV$(83): GOSUB 34300 'FIRST MEETING 42618 IMGTYP=111: DSP$=MID$(FREC$,OFFSET(IMGTYP),PROF(IMGTYP)): GOSUB 34300 42619 IMGTYP=112: DSP$=NAME1$:GOSUB 34300 42620 IMGTYP=113: DSP$=NAME2$:GOSUB 34300 42630 IMGTYP=114: DSP$=TEXTNOV$(84): GOSUB 34300 'MATCHES WON 42635 IMGTYP=115: DSP$=TEXTNOV$(85): GOSUB 34300 'FRAMES WON 42640 IMGTYP=116: DSP$=STR$(VAL(MID$(FREC$,OFFSET(IMGTYP),PROF(IMGTYP)))): GOSUB 34300 42645 IMGTYP=117: DSP$=STR$(VAL(MID$(FREC$,OFFSET(IMGTYP),PROF(IMGTYP)))): GOSUB 34300 42650 IMGTYP=118: DSP$=STR$(VAL(MID$(FREC$,OFFSET(IMGTYP),PROF(IMGTYP)))): GOSUB 34300 42655 IMGTYP=119: DSP$=STR$(VAL(MID$(FREC$,OFFSET(IMGTYP),PROF(IMGTYP)))): GOSUB 34300 42699 GOTO 42097 43000 ' 43010 IMGTYP=80: IF CLSS$(IMGTYP)=" " THEN RETURN 43020 ' PREPARE FOUL SHOT TEXT 43025 IDZ=(NOSTRIKE-1)\2: 43030 IF IDZ=1 THEN DSPSHOT$=NAME1$ ELSE DSPSHOT$=NAME2$ 43035 IF IDZ=1 THEN DSPSCOR$=NAME2$ ELSE DSPSCOR$=NAME1$ 43040 DSPSHOT$=DSPSHOT$+" "+TEXTNOV$(52) 43045 DSPSCOR$=DSPSCOR$+" "+K$+" "+TEXTNOV$(53) 43099 RETURN

_

Scoring Art – Software Listings Stephen Parry – July 2011

Page 20 of 79

GENRSNO.txt 001EVENT TITLE O3 1 104802200 txt21PLUS UNDERLINE 002MATCH SCORE TITLE 3 1 105702200 txt59PLUS UNDERLINE 003NAME1 N2 1 106602200 004NAME2 W2 1 107502200 005FRAMES_SKOR_NAME1 1 12746612220 006FRAMES_SKOR_NAME2 1 11747512220 007POINTS_NAME1 2 11000022550 NOT FOR SKY 008POINTS_NAME2 2 11000022550 009AT TABLE * 1 1 11050512550 is txt 55 010AT TABLE * 2 1 12051112550 011TITLE O7 1 300512200 012POINTS_LEFT 6 071602200 013NAME1_BALLS 3 086001430 014NAME2_BALLS 3 087201430 015BACKGND/LINES PER 360 016RESULTS O 12 146412200 017FRAMES_NAME1 + balls 1 120565136 0 018FRAMES_NAME2 + balls 1 110577136 0 019MATCH TYPE 3 1 454802200 txt76PLUS UNDERLINE 020POINTS_NAME1 +balls 2 112558120 0 021POINTS_NAME2 +balls 2 112570120 0 022"FRAMES" +balls 1 4 1265043 0 023FRAMES +balls 1 4 1277043 0 024FRAMES_NAME1 + BALLS 1 322265143 0 025FRAMES_NAME2 + BALLS 1 312277143 0 026CONTINUOUS SCORE NM O 16 070402200 027FRAMES_NAME CONT 1 62100412220 028POINTS_NAME CONT 2 61150412550 029"FRAMES" TEXT O1 6 180502220 not used T17 030OFFSET NAME1/NAM L/R 1 6 0006043 0 LEFT TO RIGHT 031OFFSET NAME1/NAM T/B 1 6 0000043 0 TOP TO BOTTOM 033BREAK text 1 086001430 TEXT 30 034"BREAK" score 1 1 1288143 0 035BALLS OF BREAK O 12 158212200 036COUNTRYNAME1 2 61606602220 037COUNTRYNAME2 2 61607502220 038BALLS OF BREAK R 2L O 12 838212200 039PSI COPYRIGHT 14 501011430 040OFFSET BK/SCORE 1 1 0004043 0 LEFT TO RIGHT 041OFFSET BK/SCORE R2L 1 1 -904043 0 RIGHT TO LEFT 042BALLS OF BREAK O 32 078212200 043BALLS OF BREAK R 2L O 12 848212200 old 043BALLS OF BREAK O 12 168212200 044OFFSET BK/SCORE 1 1 050402552 LEFT TO RIGHT 045OFFSET BK/SCORE R2L 1 1 -106243 2 RIGHT TO LEFT 045OFFSET BK/SCORE 1 1 050402552 LEFT TO RIGHT, 046NAME, in BREAK 11 00-902552 was 0572

0 0

0735222F8

0 0

0735222F8

0 0 0 0 0

0 N0 220F8 0 N0 220F8 0 5 0 F8 0 5 0 F8 0

0 0 0 0 O02-760 F2

*

0 0 0 0 0 0 0 0 0 0

0 O02-760 F2 0 5008105F3/4 0 11516220F2 txt22 0 0303 0 0303220 0 0 0 1203140 0 5 0 0 5 0 0 0735222F8

0 0 0 0 0 0 0 0 0 0

0 0 0 1512255 0 1512255 0 5 0 0 5 0 0 1203220F2 0 5 0 F2 0 F2 0 O1512255F2

0 0

1512255F2

0 0

1512255F2

0 0

0303

0 0 0 0 0 0 0

1512255F6 1225140F6 F8 F8 1225140 1203140 05-2255

0 0 0 0 0 0 0

F6

0 0

-8-2255

0 0 0 0

0525182 0525140

0 0 3 3

0525140 07-2255

3 3

-3-2255

3 3

07-2255

3 3

0525140

047OFFSET BALL VALUE 1 CENTRE INTO BA 048FRAME TIME 049MATCH TIME 050 leave see STATSNO 069 blank STATSNO 070BREAK TIME 071INFO Title 3 F3/5/7/9 UNDERLINE 072NAME of INFO1 073INFO1 074CUMINFO1 075NAME of INFO2 076INFO2 077CUMINFO2 O 078TEXT, FRAME TEXT 50 079TEXT, MATCH TEXT 51 080FOUL SHOT O PRESENT 081FOUL POINTS for OPPOO 082"FREE BALL" O 083POINTS TEXT O1 TEXT 56 not used 084POINTS_LEFT(DIFF) P1O 085POINTS_LEFT(DIFF) P2O 086TEXT, BEST of TEXT 57/58 091TITLE FRAME SUMMARY O3 TEXT 70+CURFR 092NAME TITLE 1 093NAME TITLE 2 094NAME of INFO1 TEXT 71 095NAME of INFO2 TEXT 72 096NAME of INFO3 TEXT 73 097NAME of INFO4 TEXT 74 098NAME of INFO5 TEXT 75 100PLAYER1 INFO1 101PLAYER1 INFO2 102PLAYER1 INFO3 103PLAYER1 INFO4 104PLAYER1 INFO5 105PLAYER2 INFO1 106PLAYER2 INFO2 107PLAYER2 INFO3 108PLAYER2 INFO4 109PLAYER2 INFO5 110First Meeting O HEAD 2 HEAD 111MEETING INFO 112NAME TITLE 1 113NAME TITLE 2 114Matches Won 115Frames Won 116PLAYER1 INFO1 117PLAYER2 INFO1 118PLAYER1 INFO2 119PLAYER2 INFO2

Scoring Art – Software Listings Stephen Parry – July 2011

4 010002550 0 0

07-2255

1 532002200 0 0 1 532502200 0 0

0303 0303

I H see

STATSNO.txt

1 533002200 0 0 0303 N 1 106002200 0 0 O0735222Ctl 1 1 1 1 1 1 1

107502550 217522200 417522200 108502550 218522200 418522200 106802200

0 0 0 0 0 0 0

0 0 0 0 0 0 0

0303 0303 0303 0303 0303 0303 0303

1 306802200 0 0

0303

1 488312200 0 0

0303

" " " " " " " " when F2

1 488912200 0 0 0303 " 1 488312200 0 0 0303 " 1 230502550 0 0 O1512255F2 6 220412200 0 0 12516220F2 6 221012200 0 0 12516220F2 1 508412200 0 0 0303 F8 1 105102200 0 0 O0703222Ctl F9 1 405912200 0 0 1 705912200 0 0 1 106602200 0 0

0303 0303 0303

" " "

1 107202200 0 0

0303

"

1 107802200 0 0

0303

"

1 108402200 0 0

0303

"

1 109002200 0 0

0303

"

1 1 1 1 1 1 1 1 1 1 1

406612550 407212550 407812550 408412550 409012550 706612550 707212550 707812550 708412550 709012550 506412200

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0303 " 0303 " 0303 " 0303 " 0303 " 0303 " 0303 " 0303 " 0303 " 0303 " 0104222Ctl F4

1 1 1 1 1 1 1 1 1

507012550 266812200 746812200 507612200 508212200 287612550 727612550 288212550 728212550

0 0 0 0 0 0 0 0 0

0 O0104222 " 0 0303 " 0 0303 " 0 0303 " 0 0303 " 0 0504 " 0 0904 " 0 1304 " 0 1704 "

1TITLE O 2ROTHMAN'S STATS 3Age 4Pro since 5World Ranking 61990-91 Prize Money 71990-91 Prize Money 8Titles 9 10 11 12 13 14

11450512200 0 0 N 1 1 11456012200 0 0 1 1 66152702200 0 0 N052725576 2 66402702200 0 0 N222725586 4 1 66303502200 0 0 053525590 3 2 66404202200 0 0 054225596 15 2 66404202200 0 0 054225596 15 2 66175002200 0 0 055025511145 66057002200 0 0 O055725515645 66057702200 0 0 056525520145 66058402200 0 0 057325524645 66059102200 0 0 058125529145 76051102200 0 0 O051525529 25 66052002200 0 0 O058525526 3

PARSNO.txt 1 2 3 4 5 6 7

1 2 3 4 5 6 7 8 9 A B C 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 3 0 0 0 0 A 4 5 0 0 B 0 0 0 0 6 0 0 0 A 0 0 1 4 0 0 0 0 0 9 0 0 B 0 C 0 0 2 0 D 5 0 A 0 0 1 4 0 0 0 0 0 9 0 B 0 0 0 C D 2 0 0 0 T/ Trace/Phone 100=Toss(Mins) 10000=Msg Gen During over limits Day=X Time= 50 Score= 60 During break limits Day=X Time= 30 Score= 10

FONTSNO.txt 1SWBC40 2SWBC40 3SWBC20 4SWBC20 5SWBC20 6SWBC35 7SWBC50

FICHSNO.txt 10EURRED 11EURYEL 12EURGRE 13EURBRO 14EURBLU 15EURPIN 16EURBLA

510 1010 1510 2010 2510 3010 3510

Page 21 of 79

TEXTSNO.txt 164 2 3 4 540 640 740 820 95 10 5 11 5 12 5 13 5 1415 15 5 17 1830 19 20 21 22 23 5 24 5 25 5 26 5 27 5 28 5 3040 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 70 71 72 73 74 75

(Bk) (M) (S) (Sn) F/S F/B

Draw Size COM1:9600,N,8,1,CS,DS Copyright SportInfo 1990 fram Start Time : Finish Time : Elapsed Time : COMPUTER MATCH SHEET - Sky 1990 Date Round Frame No. Players:... vs... Match Score frames to Fr: Break FRAMES POINTS 1991 SKY Masters Pts left EE = Br(E)ak MM = Miss AA = s(A)fe SS = Snooker FF = Foul Shot BB = Free Ball HPS Sports Scoring 3 1st Round 2nd Round 3rd Round Quarter Final Semi final Final Frame Time mins. SKY GRAND PRIX 1991 SKY MASTERS Match Time mins. Break Time mins. Time at Table STRIKE RATE SAFETY SUCCESS , Highest Break - Frame no. Frame Match Foul Shot Points Free Ball * Pts: (Best of Frames) MATCH SCORE SNOOKER ESCAPE RATE FRAME Score Scoring Shots Misses Safety Shots Snookers

76 78MS 79LS 80MD 81LD 82XD 83 84 85

1991 Masters Men's Singles Ladies' Singles Men's Doubles Ladies' Doubles Mixed Doubles First Meeting Matches Won Frames Won

COUNSNO.txt AFGAfg AHON-Ant ALBAlb ALGAlg ANDAno ANGAng ANTAnt ARGArg ARUAruba ASAAsa AUSAus AUTAut BAHBah BANBan BARBar BELBel BENBen BERBer BHUBhu BIRBur BIZBiz BOLBol BOTBot BRABra BRNBrn BRUBru BULBul BURBFaso CAFCAF CANCan CAYCay CGOCon CHAChad CHIChile CHNChina CIVICO CMRCam COKCIsls COLCol CRCCRC CUBCuba CYPCyp DENDen DJIDji DOMDom ECUEcu EGYEgy ENGEng ESAESA ESPSpain ETHEth FIJFiji FINFin

Scoring Art – Software Listings Stephen Parry – July 2011

Afghanistan Netherlands Antilles Albania Algeria Andorra Angola Antigua Argentina Aruba American Somoa Australia Austria Bahamas Bangladesh Barbados Belgium Benin Bermuda Bhutan Burma Belize Bolivia Botswana Brazil Bahrain Brunei Bulgaria Burkina Faso Central African Canada Cayman Islands Congo Chad Chile People's Republic of China Ivory Coast Cameroon Cook Islands Colombia Costa Rica Cuba Cyprus Denmark Djibouti Dominican Republic Ecuador Egypt England El Salvador Spain Ethiopia Fiji Finland

FRAFra FRGWG GABGab GAMGam GBRGB GDREG GEQEQG GHAGhana GREGre GRNGrn GUAGua GUIGui GUM GUYGuy HAIHai HKGHKG HOLHol HONHon HUNHun INAIno INDInd IOMIom IRLIrl IRNIran IRQIraq ISLIce ISRIsr ISVVir ITAItaly IVBBVir JAMJam JORJor JPNJap KENKen KORSKor KSASau KUWKuw LAOLao LBALibya LBRLBR LESLes LIBLibya LIELie LUXLux MADMad MALMal MARMor MAWMal MDV MEXMex MGLMon MLIMali MLTMLT MONMon MOZMoz MRIMau MTNMaa NCANic NEPNep NGRNig NGUPNG NIGNiger NIRNIre NORNor NZLNZ

France Federal Republic of Germany Gabon Gambia Great Britain German Democratic Republic Equatorial Guinea Ghana Greece Grenada Guatemala Guinea Guam Guyana Haiti Hong Kong Netherlands Honduras Hungary Indonesia India Isle of Man Republic of Ireland Iran Iraq Iceland Israel Virgin Islands Italy British Virgin Islands Jamaica Jordan Japan Kenya South Korea Saudi Arabia Kuwait Laos Libya Liberia Lesotho Libya Liechtenstein Luxembourg Madagascar Malaysia Morocco Malawi Falkland Islands Mexico Mongolia Mali Malta Monaco Mozambique Mauritius Mauritania Nicaragua Nepal Nigeria Papua New Guinea Niger Northern Ireland Norway New Zealand

Etc

Page 22 of 79

NAMESNO.txt BALER BALES R.B.ENGROGER BALES ROGER 15-8-48 42 198471 61 œ5,477 Never passed 4th round BALER1BALES ROGER V Terry Griffiths First meeting BALES BALES R.B.ENGROGER BALES ROGER 100115/08/4842 1984 70 61 BEARJ BEAR J.B.CANJIM BEAR JIM 100221/01/401983 1983119 88 BENNM BENNETT M.B.WALMARK BENNETT MARK 100323/09/6327 1986 34 47œ31,065 Never passed 4th BENNM1BENNETT MARK 1986 Lost 1-5 1st Round British Open 1988 Lost 4-9 5th Round U.k. Open BONDN BOND N.B.ENGNIGEL BOND NIGEL 100415/11/6524 1989 39 0œ31,390 Never Passed 4th Round BONDN1BOND ENG 24 NIGEL BOND NIGEL 00 15-11-6524 198939 0 œ31,390 V Steve Davis 1990 Won 5-3 Prelim.Round Asian Open BRADM BRADLEY M.B.ENGMALCOLM BRADLEY MALCOLM 100508/07/481984 1984107 87 BROWP BROWNE P.B.IREPADDY BROWNE PADDY 100601/04/6525 1983 54 44œ13,946 Never passed 5th Round BROWP1BROWNE PADDY 1985 Lost 2-5 1ST Round Mercantile Classic BRUMI BRUMBY I.B.ENGIAN BRUMBY IAN 100717/09/641989 1989 84 0 CAHPR CAHPERON R.C.CANROBERT CAHPERON ROBERT 101318/05/581983 1983 26 29 CAIRA CAIRNS A.C.ENGANDREW CAIRNS ANDREW 100812/07/681989 1989 81 0 CAMPD CAMPBELL D.C.SCODUNCAN CAMPBELL DUNCAN 100924/09/661989 1989109 0 CAMPJ CAMPBELL J.C.AUSJOHN CAMPBELL JOHN 101010/04/5337 1982 48 42œ20,562 Never passed 5th Round CAMPJ1CAMPBELL JOHN 1990 3rd Round W.O. CAMPJ2CAMPBELL JOHN CAMPS CAMPBELL S.C.ENGSTEVE CAMPBELL STEVE 101107/03/661988 1988 92 98 CHAMJ CHAMBERS J.C.ENGJIM CHAMBERS JIM 101207/02/5733 1987 59 60œ16,455 Never passed 4th Round CHAMJ1CHAMBERS JIM V DANNY FOWLER First meeting CHAPB CHAPERON B.C.CANBOB CHAPERON BOB 18-5-58 32 198326 29 œ111,249 Never passed Quarter-Finals CHAPB1CHAPERON BOB V Kirk Stevens 1984 Lost 3-5 1st Round Rothmans Grand Prix 1984 Lost 7-9 1st Round U.K. Open 1985 Won 5-3 3rd Round Matchroom Trophy CHAPT CHAPPEL T.C.WALTONY CHAPPEL TONY 101428/05/601984 1984 44 41 CHARE CHARLTON E.C.AUSEDDIE CHARLTON EDDIE 101531/10/2958 1960 32 22œ29,014 Twice Finalist 1973 and 1975 Never passed 5th Round v PAUL GIBSON First meeting CHARE1CHARLTON E.C.AUSEDDIE CHARLTON EDDIE 31-10-2958 196032 22 œ29,014 V Paul Gibson Debut Match CLARM CLARK M.C.ENGMARTIN CLARK MARTIN 101627/10/6821 1987 12 17œ44,953 Never Passed 4th Round CLARM1CLARK MARTIN V Jason Smith First meeting COOKC COOKSON C.C. CRIPG CRIPSEY G.C.ENGGRAHAM CRIPSEY GRAHAM 101708/12/541982 1982 88 51 DARRM DARRINGTON M.D.ENGMIKE DARRINGTON MIKE 101813/09/311982 1982120102 DAVIF DAVIS F.D.ENGFRED DAVIS FRED 101914/08/131930 1930128 89 DAVIS DAVIS S.D.ENGSTEVE DAVIS STEVE 102022/08/5733 1978 2 1œ322,000 Winner Six Times Rothmans Winner 1985\88\89. DAVISDDAVIS/MOUNTJOYXSSSSENGSTEVE DAVIS/DOUG MOUNTJOYSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS11111111111111111111111111111111111111111111122222222222222222222222222222222222222 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 DODDL DODD L.D.ENGLES DODD LES 102111/02/541982 1982 46 65 DONNJ DONNELLY J.D.SCOJIM DONNELLY JIM 102213/06/461981 1981114 84 DRAGT DRAGO T.D.MLTTONY DRAGO TONY 102322/09/6525 1985 31 32œ31,727 Quarter Finals Never passed 5th Round v ERIC LAWLOR First meeting DRAGT1DRAGO T MAL TONY V Eric Lawlor Debut Match DUGGS DUGGAN S.D.ENGSTEVE DUGGAN STEVE 102410/04/581983 1983 42 43 DUNNJ DUNNING J.D.ENGJOHN DUNNING JOHN 102518/04/271970 1970117 95 DYSON DYSON N.D.ENGNICK DYSON NICK 102619/12/6920 1989 65 0œ6,337 Never passed 1st Round EDMOR EDMONDS R.E.ENGRAY EDMONDS RAY 102728/05/361978 1978 73 49 EDWAC EDWARDS C.E.ENGCRAIG EDWARDS CRAIG 102823/12/681988 1988 62 69 ELLIF ELLIS F.E.SAFFRANCOIS ELLIS FRANCOIS 102911/09/591983 1983106105

Scoring Art – Software Listings Stephen Parry – July 2011

Page 23 of 79

TENNIS VOICE MACHINE 1 'SAVE"RGCOS.BAS",A '*** MONDAY 25 MAY 1987 1 'SAVE"AUCOS.BAS",A '*** MONDAY 25 SEP 1988 1 'SAVE"auscos9a.BAS",A '*** satURday 13 january 1991 2 CLEAR:KEY OFF:DEFINT A-Z:CLS:PRINT "MEMOIRE INITIALE :";FRE(X) 3 NBLANG=1 4 WIM=1 5 ' 6 NOIR=0:BLEU=1:VERT=2:CYAN=3:ROUGEFONCE=4:MAGENTA=5:BRUN=6:BLANC=7 7 GRIS=8:BLEUCLAIR=9:VERTCLAIR=10:CYANCLAIR=11:ROUGE=12:ROSE=13:JAUNE= 14:BLANCINT=15 8 SAM=0:NBSUI=15:NIVSIL=16 9 NSETPOS=52:SVTIEPOS=51:CGPPOS=21:STPOS=11:CUMSETPOS=9 10 DIM SET1(10),SET2(10),ST1$(5),ST2$(5) 11 DIM MATSUI$(NBSUI),N1SUI$(NBSUI),M1SUI$(NBSUI) 12 DIM N2SUI$(NBSUI),M2SUI$(NBSUI),N3SUI$(NBSUI),M3SUI$(NBSUI) 13 DIM N4SUI$(NBSUI),M4SUI$(NBSUI) 14 DIM SCORE$(NBSUI),LANGUE$(NBSUI),X$(NBSUI),XF9$(NBSUI) 15 DATA one,two,three,four,five,six,seven,eight,F,GB,D,S,E,J,I,NL 16 NBLANGMAX=8 'NOMBRE DE LANGUES MAXI=8 17 DIM NB$(NBLANGMAX),LANG$(NBLANGMAX),JSUI(NBLANGMAX),GGEN1(NBLANGMAX),GGE N2(NBLANGMAX),GGEN3(NBLANGMAX),GGEN4(NBLANGMAX),GFIN(NBLANGMAX) 'MAXI 8 LANGUES 18 ' 19 FOR ILANG=1 TO NBLANGMAX:READ NB$(ILANG):NEXT ILANG 20 FOR ILANG=1 TO NBLANG:READ LANG$(ILANG):NEXT ILANG 21 ' 22 RACLEN=16368 23 SPEED=2: CLOZED=1 :NEXTMESS=1:MESSNEED=1:STATMAT=1:NEXTMESG=1 'MESSAGE NEEDED FOR COSETTE 24 ON ERROR GOTO 50075 30 GOSUB 10000 'INITIALISATIONS 35 GOSUB 12000 'LECTURE SELJOUR (MATCHES,JOUEURS,SCORES,LANGUES) 40 'AUSFRIGGOSUB 54000 'OUVERTURE COSETTE 42 GOSUB 13000 'ENVOI MESSAGES BIDON SUR LES N LIGNES (SILENCES 0525) 50 GOSUB 40000 'OUVERTURE PARRY 100 CLAVIER=0 'FLAGS POUR SAVOIR OU RETOURNER IF INKEY$ 110 'ON REBOUCLE TOUJOURS ICI 111 LOCATE 23,58:COLOR JAUNE+16,BLEU:PRINT "_"; 113 GOSUB 30000 'QQC FROM PARRY ?? 114 'AUSFRIGGOSUB 20000 'QQC FROM COSETTE ?? 115 INK$=INKEY$:L=LEN(INK$):IF L=0 THEN 113 'QQC FROM CLAVIER ?? 116 LOCATE 25,50:COLOR NOIR,CYAN:PRINT SPACE$(17); 'RAZ MSG ERREUR 118 IF ASC(INK$)1 THEN PRINT " "; ELSE PRINT " "; 10040 LOCATE 2,2:COLOR NOIR,ROUGE:PRINT "MATCH"; 10045 LOCATE 3,3:COLOR NOIR,ROUGE:PRINT "ID"; 10050 LOCATE 3,8:PRINT "------- PLAYER NAMES -----"; 10055 LOCATE 3,35:PRINT "-----------SCORE------------"; 10060 LOCATE 3,64:PRINT "-----LANGUA";:IF NBLANG>1 THEN PRINT "GE--"; ELSE PRINT "GE---"; 10062 COLOR ROUGE,NOIR:FOR ILANG=1 TO NBLANG:LOCATE 2,64+(ILANG1)*2:PRINT LANG$(ILANG);:NEXT ILANG 10100 LOCATE 4,1:COLOR BLEUCLAIR,NOIR:PRINT "GENERAL 1"; 10110 LOCATE 5,1:COLOR BLEUCLAIR,NOIR:PRINT "GENERAL 2"; 10120 LOCATE 4,41:COLOR BLEUCLAIR,NOIR:PRINT "GENERAL 3"; 10130 LOCATE 5,41:COLOR BLEUCLAIR,NOIR:PRINT "GENERAL 4"; 10210 LOCATE 21,2:COLOR JAUNE,NOIR 10220 PRINT "(A)uto select (D)eselect match "; 10230 LOCATE 22,2

Page 24 of 79

10240 PRINT "(G)eneral messages (S)core manual (M)atch Manual "; 10250 LOCATE 23,2 10260 PRINT "(?)Memory size (F)inish program "; 10300 LOCATE 23,50:COLOR BLANCINT,NOIR:PRINT "Choice??"; 10310 LOCATE 23,58:COLOR JAUNE+16,BLEU:PRINT "_"; 10980 COLOR JAUNE,CYAN 10985 PLUIE=0:RECF2=0:RECF6=0:NUIT=0:CRESEL=0 10986 GOSUB 49600 'PLUIE NUIT SUR ECRAN 10990 RETURN 11000 ' 11001 'VISUALISATION HEURE 11002 ' 11003 DAT$=DATE$:DAT$=LEFT$(DAT$,2)+"."+MID$(DAT$,4,2)+"."+MID$(DAT$,9,2) 11004 DAT$=DATE$:DAT$=LEFT$(DAT$,6)+RIGHT$(DAT$,2) 11005 LOCATE 1,2:COLOR JAUNE,NOIR:PRINT " ";DAT$;" ";TIME$;" "; 11030 RETURN 11031 ' 12000 ' 12005 ' LECTURE SELJOUR 12006 SCORE$(0)=SPACE$(28):LANGUE$(0)=SPACE$(16) 12008 LD=5 12010 OPEN "R",#2,"SELJOUR",200 12015 FIELD #2,5 AS MATCH$,20 AS NM1$,4 AS MG1$,20 AS NM2$,4 AS MG2$,20 AS NM3$,4 AS MG3$,20 AS NM4$,4 AS MG4$,28 AS SCOR$,16 AS LANGU$,55 AS YF9$ 12017 MSUI=0 12020 GET #2 12025 IF EOF(2) THEN 12990 12026 IF MATCH$=SPACE$(5) THEN 12020 12027 IF MATCH$="FFFFF" THEN 12990 12028 MSUI=MSUI+1 12029 IF MSUI>NBSUI THEN 12990 12030 MATSUI$(MSUI)=MATCH$:N1SUI$(MSUI)=NM1$:M1SUI$(MSUI)=MG1$ 12031 N2SUI$(MSUI)=NM2$:M2SUI$(MSUI)=MG2$ 12032 N2SUI$(MSUI)=NM2$:M2SUI$(MSUI)=MG2$ 12033 N3SUI$(MSUI)=NM3$:M3SUI$(MSUI)=MG3$ 12034 N4SUI$(MSUI)=NM4$:M4SUI$(MSUI)=MG4$ 12035 AA$=NM1$ 12040 IF (WIM=0 AND MID$(MATCH$,1,1)="S") OR (WIM=1 AND MID$(MATCH$,2,1)="S") THEN 12055 12045 AA$=AA$+"-"+NM2$+"/"+NM3$+"-"+NM4$ 'cas des doubles 12050 GOTO 12060 12055 AA$=AA$+"/"+NM2$ 'cas des simples 12060 'suppression des blancs inutiles 12065 BB$="" 12070 L=LEN(AA$) 12075 FOR I=1 TO L 12080 IF MID$(AA$,I,1)" " THEN BB$=BB$+MID$(AA$,I,1) 12085 NEXT I 12090 AA$=MATCH$+" "+BB$

Scoring Art – Stephen Parry – July 2011

12095 SCORE$(MSUI)=SCOR$ 12100 LANGUE$(MSUI)=LANGU$ 12102 XF9$(MSUI)=YF9$ 12104 A$=YF9$:ISUI=MSUI:GOSUB 42000 12105 LSUI=MSUI:GOSUB 60740 'POSITIONNEMENT LIGNE LD ET AFFICHAGE ECRAN 12110 GOTO 12020 'RE LECTURE FICHIER SELJOUR 12990 NSUI=MSUI:CLOSE #2:RETURN 13000 ' 13010 'ENVOI SILENCES ... MESSAGES BIDON pour initialiser sur les LIGNES 13020 FOR ILANG=1 TO NBLANG 13030 JSUI(ILANG)=0 'RAZ POINTEUR LANGUE MESSAGE 13040 X$(JSUI(ILANG))="0525":NM=1 13050 ISUI=0:JLANG=ILANG:Y$=X$(ISUI) 13060 GOSUB 53000 'ENVOI MESSAGE APRES MISE EN FORME 81 HEXA ETC 13070 NEXT ILANG 13985 ' 13990 RETURN 13995 ' 14000 ' 14010 IF TR$=" " THEN TR$="T" ELSE TR$=" " 14020 RETURN 14099 ' 15000 ' 15001 ' MESSAGES GENERAUX (GESTION des ..) 15002 ' 15005 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "GENERAL MESSAGE 1 (0 a 9) ?"; 15010 CLAVIER=3:RETURN 15015 'ICI ON ARRIVE AVEC CLAVIER=3 : 15020 JGEN$=INK$ 15025 IF JGEN$"9" THEN 15200 'HORROR 15030 JGEN1=VAL(JGEN$):IF JGEN1 0 THEN JGEN1=JGEN1+700 15035 GOSUB 61100 'AFFICHAGE GENERAL MESSAGE 1 15040 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "GENERAL MESSAGE 2 (0 a 9) ?"; 15045 CLAVIER=4:RETURN 15050 'ICI ON ARRIVE AVEC CLAVIER=4 : 15055 JGEN$=INK$ 15060 IF JGEN$"9" THEN 15200 'HORROR 15065 JGEN2=VAL(JGEN$):IF JGEN2 0 THEN JGEN2=JGEN2+700 15070 GOSUB 61200 'AFFICHAGE GENERAL MESSAGE 2 15102 ' 15105 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "GENERAL MESSAGE 3 (0 a 9) ?"; 15110 CLAVIER=5:RETURN 15115 'ICI ON ARRIVE AVEC CLAVIER=5 : 15120 JGEN$=INK$ 15125 IF JGEN$"9" THEN 15200 'HORROR 15130 JGEN3=VAL(JGEN$):IF JGEN3 0 THEN JGEN3=JGEN3+700 15135 GOSUB 61300 'AFFICHAGE GENERAL MESSAGE 3

Page 25 of 79

15140 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "GENERAL MESSAGE 4 (0 a 9) ?"; 15145 CLAVIER=6:RETURN 15150 'ICI ON ARRIVE AVEC CLAVIER=6 : 15155 JGEN$=INK$ 15160 IF JGEN$"9" THEN 15200 'HORROR 15165 JGEN4=VAL(JGEN$):IF JGEN4 0 THEN JGEN4=JGEN4+700 15170 GOSUB 61400 'AFFICHAGE GENERAL MESSAGE 4 15175 CLAVIER=0 15180 LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(78); 15185 RETURN 15190 ' 15200 'ERREUR DE SAISIE SUR NUMERO DE GENERAL MESSAGE 15205 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "ERROR GENERAL No.; 15215 RETURN 16000 ' 16001 ' MATCH MANUEL (Introduction manuelle d'un match) 16002 ' 16005 'RECHERCHE PLACE VIDE 16007 FLAGNSUI=0 16010 FOR PSUI=1 TO NSUI 16015 IF MATSUI$(PSUI)=SPACE$(5) THEN 16100 'OK TROUVE PLACE LIBRE 16020 NEXT PSUI 16025 'PAS DE PLACE LIBRE AU MILIEU .. Y EN A T IL DERRIERE ?: 16030 IF NSUI MSG ERREUR 16040 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "NO MORE ROOM "; 16045 RETURN 16080 'ON RAJOUTE UNE LIGNE : 16085 NSUI=NSUI+1:PSUI=NSUI:FLAGNSUI=1 16090 GOTO 16100 16100 'PLACE TROUVEE OU AJOUTEE .. PRET A SAISIR NUMERO MATCH 16110 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "Match to select ?"; 16115 XMA$="":CLAVIER=8:RETURN 16120 'RETOUR ICI AVEC CLAVIER=8 : 16125 XMA$=XMA$+INK$ 16130 LOCATE 25,30:COLOR JAUNE,NOIR:PRINT XMA$; 16135 IF LEN(XMA$)5 THEN RETURN 16140 'ICI RECHERCHE SI MATCH EXISTE : 16145 OPEN "R",#3,"matchjou",101 16150 FIELD #3,5 AS YYMATCHID$,20 AS YYNOM1$,4 AS YYMSG1$,20 AS YYNOM2$,4 AS YYMSG2$,20 AS YYNOM3$,4 AS YYMSG3$,20 AS YYNOM4$,4 AS YYMSG4$ 16155 'LECTURE FICHIER MATCHJOU EN SEQUENTIEL 16160 GET #3 16165 IF EOF(3) THEN 16300 'PAS TROUVE ---> ERREUR 16170 IF XMA$=YYMATCHID$ THEN 16400 'TROUVE --> OK 16175 'REBCL LECTURE MATCHJOU 16180 GOTO 16155 16300 'PAS TROUVE DONC ERREUR : 16302 CLOSE #3 'FERMETURE FICHIER MATCHJOU 16305 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "MATCH UNKNOWN";

Scoring Art – Stephen Parry – July 2011

16310 'ON VA DONC REPARTIR : SI ON AJOUTE 1 A NSUI IL FAUT LE RETIRER 16315 IF FLAGNSUI=1 THEN NSUI=NSUI-1 16320 CLAVIER=0 16330 RETURN 16400 'TROUVE DONC IL FAUT INITIALISER TOUTES LES ZONES : 16405 MATSUI$(PSUI)=YYMATCHID$:N1SUI$(PSUI)=YYNOM1$:M1SUI$(PSUI)=YYMSG1$ 16410 N2SUI$(PSUI)=YYNOM2$:M2SUI$(PSUI)=YYMSG2$ 16415 N3SUI$(PSUI)=YYNOM3$:M3SUI$(PSUI)=YYMSG3$ 16420 N4SUI$(PSUI)=YYNOM4$:M4SUI$(PSUI)=YYMSG4$ 16425 AA$=YYNOM1$ 16430 IF (WIM=0 AND MID$(YYMATCHID$,1,1)="S") OR (WIM=1 AND MID$(YYMATCHID$,2,1)="S") THEN 16445 16435 AA$=AA$+"-"+YYNOM2$+"/"+YYNOM3$+"-"+YYNOM4$ 'cas des doubles 16440 GOTO 16450 16445 AA$=AA$+"/"+YYNOM2$ 'cas des simples 16450 'suppression des blancs inutiles 16455 BB$="" 16460 L=LEN(AA$) 16465 FOR I=1 TO L 16470 IF MID$(AA$,I,1)" " THEN BB$=BB$+MID$(AA$,I,1) 16475 NEXT I 16480 AA$=YYMATCHID$+" "+BB$ 16485 LANGUE$(PSUI)=LANGUE$(0) 16490 SCORE$(PSUI)=SCORE$(0) 16495 FOR ILANG=1 TO NBLANG 16500 MID$(LANGUE$(PSUI),2*ILANG-1,1)="*" 16505 NEXT ILANG 16510 LSUI=PSUI:GOSUB 60740 'AFFICHAGE ECRAN 16520 CLOSE #3 16525 CLAVIER=0:LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(71); 16530 RETURN 17000 ' 17001 ' Red‚marrer une langue 17002 ' 17005 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "LANGUE (1 a ";NBLANG;") ?"; 17010 CLAVIER=2:RETURN 17015 'ICI ON ARRIVE AVEC CLAVIER=2 : 17020 JLAN$=INK$ 17025 IF JLAN$RIGHT$(STR$(NBLANG),1) THEN 17100 'HORROR 17030 JLANG=VAL(JLAN$) 17035 GOSUB 50525 'FORCAGE MESSAGE SUIVANT DANS LA LANGUE 17040 CLAVIER=0 17042 LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(78); 17045 RETURN 17050 ' 17100 'ERREUR DE SAISIE SUR NUMERO DE LANGUE : 17105 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "ERREUR NUM LANGUE"; 17110 RETURN 18000 ' 18001 ' D‚selectionner un Match

Page 26 of 79

18002 ' 18005 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "Match to deselect ?"; 18010 MA$="":CLAVIER=7:RETURN 18015 'ICI RETOUR AVEC CLAVIER=7 18020 MA$=MA$+INK$ 18025 LOCATE 25,30:COLOR JAUNE,NOIR:PRINT MA$; 18030 IF LEN(MA$)5 THEN RETURN 18035 'ICI MA$ COMPLET RECHERCHE pSUI CORRESPONDANT : 18040 LOCATE 25,40:PRINT "OK"; 18050 FOR PSUI=1 TO NSUI 18055 IF MA$=MATSUI$(PSUI) THEN 18070 18060 NEXT PSUI 18065 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "MATCH UNKNOWN";:CLAVIER=0:RETURN 18070 'MATCH RECONNU : ASK LANGUE : 18075 'LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(49); 'RAB LIGNE 25 18080 'OCATE 25,1:COLOR NOIR,CYAN:PRINT "LANGUE ?"; 18085 'CLAVIER=9:RETURN 18090 'ICI RETOUR AVEC CLAVIER=9 SAISIE LANGUE A DESELECTIONNER 18095 'JLAN$=INK$ 18100 'IF JLAN$RIGHT$(STR$(NBLANG),1) THEN 18200 'ERREUR LANGUE 18105 JLANG=1 'VAL(JLAN$) 18110 MID$(LANGUE$(PSUI),2*JLANG-1,1)=" " 'RAB LANGUE DEMANDEE 18120 IF LANGUE$(PSUI)=SPACE$(16) THEN 18670 'PLUS AUCUNE LANGUE :ON ANNULE TOUT 18125 'IL RESTE AU MOINS UNE LANGUE :C'EST FINI ON SORT : 18130 LD=PSUI+5:COLOR VERTCLAIR,NOIR:LOCATE LD,64:PRINT LANGUE$(PSUI);:GOTO 18900 18200 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "ERREUR NUM LANGUE";:RETURN 18670 'TOUTES LANGUES A BLANC : ON SUPPRIME LE MATCH 18675 MATSUI$(PSUI)=SPACE$(5) 18680 N1SUI$(PSUI)="":M1SUI$(PSUI)="" 18685 N2SUI$(PSUI)="":M2SUI$(PSUI)="" 18690 N3SUI$(PSUI)="":M3SUI$(PSUI)="" 18695 N4SUI$(PSUI)="":M4SUI$(PSUI)="" 18700 SCORE$(PSUI)=SPACE$(28):LANGUE$(PSUI)=SPACE$(16) 18705 XF9$(PSUI)=SPACE$(55) 18706 X$(PSUI)="" 18710 AA$=SPACE$(33) 18720 LSUI=PSUI 18730 GOSUB 60740 18900 CLAVIER=0:LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(49); 18990 RETURN 19000 ' 19001 ' Score manuel 19002 ' 19005 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "Match ID ?"; 19010 MA$="":CLAVIER=10:RETURN 19015 'ICI RETOUR AVEC CLAVIER=10 19020 MA$=MA$+INK$ 19025 LOCATE 25,30:COLOR JAUNE,NOIR:PRINT MA$;

Scoring Art – Stephen Parry – July 2011

19030 IF LEN(MA$)5 THEN RETURN 19035 'ICI MA$ COMPLET RECHERCHE pSUI CORRESPONDANT : 19040 LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(49); 19050 FOR PPSUI=1 TO NSUI 19055 IF MA$=MATSUI$(PPSUI) THEN 19070 19060 NEXT PPSUI 19065 LOCATE 25,50:COLOR ROUGE,NOIR:PRINT "MATCH UNKNOWN";:GOTO 19980 19070 'MATCH RECONNU : DEMANDER AUTRES RENSEIGNEMENTS : 19072 LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(49); 19075 LOCATE 25,1:COLOR NOIR,CYAN:PRINT "SETNO (1,2,3,4,5,6,7,8,9) ?"; 19080 NST$="":CLAVIER=11:RETURN 19085 'ICI RETOUR AVEC CLAVIER=11 (LECTURE DE SETNO) 19090 NST$=INK$ 19095 LOCATE 25,30:COLOR JAUNE,NOIR:PRINT NST$; 19100 IF NST$>="1" AND NST$="0" AND ST1$(ISET)5 THEN 19210 'SUITE DU TRAITEMENT APRES ISET A 5 19200 'SET SUIVANT 19205 GOTO 19114 19210 'SUITE :APRES LES 5 SETS : CALCUL CUM1 ET CUM2 ET GENERATION A$: 19212 CM1=0:CM2=0 19213 IF NST=1 THEN 19234 'gener 19215 IF NST>5 THEN 19220 'FINI OU ABANDON 19216 FOR ISET=1 TO NST-1 'CAS NORMAL MATCH EN COURS

Page 27 of 79

19217 IF VAL(ST1$(ISET))>VAL(ST2$(ISET)) THEN CM1=CM1+1 ELSE IF VAL(ST2$(ISET))>VAL(ST1$(ISET)) THEN CM2=CM2+1 19218 NEXT ISET 19219 GOTO 19234 'gener 19220 IF NST>7 THEN 19225 'CAS ABANDON 19221 FOR ISET=1 TO 5 'CAS FINI NORMALEMENT 19222 IF VAL(ST1$(ISET))>VAL(ST2$(ISET)) THEN CM1=CM1+1 ELSE IF VAL(ST2$(ISET))>VAL(ST1$(ISET)) THEN CM2=CM2+1 19223 NEXT ISET 19224 GOTO 19234 'gener 19225 FOR ISET=1 TO 5 'ABANDON : REPERAGE DERNIER SET JOUE 19226 IF VAL(ST1$(ISET))=0 AND VAL(ST2$(ISET))=0 THEN 19229 19227 IF VAL(ST1$(ISET))>VAL(ST2$(ISET)) THEN CM1=CM1+1 ELSE IF VAL(ST2$(ISET))>VAL(ST1$(ISET)) THEN CM2=CM2+1 19228 NEXT ISET 19229 ISET=ISET-1 'RETIRER LE DERNIER CUMULE COMPTE EN TROP : 19230 IF VAL(ST1$(ISET))>VAL(ST2$(ISET)) THEN CM1=CM1-1 ELSE IF VAL(ST2$(ISET))>VAL(ST1$(ISET)) THEN CM2=CM2-1 19234 'GENERATION PAQUET : 19235 PAQ$=F9$+CHR$(54)+CHR$(0)+MA$+CHR$(CM1)+CHR$(CM2) 19240 FOR ISET=1 TO 5 19245 PAQ$=PAQ$+CHR$(VAL(ST1$(ISET)))+CHR$(VAL(ST2$(ISET))) 19250 NEXT ISET 19255 FOR IIII=1 TO 15 19260 PAQ$=PAQ$+CHR$(0)+CHR$(0) 19265 NEXT IIII 19270 PAQ$=PAQ$+CHR$(&H10) 'SVDTIB .... PAS DE POINTS 19275 PAQ$=PAQ$+CHR$(NST) 'SETNO 19280 PAQ$=PAQ$+CHR$(0)+CHR$(0)+F0$ 19285 A$=PAQ$ 19290 ISUI=PPSUI:XF9$(ISUI)=A$:SCORE$(ISUI)=SCORE$(0) 19295 GOSUB 42000 19980 LOCATE 25,1:COLOR NOIR,CYAN:PRINT SPACE$(49);:CLAVIER=0 19990 RETURN 20000 ' 20001 'RECEPTION QQCHOSE FROM COSETTE (C$ ET D$) 20002 ' 20010 'GOSUB 11005 'HEURE 20015 GOSUB 50200 'ATTEND QQC FROM COSETTE 20080 RETURN 30000 ' 30001 'RECEPTION QQCHOSE FROM PARRY (A$ ET B$) 30002 ' 30010 'GOSUB 11005 'HEURE 30015 GOSUB 40200 'ATTEND QQC FROM PARRY 30080 RETURN 40000 ' 40002 'OUVERTURE PARRY COM2 40005 ' 40010 OPEN "com1:1200,N,8,1,cs,ds" AS #4 'pc parry 40020 'OPEN "R",#5,"PRF9.FIC",70 40022 'FIELD #5,70 AS LECTURE$ 40030 F0$=CHR$(&HF0)

Scoring Art – Stephen Parry – July 2011

40040 F2$=CHR$(&HF2):F6$=CHR$(&HF6):FA$=CHR$(&HFA):F9$=CHR$(&HF9):FB$=CHR$ (&HFB):FE$=CHR$(&HFE):FD$=CHR$(&HFD) 40050 RETURN 40055 ' 40200 ' 40201 'ATTENTE QQC FROM PARRY 40202 ' 40205 'LOCATE 24,1:COLOR MAGENTA,NOIR:PRINT "attente PARRY "; 40210 GOSUB 41000 40215 'A$=F9$+"23DG 90911131517192123252729313335373941SSCH"+F0$ 'EXEMPLE BIDON 40218 'GET #5:A$=LEFT$(LECTURE$,47) 40220 IF A$="" THEN RETURN 40221 IF LEN(A$)=0 THEN RETURN 40222 'ON A RECU QQUECHOSE: 40224 IF A$=XA$ THEN 40900 'DEJA RECU 40226 XA$=A$ 'MISE EN MEMOIRE POUR PROCHAIN COUP 40230 'LOCATE 24,1:COLOR MAGENTA,NOIR:PRINT "RECU PARRY:";:LOCATE 24,12:PRINT A$+SPACE$(66-LEN(A$)); 40232 'EXTRACTION MATCH ID ETC... 40240 F$=MID$(A$,1,1) 40250 'TEST TYPE DE MESSAGE RECU : 40252 'POSSIBLES F2 F6 F9 FB FE FA FD 40260 ON INSTR(F9$+FD$+F2$+F6$+FA$+FB$+FE$,F$) GOTO 40262,40262,46020,47020,48000 40261 GOTO 40900 40262 IF LEN(A$)54 THEN 40900 'LONGUEUR INCORRECT 40270 'ICI ON A BIEN UN F9 : 40275 'GOSUB 41500 ' AUSSIE CONVERT 40279 IF PLUIE=1 THEN PLUIE=0 'RESET FLAG PLUIE AU 1er F9 RECU ... 40280 MATCHE$=MID$(A$,4,5) 40285 'IF MATCHE$="MD 15" THEN MATCHE$="SH 15" 40290 'RECHERCHE SI MATCH SELECTIONNE OU NON : 40300 FOR ISUI=1 TO NSUI 40310 IF MATCHE$=MATSUI$(ISUI) THEN 40400 40320 NEXT ISUI 40330 'GOSUB 50206'SI ICI MATCH NON SUIVI 40335 LOCATE 24,21:COLOR NOIR,MAGENTA:PRINT "**NOT ON PROGRAM*"+MATCHE$; 40340 GOTO 40900 40400 'SI ICI MATCH SUIVI ... 40405 LOCATE 24,21:COLOR NOIR,MAGENTA:PRINT "** PROGRAMMED *"+MATCHE$; 40407 'MISE EN MEMOIRE DU F9$ RECU : 40408 XF9$(ISUI)=A$ 40409 ' 40600 GOSUB 42000 'PREPARATION DU MESSAGE 40900 A$="" 40910 RETURN 41000 ' 41001 'RECEPTION MESSAGES DU PC PARRY 41002 '

Page 28 of 79

41005 IF LOC(4)=0 THEN GOTO 41030 41010 IF LOC(4)>100 THEN B$=B$+INPUT$(100,#4):GOTO 41030 41015 'PRINT B$ 41020 B$=B$+INPUT$(LOC (4),#4) 41030 IF INSTR(F9$+FD$+F2$+F6$+FA$,LEFT$(B$,1))=0 THEN B$="":RETURN 41040 'B$=RIGHT$(B$,LEN(B$)-(INSTR(B$,F9$)-1)) 41050 IF INSTR(B$,F0$)=0 THEN RETURN 41060 A$=MID$(B$,1,INSTR(B$,F0$)-1) 41062 IF ASC(A$)=249 OR ASC(A$)=253 THEN A$=MID$(A$,1,50)+MID$(A$,51+12,4) 'AUS 91 CHANGE 41065 IF TR$="T" THEN COLOR MAGENTA,JAUNE: LOCATE 20,2: PRINT A$; 41070 B$=RIGHT$(B$,LEN(B$)-INSTR(B$,F0$)) 41080 RETURN 41090 ' 42000 ' *PARRY*** programme de MISE EN FORME D'UN MESSAGE 42001 ' 42010 'EXTRACTION DES INFORMATIONS UTILES: 42012 NOSET=ASC(MID$(A$,NSETPOS,1)) AND &HF 42014 POINT1=ASC(MID$(A$,CGPPOS,1)) AND &H1F 42016 POINT2=ASC(MID$(A$,CGPPOS+1,1)) AND &H1F 42018 SVDTIB=ASC(MID$(A$,SVTIEPOS,1)) 42020 IF (SVDTIB AND &H80)0 THEN TIEIND=1 ELSE TIEIND=0 42021 IF (SVDTIB AND &H10)0 THEN FLAGPT=1 ELSE FLAGPT=0 42022 PP=1 42024 FOR P=0 TO 8 STEP 2 42026 SET1(PP)=ASC(MID$(A$,STPOS+P,1)) AND &HF 42028 SET2(PP)=ASC(MID$(A$,STPOS+P+1,1)) AND &HF 42030 PP=PP+1:NEXT P 42032 IF (SVDTIB AND &H2) 0 THEN SERV=0 ELSE SERV=1 42036 ' formation des phrases suivant type 42038 ' 42040 'POINT1=21:POINT2=20:TIEIND=1:NOSET=3 'essai tie-break 42050 CUM1=0:CUM2=0:IF NOSET=0 THEN X$(ISUI)="":RETURN 42055 GOSUB 54340 'TOP UP COSETTE 42060 IF NOSET>=6 THEN 42760 'match termine (6/7) ET ABANDON(8 WIN J1) (9 WIN J2) 42070 IF TIEIND1 THEN GOTO 42210 'cas normal 42080 'cas du tie-break 42090 NM=0 'initialisation count number of messages for VTK 42100 GOSUB 43100 'joueur 1 ET joueur 2 42110 GOSUB 44360 'disputent le tie-break dans le Nieme set 42120 IF POINT1>20 OR POINT2>20 THEN GOSUB 44400:GOTO 42190 'LES JOUEURS DEPASSENT 20 POINTS 42130 IF POINT1=POINT2 THEN GOSUB 44440:GOTO 42190 'EGALITE n POINTS partout 42140 IF POINT1>POINT2 THEN GOSUB 44480:GOTO 42160 ' n points a m en faveur de 42150 IF POINT2>POINT1 THEN GOSUB 44540:GOTO 42180 ' m points a n en faveur de 42160 GOSUB 43760 '1er joueur 42170 GOTO 42190 42180 GOSUB 43830 '2eme joueur 42190 GOSUB 43320 'phrases type 3 et envoi

Scoring Art – Stephen Parry – July 2011

42200 GOTO 43030 42210 'CAS NORMAL 42220 IF POINT1=0 AND POINT2=0 AND SET1(NOSET)=0 AND SET2(NOSET)=0 THEN 42570 'VONT COMMENCER 42230 IF SET1(NOSET)=0 AND SET2(NOSET)=0 THEN 42620 'disputent LE 1er jeu 42240 IF SET1(NOSET)>24 OR SET2(NOSET)>24 THEN 42690 'depassent 24 jeux 42250 NM=0 'initialisation count number of messages for VTK 42260 IF SET1(NOSET)=SET2(NOSET) THEN 42490 'egalite 42270 IF SET1(NOSET)20":GOSUB 61000 44430 RETURN 44440 'egalite n points par tout dans tie-braek 44450 X$(ISUI)=X$(ISUI)+"00"+RIGHT$(STR$(POINT1+20),2):NM=NM+1 'EGALITE n POINTS partout 44452 MID$(SCORE$(ISUI),21,8)=SPACE$(8) 44455 MID$(SCORE$(ISUI),21,8)=RIGHT$(STR$(POINT1),2)+""+RIGHT$(STR$(POINT2),2):GOSUB 61000 44460 'PRINT " egalite ";POINT1;" partout"; 44470 RETURN 44480 'N points a M en faveur de (joueur1) 44490 IF POINT1NSUI THEN GFIN(JLANG)=0:RETURN 50758 IF GFIN(JLANG)0 THEN 50790 50759 LX=0 'INITIALISATION LX 50760 FOR QSUI=1 TO NSUI 50765 IF MID$(LANGUE$(QSUI),2*JLANG-1,1)"*" THEN 50778 'MATCH NON SUIVI DANS LA LANGUE 50770 IF MID$(SCORE$(QSUI),28,1)"R" THEN 50778 'MATCH NON TERMINE DEPUIS .. MINUTES 50775 LX=LX+LEN(X$(QSUI))/4 'CALCUL LONGUEUR TOTALE 50778 NEXT QSUI 50780 IF LX=0 THEN GFIN(JLANG)=0:GOTO 50799 'FINI YA RIEN A ENVOYER 50784 ZZ$="0158" 'LES MATCHES IMPORTANTS DE LA JOURNEE ONT VU LA VICTOIRE DE .. 50785 LX=1 'ONLY FOR NEXT MESSAGE 50786 GOSUB 50900 'TRADUCTION EN HEXA ET INVERSION FAI FOR ET SEND IT !! 50787 GOTO 50794

Scoring Art – Stephen Parry – July 2011

50790 IF MID$(LANGUE$(GFIN(JLANG)),2*JLANG-1,1)"*" THEN 50796 'MATCH NON SUIVI DANS LA LANGUE 50792 IF MID$(SCORE$(GFIN(JLANG)),28,1)"R" THEN 50796 'MATCH NON TERMINE DEPUIS .. MINUTES 50793 LX=LEN(X$(GFIN(JLANG)))/4:ZZ$=X$(GFIN(JLANG)) 50794 MESSCOS$=ZZ$:GFIN(JLANG)=GFIN(JLANG)+1:RETURN 50796 GFIN(JLANG)=GFIN(JLANG)+1:IF GFIN(JLANG)>NSUI THEN 50757 ELSE 50790 50799 RETURN 'FIN ENVOI DES MATCHS TERMINES 50800 ' 50805 'ECRITURE FICHIER A LA FIN BALAYAGE UNE LANGUE 50810 'SURTOUT POUR LES XF9$ 50815 'RETURN 50816 IF CRESEL=1 THEN 50890 50817 LOCATE 24,1:COLOR JAUNE,NOIR:PRINT "SAVE MATCH/RESULTS FILE"; 50818 KILL "SELJOUR.OLD" 50819 NAME "SELJOUR" AS "SELJOUR.OLD" 50820 'GOSUB 50206 'ASK COSETTE FOR MORE ?? 50822 OPEN "R",#2,"SELJOUR",200 50825 FIELD #2,5 AS MATCH$,20 AS NM1$,4 AS MG1$,20 AS NM2$,4 AS MG2$,20 AS NM3$,4 AS MG3$,20 AS NM4$,4 AS MG4$,28 AS SCOR$,16 AS LANGU$,55 AS YF9$ 50830 FOR HSUI=1 TO NSUI 50832 IF MATSUI$(HSUI)=SPACE$(5) THEN 50875 50833 'GOSUB 50206 'ASK COSETTE FOR MORE ?? 50835 LSET MATCH$=MATSUI$(HSUI) 50840 LSET NM1$=N1SUI$(HSUI):LSET MG1$=M1SUI$(HSUI) 50845 LSET NM2$=N2SUI$(HSUI):LSET MG2$=M2SUI$(HSUI) 50850 LSET NM3$=N3SUI$(HSUI):LSET MG3$=M3SUI$(HSUI) 50855 LSET NM4$=N4SUI$(HSUI):LSET MG4$=M4SUI$(HSUI) 50860 LSET SCOR$=SCORE$(HSUI):LSET LANGU$=LANGUE$(HSUI) 50865 LSET YF9$=XF9$(HSUI) 50870 PUT #2 50875 NEXT HSUI 50877 LSET MATCH$="FFFFF" 50878 PUT #2 50880 CLOSE #2 50885 LOCATE 24,1:COLOR JAUNE,NOIR:PRINT "MATCH/RESULTS FILE SAVED"; 50890 RETURN 50900 RETURN 'ANCIEN REMISE POIDS FORT/FAIBLE 53000 MESSCOS$=Y$ 'MESSAGE A ENVOYER A COSETTE 53170 RETURN 53500 GET 1,Y+1:Y=Y+1:LOCATE 24,50:PRINT "GET "+RMESS$;'AUSFRIGLOC(1); 53510 RETURN 54000 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 54001 ' ³ START COSETTE ³ 54002 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 54010 XDS=0 54020 CALL DSCALL(XDS) 54030 'PRINT "****XDS****";XDS 54050 NOFCT=0:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=3 'INIT COUPLEUR

Page 37 of 79

54060 CALL APDRV(NOFCT) 54070 'PRINT " NOFCT OFFSET SEGBUF NBO PARAM " 54080 ''PRINT "NOFCT1 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54090 NOFCT=3:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=&HA0 'SELECTION VOIE SORTIE 54100 CALL APDRV(NOFCT) 54110 ''PRINT "NOFCT2 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54112 NOFCT=13:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=2 'TAILLE DU BUFFER = 16K FULL SIZE 54114 CALL APDRV(NOFCT) 54116 ''PRINT "NOFCT13 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54120 NOFCT=3:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=0 'SELECTION VOIE D'ENTREE MICRO 54130 CALL APDRV(NOFCT) 54140 ''PRINT "NOFCT3 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54150 NOFCT=4:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=5 'SELECTION SEUIL DE SILENCE 54160 CALL APDRV(NOFCT) 54170 ''PRINT "NOFCT4 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54180 NOFCT=2:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=16 'SELECTION NIVEAU D'ENTREE 54190 CALL APDRV(NOFCT) 54200 ''PRINT "NOFCT5 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54210 NOFCT=2:OFFSET=0:SEGBUF=&HD000:NBO=0:PARAM=&H100+NIVSIL 'SELECTION NIVEAU SORTIE 54220 CALL APDRV(NOFCT) 54230 ''PRINT "NOFCT6 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM 54240 RETURN 54242 IF NIVSIL1 THEN NIVSIL=NIVSIL-1 54247 GOSUB 54210 54248 RETURN 54250 IF MESSNTH=0 THEN RETURN 'NO MESSAGES TO SEND 54270 'SUB 54690 'ARRET COUPLEUR 54278 CLOSE 1 54280 'IF LEFT$(NMESS$,1)="1" THEN OPEN "R",1,"\T1\T"+NMESS$+".M64",RACLEN ELSE OPEN "R",1,"\PSI\T"+NMESS$+".M64",RACLEN 54281 OPEN "R",1,"\T"+LEFT$(NMESS$,2)+"\T"+NMESS$+".M64",RACLEN 54283 LOCATE 20,68: PRINT "FILE= ";NMESS$; 54285 I=0:J=0:X=0:Y=0 'JOUE SUIVANT 54290 'AUSFRIGX!=LOF(1)/RACLEN:X=INT(X!) 'X=NO OF BLOCKS 54300 Y=0 'Y= COUNTER OF BLOCKS 54310 ZX!=0:FOR I=1 TO X:ZX!=ZX!+RACLEN:NEXT I

Scoring Art – Stephen Parry – July 2011

54320 'AUSFRIGZZ!=LOF(1):Z!=ZZ!-ZX! 54330 Z=INT(Z!) 54332 'GOSUB 53500 54334 FTT=1: NEXTMESS=1:CLOZOFF=0: CLOZED=0: NEXTMESG=0: FTT=0 :NOPLY=0: 'DONT RELOAD FROM DISK THE FIRST SEGMENT 54335 RMESS$=NMESS$ 54336 RETURN 54340 IF NEXTMESG=1 THEN GOTO 54250 54350 IF NOFCT0 THEN GOTO 54380 54355 IF CLOZOFF0 THEN 54380 54357 IF CLOZED=1 THEN 54380 54360 GOSUB 53500 54380 IF YX THEN PARAM=0:NOOCT=Z:CLOZED=1:GOSUB 54450:RETURN 54400 IF Y=X AND Z 0 THEN PARAM=0:NOOCT=RACLEN:GOSUB 54450:RETURN 54410 IF Y=X AND Z=0 THEN PARAM=0:NOOCT=RACLEN:CLOZED=1:GOSUB 54450:RETURN 54420 RETURN 54440 ' 54450 GOTO 55000'AUSFRIG 54455 'LOCATE 7,1:'PRINT "X ";X ;"Y ";Y;" NOPLY ";NOPLY; 54457 'LOCATE 17,1:'PRINT "BEFOR NBO ";NBO;" CLOZOFF ";CLOZOFF; 54460 NOFCT=12:OFFSET=VARPTR(#1)+188+CLOZOFF:SEGBUF=XDS:NBO=NOOCTCLOZOFF 'ECRITURE BUFFER SON 54465 'A$=INKEY$: IF A$="" THEN GOTO 54465 54470 CALL APDRV(NOFCT) 54490 'LOCATE 5,1:'PRINT "NOFCT12 ";NOFCT;" ";OFFSET;" ";SEGBUF;" ";NBO;" ";PARAM;" FLAG ";FLAG;" NEXTMESS ";NEXTMESS; 54500 'LOCATE 6,1:'PRINT "MESSNEED ";MESSNEED;" NEXTMESG ";NEXTMESG;" CLOZED ";CLOZED; 54505 'IF NOFCT=0 THEN LOCATE 10+Y,1: 'PRINT "PLAYED ";NBO 54507 'IF NOFCT=0 THEN LOCATE 11+Y,1: 'PRINT SPACE$(14) 54509 'IF CLOZED=0 THEN RETURN 54510 IF NOFCT>0 THEN 54538 54512 IF CLOZED=1 THEN NOPLY=NOPLY+NBO: IF Z=NOPLY THEN NEXTMESG=1 54515 CLOZOFF=NBO+CLOZOFF 54516 IF CLOZOFF=RACLEN THEN CLOZOFF=0 54517 'LOCATE 8,1:'PRINT "Z ";Z;" NBO ";NBO;" CLOZOFF ";CLOZOFF; 54518 IF FLAG=0 THEN GOSUB 54530 54520 RETURN 54530 ' PLYER 54535 TOT=TOT+NBO: IF TOTSPEED THEN NEXTMESG=CLOZED:DLY=0: 'KEEP TOPPED UP COSETTE 55010 LOCATE 3,1: PRINT DLY,NEXTMESG; 55020 NEXTMESG=CLOZED 55100 RETURN 55300 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 55301 ' ³ PREPARE MESSAGE TO COSETTE ³ 55302 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 55311 GOSUB 55500 55330 MESSNTH=1:MESSNEED=0 55399 RETURN 55500 ' 55505 ' NEXT MESSAGE 55510 ' 55520 GOSUB 50500 55525 'LOCATE 15,1:PRINT MESSCOS$; 55530 RETURN 60000 ' *NEWSEL** programme de selection des matchs du jour 60010 'fichier 3 : entree matches du jour 60020 OPEN "R",#3,"matchjou",101 60030 FIELD #3,5 AS YYMATCHID$,20 AS YYNOM1$,4 AS YYMSG1$,20 AS YYNOM2$,4 AS YYMSG2$,20 AS YYNOM3$,4 AS YYMSG3$,20 AS YYNOM4$,4 AS YYMSG4$ 60032 CRESEL=1 'FLAG POUR EVITER CONFLIT AVEC RE ECRITURE REGULIERE DE SELJOUR 60034 KILL "SELJOUR.OLD" 60035 NAME "SELJOUR" AS "SELJOUR.OLD" 60036 AA$=SPACE$(33):SCORE$(0)=SPACE$(28):LANGUE$(0)=SPACE$(16) 60038 FOR KSUI=1 TO NBSUI:MATSUI$(KSUI)=SPACE$(5):SCORE$(KSUI)=SCORE$(0):LANGUE$(KSUI)=L ANGUE$(0):XF9$(KSUI)=SPACE$(55):X$(KSUI)="":NEXT KSUI 60039 FOR KSUI=1 TO NSUI:LSUI=KSUI:GOSUB 60740:NEXT KSUI 60040 REM lecture sur 3 avec get (sequentiel) 60050 OPEN "R",#2,"seljour",200 60060 FIELD #2,5 AS MATCH$,20 AS NM1$,4 AS MG1$,20 AS NM2$,4 AS MG2$,20 AS NM3$,4 AS MG3$,20 AS NM4$,4 AS MG4$,28 AS SCOR$,16 AS LANGU$,55 AS YF9$

Scoring Art – Stephen Parry – July 2011

60070 LG=25 'numero de ligne MESSAGE EN BAS =25 60075 KSUI=0 60080 LD=5 'numero de ligne cote droit=0 60100 'lecture matchjou 60110 IF R$="9" AND LANGUE$(KSUI)=SPACE$(16) THEN KSUI=KSUI-1 60115 IF LANGUE$(KSUI)SPACE$(16) THEN GOSUB 60800 'ECRITURE FICHIER SELJOUR 60118 'LANGUE$(KSUI)=SPACE$(16) 60120 GET #3 60130 IF EOF(3) THEN KSUI=KSUI+1:GOTO 60560 60140 KSUI=KSUI+1 60150 IF KSUI>NBSUI THEN 60561 'TROP DE MATCHES SELECTIONNES ON VA EN FIN DE ROUTINE 60152 MATSUI$(KSUI)=YYMATCHID$:N1SUI$(KSUI)=YYNOM1$:M1SUI$(KSUI)=YYMSG1$ 60154 N2SUI$(KSUI)=YYNOM2$:M2SUI$(KSUI)=YYMSG2$ 60156 N3SUI$(KSUI)=YYNOM3$:M3SUI$(KSUI)=YYMSG3$ 60157 N4SUI$(KSUI)=YYNOM4$:M4SUI$(KSUI)=YYMSG4$ 60160 AA$=YYNOM1$ 60170 IF (WIM=0 AND MID$(YYMATCHID$,1,1)="S") OR (WIM=1 AND MID$(YYMATCHID$,2,1)="S") THEN 60200 60180 AA$=AA$+"-"+YYNOM2$+"/"+YYNOM3$+"-"+YYNOM4$ 'cas des doubles 60190 GOTO 60210 60200 AA$=AA$+"/"+YYNOM2$ 'cas des simples 60210 'suppression des blancs inutiles 60220 BB$="" 60230 L=LEN(AA$) 60240 FOR I=1 TO L 60250 IF MID$(AA$,I,1)" " THEN BB$=BB$+MID$(AA$,I,1) 60260 NEXT I 60270 'SCORE$(KSUI)="6/2 6/2 6/4 7/6 22/24 40-30 " 60272 'FOR ISCORE=1 TO LEN(SCORE$(KSUI)):MID$(SCORE$(KSUI),ISCORE,1)=" ":NEXT ISCORE 60280 'LANGUE$(KSUI)="1 2 3 4 5 6 7 8 " 60281 'FOR ILANG=1 TO 8:MID$(LANGUE$(KSUI),2*ILANG-1,2)=" ":NEXT ILANG 60282 'FOR ILANG=1 TO NBLANG:MID$(LANGUE$(KSUI),2*ILANG-1,2)=" ":NEXT ILANG 60290 AA$=YYMATCHID$+" "+BB$ 60300 CC$=YYMATCHID$+" "+BB$ 60310 LOCATE LG,1 'ligne de gauche:lg colonne 1 60320 PRINT " "; 60330 LOCATE LG,1:COLOR NOIR,CYAN 60340 PRINT CC$;" (o/n/1..8/9)"; 60345 CLAVIER=1:RETURN 60350 'ARRIVEE ICI AVEC CLAVIER=1 60355 R$=INK$ 60360 IF R$="o" OR R$="O" OR R$="Y" OR R$="y" THEN 60420 'match selectionne toutes langues 60370 IF R$="n" OR R$="N" THEN KSUI=KSUI-1:GOTO 60100 'match non selectionne

Page 39 of 79

60380 IF R$="1" OR R$="2" OR R$="3" OR R$="4" OR R$="5" THEN 60660 'langue 1a5 60390 IF R$="6" OR R$="7" OR R$="8" THEN 60660 'langue 6a8 60400 IF R$="9" THEN 60100 'fin des selections 60405 IF R$="F" OR R$="f" THEN GOTO 60560 60410 LOCATE 24,50:COLOR ROUGE,CYAN:PRINT "DATA CAPTURE ERROR";:RETURN 'erreur on repose la question 60420 GOSUB 60570 'toutes langues 60540 'retour en lecture 60550 GOTO 60100 60560 'IF LANGUE$(KSUI)SPACE$(16) THEN GOSUB 60800 'ECRITURE FICHIER 60561 NSUI=KSUI-1 60562 LOCATE 25,1:COLOR JAUNE,NOIR:PRINT SPACE$(71); 60563 LSET MATCH$="FFFFF":LSET NM1$=SPACE$(20):LSET NM2$=SPACE$(20):LSET NM3$=SPACE$(20):LSET NM4$=SPACE$(20):LSET MG1$=SPACE$(4):LSET MG2$=SPACE$(4) 60564 LSET MG3$=SPACE$(4):LSET MG4$=SPACE$(4):PUT #2 60565 CLAVIER=0:CRESEL=0:CLOSE #2:CLOSE #3:RETURN 60570 'TOUTES LANGUES 60580 FOR ILANG=1 TO 8 60590 GOSUB 60630 'etoile langue ilang 60600 NEXT ILANG 60605 LSUI=KSUI 60610 GOSUB 60740 'positionnement ligne ld et affichage matchid et noms 60620 RETURN 60630 'ETOILE LANGUE ilang 60635 IF ILANG>NBLANG THEN RETURN 60640 IF MID$(LANGUE$(KSUI),2*ILANG-1,1)="*" THEN MID$(LANGUE$(KSUI),2*ILANG-1,1)=" " ELSE MID$(LANGUE$(KSUI),2*ILANG1,1)="*" 60650 RETURN 60660 ' 60670 GOSUB 60700 'ecriture matchid et noms joueurs ligne ld 60675 LSUI=KSUI 60680 GOSUB 60740 'positionnement ligne ld et affichage matchid et noms 60690 RETURN 'on repose question 60700 'ECRITURE MATCH ID et NOMS JOUEURS 60710 ILANG=VAL(R$) 60720 GOSUB 60630 'langue ILANG 60730 RETURN 60740 'POSITIONNEMENT LIGNE LD et impression match id et noms

Scoring Art – Stephen Parry – July 2011

60745 60750 60760 60770 60780 60800 60840 60850 60860 60870 60880 60890 60900 60910 60920 60924 60926 60928 60930 60940 61000 61010 61020 61100 61110 61115 61120 61200 61210 61215 61220 61300 61310 61315 61320 61400 61410 61415 61420 _

LD=LSUI+5 COLOR VERTCLAIR,NOIR:LOCATE LD,1:PRINT AA$+" "; LOCATE LD,35:PRINT SCORE$(LSUI); LOCATE LD,64:PRINT LANGUE$(LSUI); RETURN ' on ecrit le match DANS LE FICHIER SELJOUR LSET MATCH$=YYMATCHID$ LSET NM1$=YYNOM1$ LSET MG1$=YYMSG1$ LSET NM2$=YYNOM2$ LSET MG2$=YYMSG2$ LSET NM3$=YYNOM3$ LSET MG3$=YYMSG3$ LSET NM4$=YYNOM4$ LSET MG4$=YYMSG4$ LSET SCOR$=SCORE$(0) LSET LANGU$=LANGUE$(KSUI) LSET YF9$=SPACE$(55) PUT #2 RETURN 'AFFICHAGE SCORE SUR ECRAN A PARTIR DE ISUI LOCATE ISUI+5,35:COLOR VERTCLAIR,NOIR:PRINT SCORE$(ISUI); RETURN 'AFFICHAGE SUR ECRAN MESSAGE GENERAL 1 : JGEN1 LOCATE 4,10:COLOR BLEUCLAIR,NOIR IF JGEN1=0 THEN PRINT " "; ELSE PRINT JGEN1; RETURN 'AFFICHAGE SUR ECRAN MESSAGE GENERAL 2 : JGEN2 LOCATE 5,10:COLOR BLEUCLAIR,NOIR IF JGEN2=0 THEN PRINT " "; ELSE PRINT JGEN2; RETURN 'AFFICHAGE SUR ECRAN MESSAGE GENERAL 3 : JGEN3 LOCATE 4,50:COLOR BLEUCLAIR,NOIR IF JGEN3=0 THEN PRINT " "; ELSE PRINT JGEN3; RETURN 'AFFICHAGE SUR ECRAN MESSAGE GENERAL 4 : JGEN4 LOCATE 5,50:COLOR BLEUCLAIR,NOIR IF JGEN4=0 THEN PRINT " "; ELSE PRINT JGEN4; RETURN

Page 40 of 79

TENNIS REUTER RESULTS

1 'SAVE"tennALL.BAS",A '*** SP 18.09.89 2 CLEAR:KEY OFF:DEFINT A-Z:CLS 5 ' 6 NOIR=0:BLEU=1:VERT=2:CYAN=3:ROUGEFONCE=4:MAGENTA=5:BRUN=6:BLANC=7 7 GRIS=8:BLEUCLAIR=9:VERTCLAIR=10:CYANCLAIR=11:ROUGE=15:ROSE=13:JAUNE= 14:BLANCINT=15 10 NOMESTYP=23:TEXTES=149: CARSES=29: SEQRES=29: COUNES=199: NOLANG=2:RESBUF=10 11 NOMATS=11:NOTYPS=5:NBSUI=NOMATS*NOTYPS:ANADD$="ANADD" 12 DIM SEQ(NOMESTYP,6,NOLANG),MATBUF$(RESBUF) 13 DIM FTABC$(24), FTABL$(24), NPART(24), NCUM(12), MATID$(NOMATS,NOTYPS) 14 DIM TEXTSH$(TEXTES,NOLANG), TEXTLG$(TEXTES,NOLANG), TEXTTYP$(TEXTES,NOLANG),NUMPART(TEXTES,NOLANG),SORD$(TEXTES,NOLANG) 15 DLINE=15:MLINE=1:RESLINE=3: RESLIM=6: COLOR ROUGE+16,BLEU: CLS: MESSPOSX=15:MESSPOSY=40 16 LOCATE 10,25: PRINT "L O A D I N G F I L E S"; 18 DIM CARSSH$(CARSES,NOLANG), CARSLG$(CARSES,NOLANG) 19 DIM SEQRSH$(SEQRES,NOLANG), SEQRLG$(SEQRES,NOLANG) 20 DIM COUNSH$(COUNES,NOLANG), COUNLG$(COUNES,NOLANG), STINX(COUNES,NOLANG), ENDINX(COUNES,NOLANG) 22 DIM LANG$(NOLANG),LANGDES$(NOLANG) 23 LANG$(1)="ENG": LANG$(2)="FRA": LANGDES$(1)="E.TXT": LANGDES$(2)="F.TXT" 25 LANG=1: GOSUB 18000:GOSUB 18100:GOSUB 18200:GOSUB 18300 'texts+CONTROLS+FORMAT COMPETITORS+COUNTRIES 30 LANG=2: GOSUB 18000:GOSUB 18100:GOSUB 18200:GOSUB 18300 'texts+CONTROLS+FORMAT COMPETITORS+COUNTRIES 32 LANG=1:GOSUB 21000 'parsxxx.txt open 33 LANG=2:GOSUB 21000 'parsxxx.txt open 34 GOSUB 12010 'LECTURE SELJOUR (MATCHES,JOUEURS,SCORES) 35 GOSUB 10000 'INITIALISATIONS 37 GOSUB 18950 'OPEN TEXT FILE 50 GOSUB 40000 'OUVERTURE PARRY 55 'OPEN "BID.TXT" FOR OUTPUT AS #8 60 GOSUB 9320 70 'GOSUB 1200 100 CLAVIER=0 'FLAGS POUR SAVOIR OU RETOURNER IF INKEY$ 110 'ON REBOUCLE TOUJOURS ICI 111 LOCATE 23,68:COLOR JAUNE,BLEU:PRINT "_"; 113 GOSUB 41000 'QQC FROM PARRY ?? 115 INK$=INKEY$:L=LEN(INK$):IF L=0 THEN 113 'QQC FROM CLAVIER ?? 116 LOCATE 25,60:COLOR NOIR,CYAN:PRINT SPACE$(17); 'RAZ MSG ERREUR 117 IF ASC(INK$)=27 THEN 9000 'ESCAPE 118 IF ASC(INK$)0 THEN GOTO 1615 1720 CLOSE #6:GOSUB 1230:GET #6,1:GOSUB 1410: GOTO 1615 7000 'FIN DU PROGRAMME: 7010 GOSUB 50800 'SAUVEGARDE SUR FICHIER SELJOUR 7100 'GOSUB 54690 'ARRET COUPLEUR 7995 COLOR NOIR,CYAN:CLS 8000 END 9000 ' RESET CLAVIER 9010 LOCATE 24,1 : PRINT SPACE$(70); 9020 CLAVIER=0 9030 GOTO 110 9150 ' ³ ERROR MESSAGE CLEAR 9160 CX=POS(0) 9170 CY=CSRLIN 9180 LOCATE 25,1: PRINT SPC(50); 9190 ERT=0 9200 LOCATE CY,CX 9210 RETURN 9220 ' RUBOUT AT CURSOR POSN 9225 CX=POS(0) 9230 CY=CSRLIN 9240 PRINT SPC(25) 9250 LOCATE CY,CX 9260 RETURN 9320 ' SAVE CURSOR POSN 9325 CX=POS(0) 9330 CY=CSRLIN 9335 RETURN 10000 ' 10001 'INITIALISATION FOND D'ECRAN 10002 ' 10003 COLOR JAUNE,CYAN:CLS:GOSUB 11000 'HEURE 10010 LOCATE 1,30:COLOR JAUNE,NOIR:PRINT " Reuter Tennis Results "; 10020 LOCATE 1,65:COLOR JAUNE,NOIR:PRINT " SportInfo "; 10040 'LOCATE 2,2:COLOR NOIR,ROUGE:PRINT "EVENT"; 10045 'LOCATE MLINE,3:COLOR NOIR,ROUGE 10050 'PRINT "------- MATCH result being PROCESSED -----"; 10055 LOCATE RESLINE,3:COLOR NOIR,ROUGE 10060 PRINT "----- TEXT PREPARED -----"; 10100 LOCATE DLINE,3:COLOR NOIR,ROUGE 10105 PRINT "------- DISPLAY ZONE -----"; 10107 LANG=1

Scoring Art – Stephen Parry – July 2011

10110 FOR I=1 TO NOTYPS 10120 LOCATE DLINE+NUMPART(I+11,LANG),1 10130 PRINT TEXTLG$(I+11,LANG);" "+SORD$(I+11,LANG); 10140 NEXT I 10210 LOCATE 21,2:COLOR JAUNE,NOIR 10220 PRINT "(Esc) clears Keyboard (+ -) ADD (C)lear XMIT Q (S)tore to Q "; 10230 LOCATE 22,2 10240 PRINT "(D)isplay text (A)ssemble text (T)elephone send "; 10250 LOCATE 23,2 10260 PRINT "(L)atest results (R)ecall competition (F)inish program "; 10300 LOCATE 23,60:COLOR BLANCINT,NOIR:PRINT "Choice??"; 10310 LOCATE 23,68:COLOR JAUNE+16,BLEU:PRINT "_"; 10980 COLOR JAUNE,CYAN: GOSUB 1500:GOSUB 1400:GOSUB 12018 'DISPLAY ADD ETC 10985 PLUIE=0:RECF2=0:RECF6=0:NUIT=0:CRESEL=0 10990 RETURN 11000 ' 11001 'VISUALISATION HEURE 11002 ' 11003 DAT$=DATE$:DAT$=LEFT$(DAT$,2)+"."+MID$(DAT$,4,2)+"."+MID$(DAT$,9,2) 11004 DAT$=DATE$:DAT$=LEFT$(DAT$,6)+RIGHT$(DAT$,2) 11005 LOCATE 1,2:COLOR JAUNE,NOIR:PRINT " ";DAT$;" ";TIME$;" "; 11030 RETURN 11031 ' 12000 ' 12005 ' LECTURE SELJOUR 12008 GOTO 12017 12010 OPEN "R",#2,"TELQ",5 12015 FIELD #2,5 AS COMPDET$ 12016 RETURN 12017 GOSUB 12010 'OPEN FILE 12018 COLOR BLEU,ROSE 12020 FOR NTYP=1 TO NOTYPS 12021 FOR NMAT=1 TO NOMATS 12022 GET #2,(NMAT-1)*NOTYPS+NTYP 12023 'PRINT NMAT,NTYP,COMPDET$ 12024 IF (COMPDET$=" " AND NMATNOMATS) THEN NMAT=NOMATS-1: GOTO 12110 12025 CODENQ$=COMPDET$ 12026 'MATID$(NMAT,NTYP)=MATCH$ 12030 'A$=" "+MATCH$ 12032 'GOSUB 27000 'POSITION POINTERS TO MATCH TYPE 12050 'CODENQ$=MATCH$ 12055 DISPCOL=NTYP 12060 GOSUB 31200 12110 NEXT NMAT 12120 NEXT NTYP 12990 CLOSE #2 12995 GOSUB 12010

Page 42 of 79

12999 14000 14010 14020 14099 18000 18002 18004 18006 18010 18040 18050 18055 18057 18060 18061 18062 18063 18065 18070 18080 18099 18100 18102 18104 18106 18110 18120 18140 18150 18155 18157 18160 18165 18170 18180 18199 18200 18202 18204 18206 18210 18220 18240 18250 18255 18257 18260 18265 18270 18280 18299 18300

RETURN ' IF TR$=" " THEN TR$="T" ELSE TR$=" " RETURN ' ' ' ' ' TEXTES OPEN "\RTR\TEXTRT"+LANGDES$(LANG) FOR INPUT AS #4 IF EOF(4) THEN 18099 ELSE LINE INPUT #4, FREC$ INX=VAL(MID$(FREC$,1,2)) IF INX=0 THEN 18040 LINX=INX TEXTSH$(INX,LANG)=MID$(FREC$,3,2) IF INX>11 THEN NUMPART(INX,LANG)=VAL(MID$(FREC$,5,3)) SORD$(INX,LANG)=MID$(FREC$,8,1) TEXTTYP$(INX,LANG)=MID$(FREC$,9,1) TXTTMP$=MID$(FREC$,10,70)+" " TEXTLG$(INX,LANG)=MID$(TXTTMP$+" ",1,INSTR(TXTTMP$," GOTO 18040 INTXT=LINX: CLOSE #4: RETURN ' ' ' ' CARSES OPEN "\RTR\carsRT"+LANGDES$(LANG) FOR INPUT AS #4 CARSES = 29 IF EOF(4) THEN 18199 ELSE LINE INPUT #4, FREC$ INX=VAL(MID$(FREC$,1,2)) IF INX=0 THEN 18140 LINX=INX 'CARSSH$(INX,LANG)=MID$(FREC$,3,7) TXTTMP$=MID$(FREC$,10,40)+" " CARSLG$(INX,LANG)=MID$(TXTTMP$+" ",1,INSTR(TXTTMP$," GOTO 18140 INCAR=LINX: CLOSE #4: RETURN ' ' ' ' SEQUENCE OF COMPETITOR INFORMATION OPEN "\RTR\seqrRT"+LANGDES$(LANG) FOR INPUT AS #4 SEQRES = 29 IF EOF(4) THEN 18299 ELSE LINE INPUT #4, FREC$ INX=VAL(MID$(FREC$,1,2)) IF INX=0 THEN 18240 LINX=INX SEQRSH$(INX,LANG)=MID$(FREC$,3,7) TXTTMP$=MID$(FREC$,10,40)+" " SEQRLG$(INX,LANG)=MID$(TXTTMP$+" ",1,INSTR(TXTTMP$," GOTO 18240 INSEQ=LINX: CLOSE #4: RETURN '

Scoring Art – Stephen Parry – July 2011

")-1)

")-1)

")-1)

18302 ' 18304 ' 18306 ' COUNTRIES 18310 OPEN "\RTR\counRT"+LANGDES$(LANG) FOR INPUT AS #4 18320 COUNES = 199:NOPL=0 18340 IF EOF(4) THEN 18399 ELSE LINE INPUT #4, FREC$ 18357 GOSUB 18500 18365 TXTTMP$=MID$(FREC$,4,30)+" " 18370 COUNLG$(NOPL,LANG)=MID$(TXTTMP$+" ",1,INSTR(TXTTMP$," ")1) 18380 GOTO 18340 18399 INCOU=NOPL: CLOSE #4: RETURN 18500 ' COUNTRIES 18510 NOPL=NOPL+1 18520 INX$=MID$(FREC$,1,3) 18530 COUNSH$(NOPL,LANG)=INX$ 18540 INXPLY=ASC(INX$)-64 AND &H5F 'SET UP START AND END SEARCH INDEXES 18550 IF STINX(INXPLY,LANG)=0 THEN STINX(INXPLY,LANG)=NOPL 18560 ENDINX(INXPLY,LANG)=NOPL 18570 RETURN 18600 REEZUN=0 18602 FOR SE=STINX(THIX,LANG) TO ENDINX(THIX,LANG) 18605 IF COUNSH$(SE,LANG)=SEKY$ THEN RETURN 18610 NEXT SE 18620 REEZUN=4 18630 RETURN 18950 ' OPEN FILES FOR CARS AND INDEXES 18960 ' 18970 OPEN "R",3,"\RTR\PLAYERS.RES",50 18980 FIELD 3,50 AS ENR$ 18990 RETURN 21000 ' 21100 OPEN "\RTR\parsRT"+LANGDES$(LANG) FOR INPUT AS #2 21160 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 21170 ' ³ Boucle de CHARGEMENT DES PARAMETRES ³ 21180 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 21190 FOR IST=1 TO 6 21200 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 21220 FOR IPER=1 TO NOMESTYP 21230 CARA$=MID$(FREC$,IPER*2+1,1) 21240 ST=ASC(CARA$) 21250 IF ST>64 THEN ST=ST-65+10 ELSE ST=ST-48 21260 SEQ(IPER,IST,LANG)=ST 21270 NEXT IPER 21280 'PRINT FREC$ 21290 NEXT IST 21300 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 21310 STPOS=1 21320 TR$=MID$(FREC$,STPOS+2,1) 21322 TEL$=MID$(FREC$,STPOS+4,1) 21323 PK$=MID$(FREC$,STPOS+47,1) 'TRACE OR NOT PACKETS RECEIVED? 21325 'TR$="T" 'COMPILE ONLY

Page 43 of 79

21330 WIDLMT=VAL(MID$(FREC$,STPOS+18,3)) 'USED IN 43098 TO SUPPRESS TOSS MESSAGE 21334 MESGEN$= MID$(FREC$,STPOS+33,5) 'GENERAL MESSAGES 1=>5 = 4 THEN 0,0,0,1 21336 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 'OVER LIMITS 21337 FRECO$=FREC$ 21338 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 'BREAK LIMITS 21339 FRECI$=FREC$ 21360 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 'AUST/RESTORE PARAMS 21361 AUS$=MID$(FREC$,STPOS+26,1) 'IS THIS NUMERIC DATA 21362 RESTAT$=MID$(FREC$,STPOS+36,1) 'RESTART =P IF RESTART EX PC NOT REMOTE (R) 21365 SPEED$=MID$(FREC$,STPOS+16,2) 'SPEED OF TRANSMISSION 21368 ' 21370 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 21380 ' ³ Fin DE CHARGEMENT ³ 21390 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 21395 CLOSE #2:RETURN 23000 LOCATE 24,1 : PRINT "To recall enter Code (5 caras) "; 23010 CLAVIER=1:CARREC=1:CODINK$="":GOSUB 9320: PRINT SPACE$(20); 23020 RETURN 23100 GOSUB 9250:PRINT INK$;:GOSUB 9320:CARREC=CARREC+1:CODINK$=CODINK$+INK$ 23110 IF CARREC9 AND SEQ(IMSG,1,LANG)9 AND SEQ(IMSG,4,LANG)4 THEN IPERSM=IPERSM-4 26110 PERNUM=VAL(MID$(A$,210+IPERSM*4,4)): GET 3,PERNUM 26120 IF VAL(MID$(ENR$,1,4)) PERNUM THEN IMSGST=10 ELSE IMSGST=1 'MATRICULE FALSE SO IGNORE ALL EXCEPT RESULT 26200 FOR IMSG=IMSGST TO NOMESTYP-2 26205 IF SEQ(IMSG,5,LANG)>9 AND SEQ(IMSG,5,LANG)4 THEN RETURN 26513 TXTTMP$=MID$(ENR$,VAL(MID$(SEQRLG$(INX,LANG),1,3))+1,VAL(MID$(SEQRLG $(INX,LANG),4,3)))+" " 26514 IF MID$(SEQRSH$(INX,LANG),7,1)="Y" THEN GOSUB 26900 'DO MINUSCULES 26515 OUTTXT$=MID$(TXTTMP$+" ",1,INSTR(TXTTMP$," ")-1) 26518 'IF INX=5 THEN GOSUB 26527 26519 GOSUB 26600 26520 RETURN 26527 IF INSTR(OUTTXT$,";")>0 THEN RETURN 'GOT A TIME 26528 IF VAL(OUTTXT$)>0 THEN RETURN ELSE GOSUB 26530 'GOT A TIME ELSE SEARCH ABANDON ETC 26529 RETURN 26530 GOSUB 26540 26532 TEXFND$=LEFT$(OUTTXT$,2)+" ": INST=90: INEND=95 26534 GOSUB 27900 26536 IF SFIND=0 THEN RETURN ELSE OUTTXT$=TEXTLG$(INQ,LANG) 26538 RETURN 26540 FOR ISET=1 TO 10 26542 IF INSTR(OUTTXT$," ")1 THEN RETURN 26544 OUTTXT$=MID$(OUTTXT$,2,10) ' MOVE ONE LEFT 26546 NEXT ISET 26548 RETURN 26550 SEKY$=MID$(ENR$,VAL(MID$(SEQRLG$(INX,LANG),1,3))+1,VAL(MID$(SEQRLG$( INX,LANG),4,3))) 26552 'PRINT SEKY$ 26555 THIX=ASC(SEKY$)-64 AND &H5F 'SET UP START AND END SEARCH INDEXES 26560 GOSUB 18600 26565 IF REEZUN>0 THEN RETURN 26566 IF SEQ(22,5,LANG)=0 THEN OUTTXT$=COUNLG$(SE,LANG): GOTO 26568 26567 IF MSORD$="D" THEN GOTO 26570 ELSE OUTTXT$=CHR$(SEQ(22,5,LANG))+COUNLG$(SE,LANG)+CHR$(SEQ(23,5,LANG)) 'PUT COUNTRY IN PARENTHESES 26568 GOSUB 26600 26569 RETURN 26570 IF (IPERS AND 1)=1 THEN COUN1$=COUNLG$(SE,LANG): IMSG=IMSG+1:RETURN 'SAVE COUNTRY OF FIRST PLAYER, AND SKIP PUNCTUATION 26571 IF COUN1$=COUNLG$(SE,LANG) THEN OUTTXT$=CHR$(SEQ(22,5,LANG))+COUNLG$(SE,LANG)+CHR$(SEQ(23,5,LANG)) 'BOTH PLAYERS SAME, SO PUT COUNTRY IN PARENTHESES 26572 IF COUN1$COUNLG$(SE,LANG) THEN OUTTXT$=CHR$(SEQ(22,5,LANG))+COUN1$+"/"+COUNLG$(SE,LANG)+CHR$(SEQ(23 ,5,LANG)) 'PUT COUNTRY IN PARENTHESES OF BOTH PLAYERS 26580 GOSUB 26600 26599 RETURN 26600 IF MATID$="" THEN RETURN' TEST FOR WIDTH BUT WAIT FILE OPEN 26605 IF IK$="A" THEN PRINT OUTTXT$; 26610 CURLIN$=CURLIN$+OUTTXT$ 26615 POSCR=INSTR(CURLIN$,CHR$(13))

Page 45 of 79

26617 IF POSCR=0 THEN GOTO 26620 'NO CARRIAGE RETURN IN TEXT 26618 PRINT #8,MID$(CURLIN$,1,POSCR);:CURLIN$=MID$(CURLIN$,POSCR+1,LEN(CURLIN$)POSCR) 26620 IF LEN(CURLIN$)ISE THEN CURLIN$=MID$(CURLIN$,ISE+1,LEN(CURLIN$)-ISE) ELSE CURLIN$="" 26699 RETURN 26700 ' RESULT OF MATCH 26710 OUTTXT$=MID$(A$,165,49)+" " 'LONG RESULT 26715 SEP$=TEXTLG$(64,LANG) 'SEE IF SCORES SHOULD BE SEPARATED BY OTHER THAN A / 26718 IF LEN(SEP$)=0 THEN 26730 26719 OUTTXT1$="": PREVCHAR$="" 26720 FOR IPT= 1 TO LEN(OUTTXT$) 26721 NXTCHAR$=MID$(OUTTXT$,IPT,1) 26722 IF NXTCHAR$="/" THEN OUTTXT1$=OUTTXT1$+SEP$: GOTO 26727 'NEW SEPARATOR 26725 IF NXTCHAR$="(" THEN OUTTXT1$=OUTTXT1$+" (": GOTO 26727 'NEW SEPARATOR 26726 OUTTXT1$=OUTTXT1$+NXTCHAR$ 26727 PREVCHAR$=NXTCHAR$ 26728 NEXT IPT 26730 OUTTXT$=MID$(OUTTXT1$+" ",1,INSTR(OUTTXT1$," ")-1) 26737 GOSUB 26600 26739 RETURN 26750 ' SEED 26752 SEEDTYP=INSTR("SMSWDNDYDXDX",MSORD$+TORD$) 26754 IF SEEDTYP=0 THEN IMSG=IMSG+1: SEED$="": RETURN 'NOT SEEDED EVENT 26756 INX=(SEEDTYP+19)\4 'ADJUST SO THAT SINGLES IS 5, DOUBLES IS 6, MIXED IS 7, FROM INSTRUCTION IN 26752 26763 TXTTMP$=MID$(ENR$,VAL(MID$(SEQRLG$(INX,LANG),1,3))+1,VAL(MID$(SEQRLG $(INX,LANG),4,3)))+" " 26764 IF VAL(TXTTMP$)=0 THEN IMSG=IMSG+1: SEED$="":RETURN 'NOT SEEDED PLAYER, SO ALSO JUMP HYPHEN "-" 26765 SEED$=MID$(STR$(VAL(TXTTMP$)),2,2) 'TAKE OUT LEADING BLANK 26766 'IF SEQ(22,5,LANG)=0 THEN GOTO 26770 26768 'SEED$=CHR$(SEQ(22,5,LANG))+SEED$+CHR$(SEQ(23,5,LANG)) 'PUT IN PARENTHESES 26770 GOTO 26775 'IF INX=5 THEN GOTO 26775 'SINGLES, SO OUTPUT STRIGHT AWAY 26772 RETURN 26775 ' FIX SEED ON OUTPUT

Scoring Art – Stephen Parry – July 2011

26780 OUTTXT$=SEED$ 26785 GOSUB 26600 26790 SEED$="" 26799 RETURN 26900 FOR K=2 TO LEN(TXTTMP$) 26910 CARVAL=ASC(MID$(TXTTMP$,K,1)) 26920 IF (CARVAL>64 AND CARVAL0 THEN PRINT "ADD= ";MID$(TEXTLG$(MSGADD+70),2,10)+" "; ELSE PRINT SPACE$(15); 1510 RETURN 1600 ' INCREASE MSGADD 1610 IF MSGADD64 THEN ST=ST-65+10 ELSE ST=ST-48 21260 SEQ(IPER,IST)=ST 21270 NEXT IPER 21280 'PRINT FREC$ 21290 NEXT IST 21300 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 21310 STPOS=1 21320 TR$=MID$(FREC$,STPOS+2,1) 21322 TEL$=MID$(FREC$,STPOS+4,1) 21323 PK$=MID$(FREC$,STPOS+47,1) 'TRACE OR NOT PACKETS RECEIVED? 21325 'TR$="T" 'COMPILE ONLY 21330 WIDLMT=VAL(MID$(FREC$,STPOS+18,3)) 'USED IN 43098 TO SUPPRESS TOSS MESSAGE 21334 MESGEN$= MID$(FREC$,STPOS+33,5) 'GENERAL MESSAGES 1=>5 = 4 THEN 0,0,0,1 21336 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 'OVER LIMITS 21337 FRECO$=FREC$ 21338 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 'BREAK LIMITS 21339 FRECI$=FREC$ 21360 IF EOF(2) THEN 21395 ELSE LINE INPUT #2,FREC$ 'AUST/RESTORE PARAMS 21361 AUS$=MID$(FREC$,STPOS+26,1) 'IS THIS NUMERIC DATA 21362 RESTAT$=MID$(FREC$,STPOS+36,1) 'RESTART =P IF RESTART EX PC NOT REMOTE (R) 21365 SPEED$=MID$(FREC$,STPOS+16,2) 'SPEED OF TRANSMISSION 21368 ' 21370 ' ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 21380 ' ³ Fin DE CHARGEMENT ³ 21390 ' ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 21395 CLOSE #2:RETURN 23000 LOCATE 24,1 : PRINT "To recall enter Code (5 caras) "; 23010 CLAVIER=1:CARREC=1:CODINK$="":GOSUB 9320: PRINT SPACE$(20); 23020 RETURN

Scoring Art – Stephen Parry – July 2011

23100 GOSUB 9250:PRINT INK$;:GOSUB 9320:CARREC=CARREC+1:CODINK$=CODINK$+INK$ 23110 IF CARREC9 AND SEQ(IMSG,MESTYP)DLINE-RESLINE-2 THEN 30543 30535 GOTO 30510 30540 CLOSE #7: OUTTX=0 30542 NEXT IBUF 30543 CLOSE #7: OUTTX=0 30545 RETURN 31000 LOCATE 24,1 : PRINT "To store in telephone Q, enter Code (5 caras) "; 31010 CLAVIER=4:CARREC=1:CODINK$="":GOSUB 9320: PRINT SPACE$(20); 31099 RETURN 31100 GOSUB 9250:PRINT INK$;:GOSUB 9320:CARREC=CARREC+1:CODINK$=CODINK$+INK$ 31102 IF CARREC100 THEN B$=B$+INPUT$(100,#4):GOTO 41030 41020 B$=B$+INPUT$(LOC (4),#4) 41030 IF INSTR(CODCLAV$,LEFT$(B$,1))=0 THEN B$="": RETURN 41040 'B$=RIGHT$(B$,LEN(B$)-(INSTR(B$,CODCLAV$)-1)) 41050 IF INSTR(B$,F0$)=0 THEN RETURN 41060 A$=MID$(B$,1,INSTR(B$,F0$)-1) 41065 'PRINT A$ 41070 B$=RIGHT$(B$,LEN(B$)-INSTR(B$,F0$)) 41080 RETURN 41500 ' 41510 ' 41520 ' SHUT UP 41530 IF MATID$"" THEN PRINT #8,CURLIN$; 41540 FOR IBUF=RESBUF-1 TO 1 STEP -1 41550 MATBUF$(IBUF+1)=MATBUF$(IBUF) 41560 NEXT IBUF 41570 MATBUF$(1)=MATID$ 41590 CURLIN$="":MATID$="": CLOSE #8: RETURN 44000 ' 44010 'RECEPTION DES F4 (PLAYERS SCORES RECAP) 44020 ' OU F5 if confirmed with player card 44030 ' 44032 'IF F$=F4$ THEN MEMPA=1:INDIC=4 44034 IF F$=F4$ THEN MEMLC=1 44040 ' 44050 PLAYNO=VAL(MID$(A$,3,4)): IF PLAYNO=0 THEN RETURN 44060 ROUND(PLAYNO)=VAL(MID$(A$,2,1)) 44061 'IF F$=F5$ THEN XP$(PLAYNO)="" 44062 FOR IH=1 TO NBHOLE 44064 HBHSCO(IH,PLAYNO)=VAL(MID$(A$,5+IH*2,2))

Page 58 of 79

44066 NEXT IH 44070 LATHOL(PLAYNO)=VAL(MID$(A$,43,2)): IF LATHOL(PLAYNO)0 THEN PARS$="+"+PARS$ 46755 IF PARCUR(PLAYNO)11 THEN AMPM$=" p.m._" ELSE AMPM$=" a.m._" 46979 IF HRS>12 THEN HRS=HRS-12 46980 PRINT #8,APPARA$+MID$(STR$(HRS),2)+":"+RIGHT$("0"+MID$(STR$(MINS),2),2)+AM PM$+PARS1$+PARS$ 46987 NEXT IPK1 46990 NEXT IPK 46999 RETURN 50075 'TRAITEMENT ERREUR COM1 50076 IF ERR=57 AND ERL=32380 THEN RESUME 32390 50077 LOCATE 25,50:COLOR NOIR,CYAN:PRINT USING "ERROR #### #####";ERR;ERL; 50078 IF ERR=57 THEN RESUME 110 50079 IF ERR=53 THEN 50092 'FILE DOES NOT EXIST 50080 'STOP 50090 RESUME NEXT 50092 IF CLAVIER>0 THEN CLAVIER=0: GOSUB 9250 50093 IF ERL=32146 THEN RESUME 32152 50094 GOSUB 10000 ' redo mask 50096 LOCATE 25,50:COLOR NOIR,CYAN:PRINT USING "ERROR #### #####";ERR;ERL; 50099 RESUME 110 50800 ' 50805 'ECRITURE FICHIER A LA FIN BALAYAGE UNE LANGUE 50810 'SURTOUT POUR LES XF9$ 50812 RETURN 'PAS DE COMPLICATION 50815 'RETURN 50816 CLOSE #2 50817 LOCATE 24,1:COLOR JAUNE,NOIR:PRINT "SAVE OF FILES"; 50818 KILL "TELQ.OLD" 50819 NAME "TELQ" AS "TELQ.OLD" 50822 GOSUB 12010 50830 FOR NTYP=1 TO NOTYPS 50831 FOR NMAT=1 TO NOMATS 50832 LSET COMPDET$=MATID$(NMAT,NTYP) 50833 PUT #2,(NMAT-1)*NOTYPS+NTYP 50840 NEXT NMAT 50850 NEXT NTYP 50880 CLOSE #2 50885 LOCATE 24,1:COLOR JAUNE,NOIR:PRINT "**FILES SAVED*"; 50890 RETURN

Scoring Art – Stephen Parry – July 2011

57400 57405 57410 57420 57430 57433 BOARD 57435 57440 57500 57502 57505 57510 57520 57530 57540 57600 57700 57800 57810 57820 57830 57840 57850 57852 57855 57860 57870 57880 57890 57900 57902 57903 57905 57910 57915 57920 57925 57930 57935 57940 57945 _

' SELECTIVE LEADER BOARD APSWITCH=1: GOSUB 57900 LPAGE$="LS"+CHR$(3) PRINT #4,LPAGE$; LOCATE 24,1: PRINT "LEADER BOARD REQUEST "; 'MEMCLB=1: MESSLB$="0530" 'THIS IS THE CURRENT LEADER 'LDLINCNT=0: F$="LB": IPL=0: LBREQ=2 RETURN ' FULL LEADER BOARD IF APSWITCH=2 THEN GOTO 46600 APSWITCH=2: GOSUB 57900: NOPKT=1 LPAGE$="LF"+CHR$(3) PRINT #4,LPAGE$; LOCATE 24,1: PRINT "FULL BOARD REQUEST "; RETURN RETURN ' PLAYER REQUEST RETURN ' MATCH REQUEST ' LPAGE$="GA000"+CHR$(3) PRINT #4,LPAGE$; LOCATE 24,1: PRINT "PLAYER START-UP REQUEST "; RETURN ' FULL LEADER BOARD IF APSWITCH=4 THEN GOTO 46800 APSWITCH=4: GOSUB 57900: NOPKT=1 LPAGE$="LF"+CHR$(3) PRINT #4,LPAGE$; LOCATE 24,1: PRINT "PAIRINGS REQUEST "; RETURN APTXT$=" " ON APSWITCH GOSUB 57910,57920,57930,57940 LOCATE 24,70: PRINT APTXT$; RETURN APTXT$="CARDS " RETURN APTXT$="GRADED" RETURN APTXT$=" " RETURN APTXT$="PAIRS " RETURN

Page 61 of 79

#define priocen 130 #define priorep 120

TENNIS DATA CAPTURE BOX /*

/* /* /* /* /* /* /* /*

PSIBOX.C

SCPP 25.05.91

Copyright

ParisportInfo 1990/91 This program manages LCD */ Keyboard */ Serial output to P.C. */ Serial output to Scoreboard */ */ for a data capture device built by S.A.I.T.

*/

*/ */

*/

/*------------------------------------------------------*/ /* Essential to an understanding of this system, is the*/ /* use of the array ISCOR. This is the array that */ /* contains a column for EACH of the last n points of */ /* the match. The current point column is sent to */ /* TFRBUF, the buffer sent to the P.C. on polling */ /* receipt. AFFRAM is the buffer used to communicate */ /* with the LCD. BUFRAM is the buffer from the P.C. */ /* EXTBUF is the buffer to the SAIT panels. */ /* */ /* Status indicators ensure that packets are sent, and */ /* interruptions are detected, and properly handled. */ /* */ /*------------------------------------------------------*/ #define pc 0 /* sous turbo c pc=1 ;sous 68000 pc=0 */ #include #include #if pc #include #else #include #include extern int32 pidpan; extern int32 pidrep; extern int32 pidcen; extern int32 pidhoro; extern int32 xidpan; extern int32 xidrep; extern noret panneaux(); extern noret central(); extern noret horodateur(); extern noret report(); #define priopan 128 #define priohoro 129

Scoring Art – Stephen Parry – July 2011

#endif #include "define.c" #include "datadefs.c" #if pc #else /*---------------------------------------------------Ceci constitue le debut de la librairie specifique a psibox sous 68000 ------------------------------------------------------*/ extern int32 CL00_; extern int32 PS00_; /*---------------------------------------------------* Clear de l'ecran * *----------------------------------------------------*/ clrscr() { int8 i; for (i=0; i0) PAUSE_P(10); } } #endif /* MORE TO COME }

*/

/******************************************************************* *** * * AFFDEF() Affichage de la vue du central * * * ******************************************************************** **/ #if pc #else affdef(prior) int32 prior; { int j; int8 cntr_names;

Page 69 of 79

int8 *ptr; ptr= (int8 *)&bufskor[0]; for (j=0;j16 && ascval