190 : 210 ONERRORGOTO230 230 ONERRORREPORT:PRINT" at line ";ERL:END 240 MODE7 250 PROCa 260 PROCb 270 PROCc 280 PROCd 290 PROCe 300 PROCf 310 MODE7 320 PROCg 330 END 340 : 350 DEFPROCa 360 *FX229,1 370 *FX4,1 380 *FX225,140 390 PROCh 400 ENDPROC 410 : 420 DEFPROCg 430 *FX229,0 440 *FX4,0 450 *FX225,1 460 PROCi 470 ENDPROC 480 : 490 DEFPROCb 500 DIMj%256 510 ONERRORVDU6:CLOSE#0:MODE7:REPORT:PRINT" at line ";ERL:PROCk("KEY0 LIST "+STR$(ERL)+"|M"):PROCk("FX21"):PROCk("FX138,0,128"):PROCg:END 520 DIMl$(7) 530 PROCm 540 PROCn 550 ENDPROC 560 : 570 DEFPROCh 580 VDU23,1,0;0;0;0; 590 ENDPROC 600 : 610 DEFPROCi 620 VDU23,1,1;0;0;0; 630 ENDPROC 640 : 650 DEFFNS 660 ="Quaire" 670 : 680 DEFPROCm 690 o%=6 700 p%=3 710 q%=3 720 r%=7 730 s%=3 740 t%=7 750 u%=7 760 v%=3 770 w%=7 780 x%=7 790 y%=3 800 z%=7 810 aa%=3 820 ba%=3 830 ca%=3 840 da%=7 850 ea%=3 860 fa%=7 870 ga%=3 880 ha%=7 890 IFw%=v%THENVDU26,12:PRINT"personal_data% and personal_heading% arethe same.":PROCg:END 900 ENDPROC 910 : 920 DEFPROCn 930 LOCALia% 940 VDU26,12 950 PRINT" ";CHR$(144+o%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ"; 960 PRINTCHR$(144+o%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(144+o%);"ÿ"; 970 PRINTCHR$(144+o%);"ÿ";CHR$(144+p%);"êë ·Ž€µ ê£àðàðê ° °ð°ðàð   ";CHR$(144+o%);"ÿ"; 980 PRINTCHR$(144+o%);"ÿ";CHR$(144+p%);"ê뢡·Žµ· ¢ëêêê€ê¡µŽµœµµê® ";CHR$(144+o%);"ÿ"; 990 PRINTCHR$(144+o%);"";CHR$(144+p%);"¢£ £ ¡£¡ ¢£¢£¢ ¢¡££¡¡¡¡¢£   ";CHR$(145);" "; 1000 FORia%=1TO18 1010 PRINTCHR$(144+o%);"ÿ";SPC(36);CHR$(144+o%);"ÿ"; 1020 NEXT 1030 PRINTCHR$(144+o%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ"; 1040 VDU28,2,22,37,5 1050 ENDPROC 1060 : 1070 DEFPROCk($j%) 1080 LOCALX%,Y% 1090 X%=j%MOD256 1100 Y%=j%DIV256 1110 CALL&FFF7 1120 ENDPROC 1130 : 1140 DEFPROCd 1150 PROCq 1160 PRINTTAB(0,2);CHR$(128+r%);"Please insert your 8BS submissions"'CHR$(128+r%);"disc into drive 0 and press SPACE"'CHR$(128+r%);"when you are ready..." 1170 PRINT'CHR$(128+r%);"The disc must be in the drive at"'CHR$(128+r%);"all times when using this program." 1180 PROCja 1190 IFFNka=8THENPROCk("MOUNT 0"):PROCk("DIR $")ELSEPROCk("DRIVE 0"):PROCk("DIR $") 1200 IFFNla("!Quest")THENma%=OPENIN("!Quest"):na%=BGET#ma%:CLOSE#ma%ELSEna%=-1 1210 IFna%>0THENPRINT'CHR$(128+r%)"This program can only handle"'CHR$(128+r%)"version 0 files. Do you want to"'CHR$(128+r%)"delete the existing answers and"'CHR$(128+r%)"create a new answer file?";:na%=-2-FNoa 1220 IFna%=0THENPROCpa(FALSE):PROCu 1230 IFna%=-1THENna%=0:PROCpa(TRUE) 1240 IFna%=-2THENVDU26,12:PROCg:END 1250 ENDPROC 1260 : 1270 DEFFNoa 1280 LOCALqa$ 1290 PRINTCHR$(128+s%); 1300 *FX21 1310 REPEAT 1320 qa$=CHR$(GETAND&DF) 1330 UNTILqa$="Y"ORqa$="N" 1340 IFqa$="Y"THENPRINT"Yes"ELSEPRINT"No" 1350 =(qa$="Y") 1360 : 1370 DEFPROCja 1380 *FX21 1390 REPEATUNTILGET=32 1400 ENDPROC 1410 : 1420 DEFPROCq 1430 CLS 1440 PRINTTAB(5,0);CHR$(128+q%);"Questionnaire system 0.10" 1450 ENDPROC 1460 : 1470 DEFFNka 1480 LOCALA%,Y% 1490 A%=0 1500 Y%=0 1510 =(USR(&FFDA)AND&FF) 1520 : 1530 DEFFNla(ra$) 1540 LOCALma% 1550 ma%=OPENIN(ra$) 1560 IFma%=0THEN=FALSE 1570 CLOSE#ma% 1580 =TRUE 1590 : 1600 DEFPROCc 1610 LOCALA%,X%,Y% 1620 PROCq 1630 PRINTTAB(0,2); 1640 IFNOTFNla("Questns")THENPRINTCHR$(128+t%);"Sorry, I can't find the questions."'CHR$(128+t%);"Press SPACE to continue...":PROCja:VDU26,12:PROCg:END 1650 PRINTCHR$(128+t%);"Please wait, loading questions..."' 1660 DIMsa%FNta("Questns")-1 1670 PROCk("Load Questns "+STR$~(sa%)) 1680 IF?sa%<>0THENPRINTCHR$(128+t%);"Sorry, this program can only handle";CHR$(128+t%);"version 0 question files. Press"'CHR$(128+t%);"SPACE to continue...":PROCja:VDU26,12:PROCg:END 1690 ENDPROC 1700 : 1710 DEFFNta(ra$) 1720 LOCALma%,ua% 1730 ma%=OPENIN(ra$) 1740 ua%=EXT#ma% 1750 CLOSE#ma% 1760 =ua% 1770 : 1780 DEFPROCpa(va%) 1790 LOCALwa%,xa%,ya%,za% 1800 DIMab%(sa%!5,1) 1810 bb%=1+4+3+41+7*41+1+41+1+5*41+5*41 1820 wa%=9 1830 FORxa%=1TOsa%!5 1840 ab%(xa%,0)=wa% 1850 ab%(xa%,1)=bb% 1860 wa%=wa%+LEN($(sa%+wa%))+1 1870 IFsa%?wa%=0THENbb%=bb%+2:cb%=sa%?(wa%+1):wa%=wa%+2:FORdb%=1TOcb%:wa%=wa%+LEN($(sa%+wa%))+1:NEXT 1880 IFsa%?wa%=1THENbb%=bb%+5:wa%=wa%+9 1890 IFsa%?wa%=2THENbb%=bb%+2+sa%?(wa%+1):wa%=wa%+2 1900 NEXT 1910 DIMeb%bb%-1 1920 IFNOTva%THENENDPROC 1930 eb%?0=0 1940 eb%!1=sa%!1 1950 eb%!5=&2E2E2E2E 1960 FORya%=8TO295STEP41 1970 $(eb%+ya%)="" 1980 NEXT 1990 eb%?336=255 2000 $(eb%+337)="" 2010 eb%?378=0 2020 FORya%=379TO748STEP41 2030 $(eb%+ya%)="" 2040 NEXT 2050 PROCfb 2060 FORya%=1TOsa%!5 2070 za%=sa%+(ab%(ya%,0)+LEN($(sa%+ab%(ya%,0)))+1) 2080 eb%?ab%(ya%,1)=?za% 2090 IF?za%=0THENeb%?(ab%(ya%,1)+1)=0 2100 IF?za%=1THENeb%!(ab%(ya%,1)+1)=za%!5+1 2110 IF?za%=2THEN$(eb%+ab%(ya%,1)+1)="" 2120 NEXT 2130 PROCf 2140 ENDPROC 2150 : 2160 DEFPROCfb 2170 LOCALqa%,gb% 2180 REPEAT 2190 PROChb 2200 ib%=10:jb%=2 2210 REPEAT 2220 VDU31,ib%,jb% 2230 PROCi 2240 REPEAT 2250 *FX21 2260 qa%=GET 2270 UNTIL(qa%>=32ANDqa%<=127)ORqa%=13ORqa%=27OR(qa%>=136ANDqa%<=140) 2280 PROCh 2290 kb%=-1 2300 IFqa%=140THENPROClb:PROCmb:PROChb 2310 IFqa%=127ANDFNnb(ib%-1,jb%)<>(128+w%)ANDjb%<>2THENkb%=ib%:qa%=137 2320 IFqa%=13THENqa%=138:ib%=1 2330 REPEAT 2340 IFqa%=138ANDjb%<15THENjb%=jb%+1 2350 IFqa%=139ANDjb%>2THENjb%=jb%-1 2360 UNTILFNnb(0,jb%)<>32 2370 IFqa%>=32ANDqa%<=126ANDjb%<>5ANDjb%<>15THENVDU31,ib%,jb%,qa%:qa%=137 2380 IF(qa%AND&DF)=89OR(qa%AND&DF)=78ANDjb%=5THENeb%?336=-255*((qa%AND&DF)=89):PRINTTAB(ib%,jb%);FNob(eb%?336) 2390 IF(qa%AND&DF)=89OR(qa%AND&DF)=78ANDjb%=15THENeb%?378=-255*((qa%AND&DF)=89):PRINTTAB(ib%,jb%);FNob(eb%?378) 2400 IFqa%=138ORqa%=139THENib%=FNpb(ib%,jb%) 2410 IFqa%=136ANDFNnb(ib%-1,jb%)<>(128+w%)THENib%=ib%-1 2420 IFqa%=137ANDib%<34ANDjb%<>5ANDjb%<>15THENib%=ib%+1 2430 IFjb%=2ANDib%>12THENib%=12 2440 IFkb%<>-1THENPROCqb 2450 PROCi 2460 UNTILqa%=27 2470 PROCh 2480 PROClb 2490 PROCq 2500 gb%=FALSE 2510 PRINTTAB(0,2); 2520 IFNOTFNrb(sb$)THENPRINTCHR$(128+x%);"You must enter a valid user ID.":gb%=TRUE 2530 IFtb$=""THENPRINTCHR$(128+x%);"You must enter your name.":gb%=TRUE 2540 IFl$(1)=""THENPRINTCHR$(128+x%);"You must enter your address.":gb%=TRUE 2550 IFgb%THENPRINT'CHR$(128+x%);"Press SPACE to continue...":PROCja 2560 UNTILgb%=FALSE 2570 ENDPROC 2580 : 2590 DEFFNub(ib%,jb%) 2600 LOCALvb$,wb%,xb%,yb%,zb% 2610 IFHIMEM<>&7C00THEN=FNac(ib%,jb%) 2620 vb$="" 2630 xb%=FALSE 2640 yb%=&7C02+34+(jb%+5)*40 2650 zb%=&7C02+ib%+(jb%+5)*40 2660 FORwb%=yb%TOzb%STEP-1 2670 IFNOTxb%THENIF?wb%<>46AND?wb%<>32THENxb%=TRUE 2680 IFxb%THENvb$=CHR$(?wb%)+vb$ 2690 NEXT 2700 IFINSTR(vb$,"#")=0ANDINSTR(vb$,"_")=0ANDINSTR(vb$,"`")=0THEN=vb$ELSE=FNac(ib%,jb%) 2710 : 2720 DEFFNac(ib%,jb%) 2730 LOCALvb$,wb%,xb%,nb% 2740 vb$="" 2750 xb%=FALSE 2760 FORwb%=34TOib%STEP-1 2770 nb%=FNbc(wb%,jb%) 2780 IFNOTxb%THENIFnb%<>46ANDnb%<>32THENxb%=TRUE 2790 IFxb%THENvb$=CHR$(nb%)+vb$ 2800 NEXT 2810 =vb$ 2820 : 2830 DEFFNcc(vb$) 2840 LOCALdc% 2850 REPEAT 2860 dc%=(RIGHT$(vb$,1)="."ORRIGHT$(vb$,1)=" ") 2870 IFdc%THENvb$=LEFT$(vb$,LEN(vb$)-1) 2880 UNTILNOTdc% 2890 =vb$ 2900 : 2910 DEFFNec(fc$) 2920 LOCALgc$,hc%,nb% 2930 IFfc$=""THEN="" 2940 gc$="" 2950 FORhc%=1TOLEN(fc$) 2960 nb%=ASC(MID$(fc$,hc%,1)) 2970 IFnb%>=97ANDnb%<=122THENnb%=nb%-32 2980 gc$=gc$+CHR$(nb%) 2990 NEXT 3000 =gc$ 3010 : 3020 DEFFNrb(sb$) 3030 IFLEN(sb$)<3THEN=FALSE 3040 IFINSTR(sb$,".")<>0ORINSTR(sb$," ")<>0THEN=FALSE 3050 =TRUE 3060 : 3080 LOCALic% 3100 IFib%>kb%THENib%=ib%-2:ic$="":FORic%=ib%+1TO34:ic$=ic$+CHR$(FNnb(ic%,jb%)):NEXT:PRINTTAB(ib%,jb%);ic$;".":ENDPROC 3110 IFkb%=ib%AND(FNnb(ib%,jb%)=32ORFNnb(ib%,jb%)=46)THENib%=ib%-1:VDU31,ib%,jb%,46:ENDPROC 3120 IFkb%=ib%ANDFNnb(ib%,jb%)<>32ANDFNnb(ib%,jb%)<>46THENVDU31,ib%,jb%,46:ENDPROC 3130 ENDPROC 3140 : 3150 DEFPROCqb 3160 IFib%>kb%THENib%=ib%-2:VDU31,ib%,jb%,46 3170 IFkb%=ib%AND(FNnb(ib%,jb%)=32ORFNnb(ib%,jb%)=46)THENib%=ib%-1:VDU31,ib%,jb%,46:ENDPROC 3180 IFkb%=ib%ANDFNnb(ib%,jb%)<>32ANDFNnb(ib%,jb%)<>46THENVDU31,ib%,jb%,46:ENDPROC 3190 ENDPROC 3200 : 3210 DEFFNjc(kc$,ua%) 3220 =LEFT$(kc$+STRING$(ua%,"."),ua%) 3230 : 3240 DEFFNnb(ib%,jb%) 3250 IFHIMEM=&7C00THEN=?(&7C02+ib%+(jb%+5)*40) 3260 VDU31,ib%,jb%:A%=135:=((USR(&FFF4)AND&FFFF)DIV&100) 3270 : 3280 DEFFNbc(ib%,jb%) 3290 LOCALA%,hc%,lc%,mc% 3300 hc%=POS:lc%=VPOS 3310 VDU31,ib%,jb% 3320 A%=135 3330 mc%=((USR(&FFF4)AND&FFFF)DIV&100) 3340 VDU31,hc%,lc% 3350 =mc% 3360 : 3370 DEFFNpb(ib%,jb%) 3380 LOCALnc%,nb% 3390 IFjb%=2THEN=FNoc(ib%,10,12) 3400 IFjb%=3THEN=FNoc(ib%,7,34) 3410 IFjb%=5THEN=32 3420 IFjb%>=6ANDjb%<=12THEN=FNoc(ib%,0,34) 3430 IFjb%=14THEN=FNoc(ib%,19,34) 3440 IFjb%=15THEN=10 3450 VDU7:END 3460 : 3470 DEFFNoc(ib%,pc%,qc%) 3480 IFib%qc%THEN=qc%ELSE=ib% 3490 : 3500 DEFFNob(rc%) 3510 IFrc%=255THEN="Yes"ELSE="No " 3520 : 3530 DEFPROChb 3540 LOCALsc% 3550 PROCq 3560 PRINTTAB(0,2);CHR$(128+v%);"User ID:";CHR$(128+w%);CHR$(eb%?5);CHR$(eb%?6);CHR$(eb%?7);CHR$(128+v%) 3570 PRINTCHR$(128+v%);"Name:";CHR$(128+w%);FNjc($(eb%+8),28) 3580 PRINT'CHR$(128+v%);"Address:";SPC(14);"Publish:";CHR$(128+w%);FNob(eb%?336) 3590 FORsc%=1TO7 3600 PRINTCHR$(128+w%);FNjc($(eb%+8+sc%*41),34) 3610 NEXT 3620 PRINT'CHR$(128+v%);"Telephone number:";CHR$(128+w%);FNjc($(eb%+337),16) 3630 PRINTCHR$(128+v%);"Publish:";CHR$(128+w%);FNob(eb%?378) 3640 PRINT'CHR$(128+y%);"Press";CHR$129;"f0";CHR$(128+y%);"for help..."; 3650 ENDPROC 3660 : 3670 DEFPROClb 3680 LOCALtc%,uc% 3690 PRINTTAB(0,17);CHR$(128+ba%);"Please wait... "; 3700 sb$=LEFT$(FNcc(FNec(CHR$(FNnb(10,2))+CHR$(FNnb(11,2))+CHR$(FNnb(12,2))))+"...",3) 3710 tb$=FNub(7,3) 3720 FORtc%=6TO12 3730 l$(tc%-5)=FNub(1,tc%) 3740 NEXT 3750 vc$=FNub(19,14) 3760 $(eb%+5)=sb$ 3770 $(eb%+8)=tb$ 3780 FORuc%=1TO7 3790 $(eb%+8+uc%*41)=l$(uc%) 3800 NEXT 3810 $(eb%+337)=vc$ 3820 ENDPROC 3830 : 3840 DEFPROCmb 3850 LOCALqa% 3860 PROCq 3870 PRINTTAB(0,2);CHR$(128+z%);"Use the cursor keys to move around.";CHR$(128+z%);"Press RETURN to move to the start"'CHR$(128+z%);"of the next line. Type as normal to";CHR$(128+z%);"enter information. "; 3880 PRINT"DELETE will"'CHR$(128+z%);"delete the character before the"'CHR$(128+z%);"cursor but will not close up the"'CHR$(128+z%);"gap. Press ESCAPE when you have"'CHR$(128+z%);"finished." 3890 PRINT'CHR$(128+z%);"You must enter your user ID, name"'CHR$(128+z%);"and address. However, you can"'CHR$(128+z%);"choose not to have your address"'CHR$(128+z%);"published." 3900 PRINTTAB(0,16);CHR$(128+aa%);"Press";CHR$129;"f0";CHR$(128+aa%);"for more help or ESCAPE to";CHR$(128+aa%);"continue editing..."; 3910 REPEAT 3920 *FX21 3930 qa%=GET 3940 UNTILqa%=140ORqa%=27 3950 IFqa%=27THENENDPROC 3960 PROCq 3970 PRINTTAB(0,2);CHR$(128+z%);"You do not need to enter your"'CHR$(128+z%);"telephone number and even if you do";CHR$(128+z%);"it will only be published if you"'CHR$(128+z%);"request this." 3980 PRINTTAB(0,16);CHR$(128+aa%);"Press ESCAPE to continue"'CHR$(128+aa%);"editing..."; 3990 REPEAT 4000 *FX21 4010 UNTILGET=27 4020 ENDPROC 4030 : 4040 DEFPROCf 4050 PROCk("Save !Quest "+STR$~(eb%)+" +"+STR$~(bb%)+" 0 0") 4060 ENDPROC 4070 : 4080 DEFPROCu 4090 PROCk("Load !Quest "+STR$~(eb%)) 4100 IFeb%!1=sa%!1THENENDPROC 4110 PROCq 4120 PRINTTAB(0,2);CHR$(128+u%);"Sorry - the questionnaire ID in the";CHR$(128+u%);"question and answer files do not"'CHR$(128+u%);"match. Do you want to delete the"'CHR$(128+u%);"answer file and start again?"; 4130 IFNOTFNoaTHENVDU26,12:PROCg:END 4140 *Delete !Quest 4150 RUN 4160 : 4170 DEFPROCe 4180 LOCALwc%,za%,qa%,xc%,mc% 4190 wc%=1 4200 REPEAT 4210 PROCq 4220 PRINTTAB(0,2);CHR$(128+ca%);"Question ";wc%;" of ";sa%!5;":"' 4230 za%=FNyc(wc%) 4240 PRINT';:lc%=VPOS 4250 PRINTTAB(0,17);CHR$(128+y%);"Press";CHR$129;"f0";CHR$(128+y%);"for help..."; 4260 REPEAT 4270 *FX21 4280 qa%=GET 4290 xc%=FALSE 4300 IFqa%=140THENPROCzc:xc%=TRUE 4310 IFqa%=141THENPRINTTAB(0,17);CHR$(128+ba%);"Please wait... ";:PROCf:PRINTTAB(0,17);CHR$(128+y%);"Press";CHR$129;"f0";CHR$(128+y%);"for help..."; 4320 IFqa%=142THENPROCfb:xc%=TRUE 4330 IFqa%=143THENPROCad:xc%=TRUE 4340 IFqa%=136ANDwc%>1THENwc%=wc%-1:xc%=TRUE 4350 IFqa%=137ANDwc%0THENwc%=mc%:xc%=TRUE 4410 UNTILxc%ORqa%=27 4420 UNTILqa%=27 4430 ENDPROC 4440 : 4450 DEFPROCzc 4460 LOCALqa% 4470 PROCq 4480 PRINTTAB(0,2);CHR$(128+z%);"Use the left and right cursor keys"'CHR$(128+z%);"to move between questions. To"'CHR$(128+z%);"answer, either press the"'CHR$(128+z%);"appropriate number for multiple"'CHR$(128+z%);"choice questions or start "; 4490 PRINT"typing it";CHR$(128+z%);"in and press RETURN when you have"'CHR$(128+z%);"finished for other questions."''CHR$(128+z%);"Pressing COPY on any question will"'CHR$(128+z%);"indicate that you do not wish to"'CHR$(128+z%);"answer it." 4500 PRINTTAB(0,16);CHR$(128+aa%);"Press";CHR$129;"f0";CHR$(128+aa%);"for more help or ESCAPE to";CHR$(128+aa%);"continue editing..."; 4510 REPEAT 4520 *FX21 4530 qa%=GET 4540 UNTILqa%=140ORqa%=27 4550 IFqa%=27THENENDPROC 4560 PROCq 4570 PRINTTAB(0,2);CHR$(128+z%);"Press";CHR$129;"f1";CHR$(128+z%);"to save your answers,";CHR$129;"f2"'CHR$(128+z%);"to edit your personal details and"'CHR$129;"f3";CHR$(128+z%);"to edit your computing and"'CHR$(128+z%);"general interests." 4580 PRINT'CHR$(128+z%);"Press ESCAPE to save your answers"'CHR$(128+z%);"and quit the program." 4590 PRINTTAB(0,16);CHR$(128+aa%);"Press ESCAPE to continue"'CHR$(128+aa%);"editing..."; 4600 REPEAT 4610 *FX21 4620 UNTILGET=27 4630 ENDPROC 4640 : 4650 DEFFNyc(dd%) 4660 LOCALed%,za% 4670 ed%=sa%+ab%(dd%,0) 4680 PROCfd(da%,$ed%) 4690 za%=ed%?(LEN($ed%)+1) 4700 IFza%=0THENPROCgd(ed%):PROChd(ed%,dd%) 4710 IFza%=1THENPROCid(ed%,dd%) 4720 IFza%=2THENPROCjd(ed%,dd%) 4730 =za% 4740 : 4750 DEFFNkd(dd%) 4760 LOCALl% 4770 l%=sa%+ab%(dd%,0) 4780 =(l%+LEN($l%)+1) 4790 : 4800 DEFPROCfd(C%,T$) 4810 REPEAT 4820 IFLEN(T$)<36THENPRINTCHR$(128+C%);T$;SPC(35-LEN(T$));:T$=""ELSEA%=INSTR(T$," ",37):A%=A%+(A%=0)*-36:REPEAT:A%=A%-1:UNTILMID$(T$,A%,1)=" ":PRINTCHR$(128+C%);LEFT$(T$,A%-1);SPC(36-A%);:T$=MID$(T$,A%+1) 4830 UNTILT$="" 4840 ENDPROC 4850 : 4860 DEFPROCgd(ed%) 4870 LOCALl%,ld%,md% 4880 l%=ed%+LEN($ed%)+3 4890 ld%=l%?-1 4900 FORmd%=1TOld% 4910 PRINTCHR$(128+da%);" ";md%;") ";$l% 4920 l%=l%+LEN($l%)+1 4930 NEXT 4940 ENDPROC 4950 : 4960 DEFPROChd(ed%,dd%) 4970 LOCALnd% 4980 PRINT'CHR$(128+ea%);"Current answer:";CHR$(128+fa%); 4990 nd%=eb%?(ab%(dd%,1)+1) 5000 IFnd%=0THENPRINT"No answer"ELSEPRINT;nd% 5010 ENDPROC 5020 : 5030 DEFPROCid(ed%,dd%) 5040 LOCALqc%,nd% 5050 PRINT'CHR$(128+ea%);"Current answer:";CHR$(128+fa%); 5060 qc%=!(ed%+LEN($ed%)+6) 5070 nd%=eb%!(ab%(dd%,1)+1) 5080 IFnd%=qc%+1THENPRINT"No answer"ELSEPRINT;nd% 5090 ENDPROC 5100 : 5110 DEFPROCjd(ed%,dd%) 5120 LOCALvb$ 5130 PRINT'CHR$(128+ea%);"Current answer:"'CHR$(128+fa%); 5140 vb$=$(eb%+ab%(dd%,1)+1) 5150 IFvb$=""THENPRINT"No answer"ELSEPRINTvb$ 5160 ENDPROC 5170 : 5180 DEFFNbd(qa%,dd%) 5190 IFNOT((qa%>=49ANDqa%<=(48+?(FNkd(dd%)+1)))ORqa%=135)THEN=-1 5200 IFqa%=135THENqa%=48 5210 eb%?(ab%(dd%,1)+1)=qa%-48 5220 =(dd%-(dd%=48ANDqa%<=57)ORqa%=135)THEN=-1 5270 pc%=!(FNkd(dd%)+1) 5280 qc%=!(FNkd(dd%)+5) 5290 IFqa%=135THENeb%!(ab%(dd%,1)+1)=qc%+1:=(dd%-(dd%=48ANDqa%<=57)ORqa%=13ORqa%=127ORqa%=135 5390 IFqa%=135THENgc$=STR$(qc%+1) 5400 IFqa%>=48ANDqa%<=57ANDLEN(gc$)0THENgc$=LEFT$(gc$,LEN(gc$)-1):PRINTTAB(ib%,jb%);FNjc(gc$,od%);TAB(ib%,jb%);gc$; 5420 UNTIL(qa%=13AND(gc$=""OR(VAL(gc$)>=pc%ANDVAL(gc$)<=qc%)))ORqa%=135 5430 PROCh 5440 IFgc$<>""THENeb%!(ab%(dd%,1)+1)=VAL(gc$) 5450 =(dd%-(dd%=32ANDqa%<=126)ORqa%=135)THEN=-1 5500 IFqa%=135THEN$(eb%+ab%(dd%,1)+1)="":=(dd%-(dd%=32ANDqa%<=127)ORqa%=13ORqa%=135 5600 IFqa%>=32ANDqa%<=126ANDLEN(gc$)0THENgc$=LEFT$(gc$,LEN(gc$)-1):PRINTTAB(1,jb%+1);FNjc(gc$,od%);TAB(1,jb%+1);gc$; 5620 UNTILqa%=13ORqa%=135 5630 PROCh 5640 IFqa%=135THEN$(eb%+ab%(dd%,1)+1)="" 5650 IFgc$<>""ANDqa%<>135THEN$(eb%+ab%(dd%,1)+1)=gc$ 5660 =(dd%-(dd%=32ANDqa%<=127)ORqa%=13ORqa%=27OR(qa%>=136ANDqa%<=140) 5790 PROCh 5800 kb%=-1 5810 IFqa%=140THENPROCqd:PROCrd:PROCpd 5820 IFqa%=127ANDib%>1THENkb%=ib%:qa%=137 5830 IFqa%=13THENqa%=138:ib%=1 5840 REPEAT 5850 IFqa%=138ANDjb%<14THENjb%=jb%+1 5860 IFqa%=139ANDjb%>3THENjb%=jb%-1 5870 UNTILFNnb(0,jb%)<>(128+ga%) 5880 IFqa%>=32ANDqa%<=126THENVDU31,ib%,jb%,qa%:qa%=137 5890 IFqa%=136ANDib%>1THENib%=ib%-1 5900 IFqa%=137ANDib%<34THENib%=ib%+1 5910 IFjb%=2ANDib%>12THENib%=12 5920 IFkb%<>-1THENPROCsd 5930 PROCi 5940 UNTILqa%=27 5950 PROCh 5960 PROCqd 5970 ENDPROC 5980 : 5990 DEFPROCpd 6000 LOCALtd% 6010 PROCq 6020 PRINTTAB(0,2);CHR$(128+ga%);"Computing interests:" 6030 FORtd%=379TO748STEP41 6040 IFtd%=584THENPRINTCHR$(128+ga%)'CHR$(128+ga%);"General interests:" 6050 PRINTCHR$(128+ha%);FNjc($(eb%+td%),34) 6060 NEXT 6070 PRINTTAB(0,17);CHR$(128+y%);"Press";CHR$129;"f0";CHR$(128+y%);"for help..."; 6080 ENDPROC 6090 : 6100 DEFPROCsd 6110 IFib%>kb%THENib%=ib%-2:VDU31,ib%,jb%,46 6120 IFkb%=ib%AND(FNnb(ib%,jb%)=32ORFNnb(ib%,jb%)=46)THENib%=ib%-1:VDU31,ib%,jb%,46:ENDPROC 6130 IFkb%=ib%ANDFNnb(ib%,jb%)<>32ANDFNnb(ib%,jb%)<>46THENVDU31,ib%,jb%,46:ENDPROC 6140 ENDPROC 6150 : 6160 DEFPROCqd 6170 LOCALjb%,wb% 6180 PRINTTAB(0,17);CHR$(128+ba%);"Please wait... "; 6190 jb%=3 6200 FORwb%=0TO9 6210 $(eb%+379+wb%*41)=FNub(1,jb%) 6220 jb%=jb%+1 6230 IFjb%=8ORjb%=9THENjb%=10 6240 NEXT 6250 ENDPROC 6260 : 6270 DEFPROCrd 6280 LOCALqa% 6290 PROCq 6300 PRINTTAB(0,2);CHR$(128+z%);"Use the cursor keys to move around.";CHR$(128+z%);"Press RETURN to move to the start"'CHR$(128+z%);"of the next line. Type as normal to";CHR$(128+z%);"enter information. "; 6310 PRINT"DELETE will"'CHR$(128+z%);"delete the character before the"'CHR$(128+z%);"cursor but will not close up the"'CHR$(128+z%);"gap. Press ESCAPE when you have"'CHR$(128+z%);"finished." 6320 PRINTTAB(0,16);CHR$(128+aa%);"Press ESCAPE to continue"'CHR$(128+aa%);"editing..."; 6330 REPEAT 6340 *FX21 6350 UNTILGET=27 6360 ENDPROC