10 REM" [0x16] [0x07] [0x0E] 20 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] Chains. By C.J.Richardson. 30 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒChains. By C.J.Richardson. 40 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚This program is not finished 50 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚yet, although it is just a 60 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚tidying up job required. You 70 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚have persevered well already, 80 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚now see if you can work out 90 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚what this program does, and 100 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚ how to use it! 110 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] †-------------------------------- 120 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] This program is not yet PD as 130 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] it is not yet totally finished 140 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] I haven't had time to debug by 150 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] use yet. So please hang on to 160 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] it for the mo! Appreciated, CJR. 170 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] †-------------------------------- 180 DEFFNS:="chains" 190 IFPAGE<>&1900:PRINT"CHANGE TO &1900":VDU7:END:REM PAGE=&1900:CHAIN"1staid" 200 ONERROR:CLOSE#0:REPORT:PRINTERL:END 210 MODE7:HIMEM=&2900:REM START OF DATA 220 PROCinit 230 REPEAT 240 CLS:PROCd("Chains. By C.J.Richardson.") 250 PRINT':PROCd("Choose:"):PRINT' 260 PROCd("1. Add a new statement.") 270 PROCd("2. Add addresses to choices.") 280 PROCd("3. Save/load data.") 290 PROCd("4. Play.") 300 PROCd("5. Find top of data.") 310 A$=GET$:CLS 320 IFA$="1"PROCstatement 330 IFA$="2"IFP%<>HIMEM+2:PROCchoice 340 IFA$="3"PROCsave_load 350 IFA$="4"PROCtestout 360 IFA$="5"PROCftop 370 UNTILFALSE 380 DEFPROCd(A$):PRINT"";A$'"ƒ";A$:ENDPROC 390 DEFPROCinit 400 U%=0:P%=HIMEM+2:$P%="|****" 410 ENDPROC 420 DEFPROCstatement 430 PROCd("Input new statement to &"+STR$~P%) 440 INPUT''$P%:IF LEFT$($P%,4)="*LO." $P%="!!"+$P% 450 $P%="|"+$P% 460 P%=P%+LEN$P%+1 470 L%=0:REPEAT 480 PROCd("| To finish. Any other for more.") 490 A$=GET$ 500 IFA$<>"|":PROCd("Enter choice "+STR$L%):INPUT $P%:$P%="!!"+$P%:P%=P%+LEN$P%+1:L%=L%+1 510 UNTILA$="|"ORL%=10:$P%="|****" 520 ENDPROC 530 DEFPROCchoice:H%=HIMEM+1 540 PROCsrch:REPEAT 550 REPEAT:A$=GET$:UNTILVALA$>0ANDVALA$<4 560 IFA$="1"PROCfindadd:A$="" 570 IFA$="2"PROCsrch 580 UNTILA$="3":A$="" 590 ENDPROC 600 DEFPROCt:CLS:PROCd("Tie choice to statement."):PROCd("1. Tie."):PROCd("2. Find next choice."):PROCd("3. Back to menu."):ENDPROC 610 DEFPROCsrch:IFH%>=P%H%=HIMEM+1 620 REPEAT:H%=H%+1:IF?H%=ASC"|"CLS:PROCt:B$=$(H%+1):IFINSTR(B$,"*LO.")B$=MID$(B$,3) 630 UNTIL?(H%-1)=ASC"!"AND?H%=ASC"!" OR H%>P%:H%=H%+1 640 IFB$<>"****" PRINTTAB(0,9);B$'$H%;SPC200 ELSE PROCd("None free!") 650 ENDPROC 660 DEFPROCfindadd:CLS:PROCd("Choose statement to go with:"):PRINTB$'$H%:PROCd("1. Find next free choice."):PROCd("2. Tie to this."):PROCd("3. Quit.") 670 IFLEFT$($H%,4)="*LO." U%=1:OSCLI"SA. TEMP "+STR$~HIMEM+" "+STR$~(P%+1):OSCLI"LO."+MID$($H%,5)+" "+STR$~HIMEM 680 T%=HIMEM+3:PRINTTAB(0,12);$T% 690 REPEAT:A$=GET$ 700 IFA$="1"IFT%ASC"|" X%=X%+3:A%=A%+2 1010 UNTIL?(X%)=ASC"|"AND?(X%-1)=13:VDU32,32 1020 REPEAT:A%=A%+1:?A%=0:UNTIL A%=&85 1030 REPEAT:B%=VALGET$:X%=?(B%*2+&70)+?(B%*2+&71)*256:UNTILX%>&100 1040 UNTILFALSE 1050 ENDPROC