10 PROCd:PROCQ:PROCe:PROCf:REPEAT:PROCg:IF(q%=-1)AND(o%AND4)PROC0(NOT4)
   80   IF`0%PROCI
   90 UNTIL0:END
  110 DEFPROCg:LOCALc%:PROC4:c%=FN0(100,0,0):IFc%<128ENDPROC
  160 IFc%=135PROC6(FALSE):ENDPROC
  170 IFc%=167PROC6(TRUE):ENDPROC
  180 IFc%=130ORc%=131PROCC:ENDPROC
  190 IFc%<>132ELSEIFh%=3PROCh:ENDPROCELSEPROCC:ENDPROC
  200 IFh%=3ENDPROC
  210 IFc%>138ANDc%<144PROCL:ENDPROC
  220 IFc%=133:PROCC:ENDPROC
  230 IFc%=128PROCL:ENDPROC
  240 IFc%=134PROCi:ENDPROC
  250 IFc%=163PROCC:ENDPROC
  260 IFc%=136ANDa1%PROCI:ENDPROC
  270 ENDPROC
  280 DEFPROCC:IFc%=132ANDa%=1ENDPROC
  300 IFc%=130ANDa%=0ENDPROC
  310 LOCALf%:REPEAT:ONc%-(129)PROCj,PROCD,PROCR,PROCRELSEPROCk
  340 IFf%=-1ORf%=129PROCm:UNTILTRUE:ENDPROC
  350 c%=f%:IFc%=130ORc%=132OR`0%PROCP
  370 IF`0%PROCI
  380 UNTIL0
  390 DEFPROCm:PROCP:IFq%=-1ELSEPROC0(o%OR4)
  420 ENDPROC
  430 DEFPROCn:DIMd%(60):DIMb%(60):q%=-1:DIMa0%(5):DIMr%(5):DIMw0%(5):DIMj2%20:LOCALI%:FORI%=0TO5:a0%(I%)=0:r%(I%)=-1:w0%(I%)=0:NEXT:m1%=@CO%+@WRDAM%+@WRDXY%:o3%=@CCO%+@WRDAM%+@WRDXY%:k2%=@MM%+@WRDAM%+@WRDXY%:DIMb1%(2):b1%(0)=5:b1%(1)=30:b1%(2)=55:x0%=FALSE:OSCLI"fx 4,2":OSCLI"fx 225,128"
  640 OSCLI"fx 226,144":OSCLI"fx 227,160":OSCLI"fx 228,0":OSCLI"fx 229,1":DIMG$(13),U$(13):R$=CHR$9:d$=CHR$13:e$=CHR$1:f$=R$+d$+e$:PROCo:PROCp:h%=0:x%=0:a%=0:`0%=0:j$="Phone V1.00":Y$="RAM:!P.DIRECTORY":PROCq:ENDPROC
 5000 DEFPROCi:IFg%<2+2PROC@(17):PROC2:ENDPROC
 5020 LOCALi%,c1%:c1%=o%:PROC0(256+64):h%=5:PROC2:W$=FN4(4,25,25,2):h%=0:IFW$=""PROC2:PROC0(c1%):ENDPROC
 5100 i%=2-1:b%=FN1(0,W$,b0%,0):REPEAT:IFb%=-1UNTILTRUE:PROC@(16):PROC2:PROC0(c1%):ENDPROC
 5140 REPEATi%=i%+1:UNTILb%=b%(i%):IFd%(i%)AND1UNTILTRUEELSEPROCS:UNTILFALSE
 5160 b%=FN1(0,W$,b0%,0):FORi%=2TOg%:IFb%=b%(i%)PROCSELSEPROCr
 5190 NEXT:a1%=TRUE:IFd%(a%)AND1ELSEPROCT
 5220 PROC2:PROC0(c1%OR128):ENDPROC
 5250 DEFPROCS:b%=FN@(4,0,b%,0):IFb%<>-1b%=FN1(0,W$,b%,2)
 5280 ENDPROC
 5290 DEFPROCr:M$="":PROC9(i%):d%(i%)=d%(i%)AND-2:ENDPROC
 5330 DEFPROC9(i%):LOCALX%,Y%:PROCE(i%):IFd%(i%)AND4:PROC1(1):PRINTTAB(X%-2,Y%);"D":PROC1(0)ELSEPRINTTAB(X%-2,Y%);" "
 5370 PRINTTAB(X%,Y%);M$;SPC(20-LENM$):ENDPROC
 5390 DEFPROCI:IFg%=2PRINTTAB(5,4);"No Directory entries"
 5410 PROC7:IFg%>2PROCs
 5430 a1%=FALSE:IF`0%>0a%=`0%ELSEa%=0
 5450 `0%=FALSE:PROC0(NOT128):PROC5:ENDPROC
 5490 DEFPROCs:LOCALi%:FORi%=2TOg%-1:PROCG(b%(i%),2):PROC9(i%):d%(i%)=d%(i%)OR1:NEXT:IFg%<60M$="":PROC9(g%)
 5570 ENDPROC
 5580 DEFPROCf:g%=2:VDU23,1|:PRINTTAB(5,2);"MANUAL VOICE CALL";TAB(5,3);"NEW ENTRY";TAB(5,4);:d%(0)=1:d%(1)=1:b%=FN@(7,0,b0%,2):IFb%=-1PRINT;"No Directory entries"ELSEPROCt
 5660 a%=0:h%=0:x%=0:PROC2:a1%=FALSE:PROC0(256+8+16+32+64):PROC5:p3%=TRUE:ENDPROC
 5740 DEFPROCt:REPEAT:PROC9(g%):b%(g%)=b%:d%(g%)=1OR&80000000:b%=FN@(4,0,b%,2):g%=g%+1:UNTILb%=-1ORg%=60:ENDPROC
 5830 DEFPROCe:PROC3(0,"Please wait while loading directory ...","",""):o0%=FNC:X%=@MMALA%:Y%=@HDMMT%:A%=o0%:CALLk2%:IF@C%PROC@(14):STOP
 5890 j%=@BHA%:b0%=j%+47:n5%=@Y%:p3%=FALSE:m2%=FND:IFm2%=-1PROC@(20)
 5950 IFm2%<1PROCu:ENDPROC
 5960 i0%=FALSE:z%=FN@(6,0,b0%,0):ENDPROC
 5990 DEFFNC:Y%=@HDMMC%:X%=@MMLEN%:CALLk2%:IF@BHA%>9999:=6144
 6020 =2048
 6030 DEFFND:OSCLI("LOAD "+Y$+" "+STR$~j%):IF@ERC%THEN=0
 6060 IFFNETHEN=-1
 6070 =o0%
 6080 DEFFNE:LOCALA%,Y%:A%=j%:Y%=o0%-2:CALLd1%:=@C%
 6140 DEFPROCu:i0%=TRUE:j%!17=-1:$(j%+21)="":z%=b0%:RESTOREq3%:LOCALI%,H$:READG$(0):REPEAT:e%=ASC(G$(0)):IFG$(0)="V"t%=8ELSEt%=13
 6250 H$=G$(0):FORI%=1TOt%:READG$(I%):H$=H$+G$(I%)+R$:NEXT:$z%=H$:z%=z%+1+LENH$:READG$(0):UNTILG$(0)="****":?z%=1:PROCF:ENDPROC
 6370 .q3%
 6380 DATA D,"Teletype serial",TTY,,300,full,originate,no,7,1,even,RS423,rts/cts,""
 6390 DATA D,"Videotex Modem",VIDEOTEX,,1200/75,full,originate,no,7,1,even,PHONE,none,""
 6400 DATA D,"VT100 serial",VT100,,9600,full,originate,no,7,1,even,RS423,xon/xoff,""
 6410 DATA"****"
 6420 DEFPROCL:ONc%-(139)PROCv,PROCw,PROCx,PROCyELSEIFc%=128PROCT
 6440 ENDPROC
 6450 DEFPROCv:PROC7:REPEAT:a%=(a%+40)MOD60:UNTILd%(a%)AND1:PROC5:ENDPROC
 6520 DEFPROCw:PROC7:REPEAT:a%=(a%+20)MOD60:UNTILd%(a%)AND1:PROC5:ENDPROC
 6590 DEFPROCx:PROC7:REPEAT:a%=a%+1:IFa%>=g%a%=0
 6640 UNTILd%(a%)AND1:PROC5:ENDPROC
 6670 DEFPROCy:PROC7:REPEAT:a%=a%-1:IFa%<0a%=g%-1
 6720 UNTILd%(a%)AND1:PROC5:ENDPROC
 6750 DEFPROCT:PROC7:a%=0:PROC5:ENDPROC
 6800 DEFPROC5:LOCALX%,Y%,y%:PROCE(a%):PROC1(1):PRINTTAB(X%-1,Y%);k$:PROC1(0):IFh%<>0ENDPROC
 6870 y%=o%:IFa%=0y%=y%AND(NOT2)ELSEy%=y%OR2
 6890 IFa%=1y%=y%AND(NOT8)ELSEy%=y%OR8
 6900 IFo%<>y%PROC0(y%)
 6910 ENDPROC
 6920 DEFPROC7:LOCALX%,Y%:PROCE(a%):PRINTTAB(X%-1,Y%);" ":ENDPROC
 6970 DEFPROCE(n2%):X%=b1%(n2%DIV20):Y%=2+n2%MOD20:ENDPROC
 7010 DEFFN3:IFx0%:=TRUE
 7030 CALLn1%:IF@C%PROC@(0):=FALSE
 7050 o1%=@Y%:CALLp1%:IF@C%PROC@(0):Y%=o1%:CALLq1%:o1%=0:=FALSE
 7080 r3%=@Y%:s3%=o%:x0%=TRUE:=TRUE
 7120 DEFPROCP:IFh%>3h%=0
 7140 IFx0%ELSEPROC2:ENDPROC
 7150 o%=s3%:Y%=r3%:CALLr1%:IF@C%PRINT"Can't restore context":STOP
 7190 Y%=o1%:CALLs1%:IF@C%PRINT"Can't restore screen":STOP
 7220 x0%=FALSE:PROC2:ENDPROC
10000 DEFPROCj:LOCALh%,x%:h%=1:x%=1:IFa%=1PROCzELSEPROCU(a%)
10040 IFb%=-1f%=-1:ENDPROC
10050 IFFN3ELSEf%=-1:ENDPROC
10060 IFq%=-1PROC0(256+1+8+64)ELSEPROC0(256+1+4+8+64)
10070 PROC@0:PROC00:REPEAT:PROC10:IFe%=32IFFNFUNTILFALSE
10120 IFe%<>32IFG$(1)=""IFFNIUNTILFALSE
10130 IFe%=68PROC20
10140 IFFNLUNTILTRUEELSEUNTILFNP
10150 PROCF:f%=k%:ENDPROC
10180 DEFPROCz:IFg%=60PROC@(9):b%=-1:ENDPROC
10200 IFFN3ELSEb%=-1:ENDPROC
10210 LOCALh%,x%:h%=2:x%=2:PROC2:PROC4:PROC0(256+2):LOCALc%,a%:a%=1:REPEAT:PROC4:c%=FN0(100,0,0):IFc%>138ANDc%<144PROCL
10320 UNTILc%=130:o2%=(a%=0)OR(a%=1):IFo2%G$(0)="DATA":e%=68:LOCALI%:FORI%=1TO13:G$(I%)="":NEXTELSEPROCU(a%)
10350 IFo2%ELSEIFb%=-1ENDPROC
10360 b%=0:ENDPROC
10380 DEFPROCU(t3%):b%=FN@(7,t3%-2,0,1):ENDPROC
10410 DEFPROC30:IFy0%ELSEENDPROC
10430 LOCAL_%:IFG$(0)=U$(0)ELSEIFU$(0)="DATA"e%=68:PROCAELSEe%=86:PROCA
10450 FOR_%=0TOt%:G$(_%)=U$(_%):NEXT:y0%=FALSE:PROCH:PROC0(NOT128):ENDPROC
10520 DEFPROC00:LOCAL_%:FOR_%=0TOt%:U$(_%)=G$(_%):NEXT:y0%=FALSE:e1%=e%:ENDPROC
10600 DEFPROC@0:PROCB(0,79,1,22):PROCA:PROCH:ENDPROC
10650 DEFPROCA:IFe%=68t%=13:s%=1ELSEt%=8:s%=0
10670 VDU28,1,21,78,2,12,26:LOCAL_%,X%,Y%,W%:FOR_%=0TOt%:X%=p%(s%,_%,0):Y%=p%(s%,_%,1):W%=p%(s%,_%,2):PRINTTAB(X%-15,Y%);Z$(s%,_%);TAB(X%+W%+1,Y%);">":NEXT:PRINTTAB(p%(s%,0,0),p%(s%,0,1));:IFe%=68PRINT;"DATA "ELSEPRINT;"VOICE"
10770 ENDPROC
10780 DEFPROCH:LOCAL_%:FOR_%=1TOt%:PRINTTAB(p%(s%,_%,0),p%(s%,_%,1));:PRINTG$(_%);SPC(p%(s%,_%,2)-LENG$(_%)):NEXT:ENDPROC
10850 DEFPROC10:LOCAL_%:_%=0:PROC2:REPEAT:PROC4:k%=FNG(_%):IFk%=136PROC30:_%=0:UNTIL0
10930 IFk%=13ORk%=141ORk%=142_%=(_%+1)MOD(t%+1):UNTIL0
10940 IFk%=140ORk%=143_%=(_%+t%)MOD(t%+1):UNTIL0
10950 IFk%=128_%=0:UNTIL0
10960 IFk%=0PROC2:UNTIL0
10970 IFk%=129ORk%=131ORk%=132UNTILTRUEELSEUNTILFALSE
10980 ENDPROC
10990 DEFFNG(_%):LOCALX%,Y%,W%,k%,G$:X%=p%(s%,_%,0):Y%=p%(s%,_%,1):W%=p%(s%,_%,2):PRINTTAB(X%-2,Y%);:PROC1(1):PRINT;"<";TAB(X%+W%+1,Y%);">";:PROC1(0):G$=FN4(X%,Y%,W%,0):IF_%=3PROCVELSEIFe%=68PROC40
11090 IFG$<>""G$(_%)=G$:IFG$<>U$(_%)ANDNOTy0%y0%=TRUE:PROC0(o%+128)
11100 IF_%=0IFFNH:=k%
11110 IF_%<>0IFRIGHT$(G$(_%),1)=" ":REPEATG$(_%)=LEFT$(G$(_%),LEN(G$(_%))-1):UNTILRIGHT$(G$(_%),1)<>" "
11120 PRINTTAB(X%-2,Y%);"< ";LEFT$(G$(_%)+STRING$(W%," "),W%);" >";:=k%
11140 DEFFN4(X%,Y%,W%,f1%):LOCALH$,C%,J%:H$="":J%=0:VDU23,1,1|:REPEAT:C%=FN0(100,X%+J%,Y%):IFC%=135PROC6(FALSE)
11200 IFC%=167PROC6(TRUE)
11210 IFC%=167ORC%=135PRINTTAB(X%,Y%);H$;:UNTILFALSE
11220 IFC%<>127ELSEIFJ%=0UNTIL0ELSEH$=LEFT$(H$,(LENH$)-1):J%=J%-1:PRINTTAB(X%+J%,Y%);" ":UNTIL0
11230 IFNOTFNJ(C%,f1%)ELSEUNTILTRUE:k%=C%:VDU23,1,0|:IFC%=27THEN=""ELSE=H$
11240 IFC%=21J%=0:H$="":PRINTTAB(X%,Y%);SPC(W%):UNTIL0
11250 IFC%<32ORC%>127UNTIL0
11260 IFJ%=W%SOUND1,-15,200,5:UNTIL0
11270 H$=H$+CHR$(C%):PRINTTAB(X%+J%,Y%);CHR$C%;:IFJ%=0PRINT;SPC(W%-1)
11300 J%=J%+1:UNTIL0
11320 DEFFNJ(C%,f1%):IFC%=13:=TRUE
11340 IFC%=27:=TRUE
11350 IFf1%>1:=FALSE
11360 IFC%=136:=TRUE
11370 IFf1%>0:=FALSE
11380 IFC%>139ANDC%<=143:=TRUE
11390 IFC%=128:=TRUE
11400 IFC%=129:=TRUE
11410 IFC%=131:=TRUE
11420 IFC%=132:=TRUE
11430 IFy0%ANDC%=136:=TRUE
11440 =FALSE
11450 DEFFNH:LOCALT%:T%=ASC(G$(0)):IFT%>32:T%=T%AND&5F
11470 IFT%<>68ANDT%<>86ANDT%<>32PROCJ:k%=0:=TRUE
11480 IFT%=68G$(0)="DATA ":IFe%=86OR(e%=32ANDe1%=86)e%=68:PROCA:PROCW:=TRUE
11490 IFT%=86G$(0)="VOICE":IFe%=68OR(e%=32ANDe1%=68)e%=86:PROCA:PROCW:=TRUE
11500 IFT%=32ANDe%<>32G$(0)=" ":e1%=e%:e%=32
11510 =FALSE
11520 DEFPROCW:LOCAL_%:G$(2)="":FOR_%=4TO13:G$(_%)="":NEXT:PROCH:ENDPROC
11600 DEFPROC20:LOCALI%:G$="":FORI%=1TOLENG$(2):G$=G$+CHR$(FN5(G$(2),I%)):NEXT:G$(2)=G$:IFG$(11)=""G$(11)="PHONE"
11680 IFG$(6)<>""ELSEIFG$(4)="75/1200"G$(6)="answer"ELSEG$(6)="originate"
11690 ENDPROC
11700 DEFPROCJ:IFe%=32e%=e1%
11720 IFe%=68G$(0)="DATA "ELSEG$(0)="VOICE"
11730 PRINTTAB(p%(s%,0,0),p%(s%,0,1));G$(0):ENDPROC
11750 DEFFNF:IFd%(a%)AND(2+4)PROC@(8):PROCJ:=TRUE
11770 IFb%=0RESTOREu3%ELSERESTOREv3%
11780 IFFN6 f%=k%:=FALSE
11790 PROCJ:=TRUE
11810 .u3%
11820 DATA"You cannot create an entry with a blank TYPE field - do you want to","abandon this entry ? Press 'Y' to abandon it, press 'N' to continue","editing it."
11830 .v3%
11840 DATA"DO YOU REALLY WANT TO DELETE THIS ENTRY ?","If you do, press 'Y' to confirm. If not, press 'N', and the entry","will remain unchanged."
11850 DEFFNI:IFb%<>0PROC@(15):=TRUE
11870 RESTOREw3%:IFNOTFN6THEN=TRUE
11890 e%=32:f%=k%:=FALSE
11920 .w3%
11930 DATA"You cannot create an entry with a blank name field - do you want to","abandon this entry ? Press 'Y' to abandon it, press 'N' to continue"
11940 DATA"editing it."
11950 DEFFNP:RESTOREx3%:=FN6
11980 .x3%
11990 DATA"There is insufficient space in your directory to make this update - do you","want to abandon the changes or try to make it smaller ? Press 'Y' to","leave directory unchanged, press 'N' to continue editing."
12000 DEFFN6:LOCALC%:READN$,S$,T$:PROC3(1,N$,S$,T$):PROC4:REPEATC%=INSTR("YyNn",CHR$FN0(100,0,0)):UNTILC%>0:=C%<3
12070 DEFPROC40:IFG$=""ENDPROC
12090 IF_%<4ENDPROC
12100 IF_%>12ENDPROC
12110 IFLEFT$(G$,1)=" "REPEATG$=RIGHT$(G$,(LENG$)-1):UNTILLEFT$(G$,1)<>" "
12120 IFG$=""G$=" ":ENDPROC
12130 IF_%=4PROC50ELSEPROC60
12140 ENDPROC
12150 DEFPROC60:LOCALI%,N%,H$:RESTOREc0%(_%-5):READH$:IFLENH$=0
12200 N%=ASCG$:IFN%>ASC"z"ORN%<ASC"a"ELSEN%=N%AND&5F
12210 N%=INSTR(H$,CHR$N%):IFN%=0PROC70:G$="":ENDPROC
12230 FORI%=1TON%:READG$:NEXT:ENDPROC
12270 DEFPROC70:LOCALO$:N%=LENH$:READO$:IFN%>1FORI%=2TON%:READH$:O$=O$+" or "+H$:NEXT
12320 PROC3(1,G$+" is an invalid value for this parameter, please use : ",O$+" or type a blank to let the computer","choose a default.  "+_$):REPEATUNTILFN0(100,0,0)=32:k%=0:ENDPROC
12360 DEFPROCV:IFG$=""ENDPROC
12380 LOCALI%:FORI%=1TOLENG$:IFINSTR("0123456789-.()/ ",MID$(G$,I%,1))<>0NEXTELSEIFI%=1ANDINSTR("Ee",MID$(G$,I%,1))<>0NEXTELSEPROC@(10):I%=LENG$:G$="":k%=0:NEXT
12410 ENDPROC
12420 DEFPROC50:LOCALI%,g1%:g1%=FALSE:I%=INSTR(G$,"/"):IFI%PROCK(MID$(G$,1,I%-1)):PROCK(MID$(G$,I%+1))ELSEPROCK(G$)
12460 IFg1%PROC@(11):G$="":k%=0
12470 ENDPROC
12480 DEFPROCK(H$):IFg1%ENDPROC
12500 LOCALO$:RESTOREy3%:REPEAT:READO$:IFO$="****"UNTILTRUEELSEIFO$=H$UNTILTRUE:ENDPROCELSEUNTILFALSE
12550 g1%=TRUE:ENDPROC
12570 DEFPROCo:LOCAL_%:DIMp%(1,13,2),Z$(1,13)
12600 .z3%
12610 DATA  20, 5, 5 ,"TYPE:        <"
12620 DATA  20, 7,20 ,"SURNAME:     <"
12630 DATA  20, 9,20 ,"INITIALS:    <"
12640 DATA  20,11,25 ,"PHONE:       <"
12650 DATA  20,13, 5 ,"EXTN:        <"
12660 DATA  20,15,20 ,"ADDRESS:     <"
12670 DATA  20,16,20 ,"             <"
12680 DATA  20,17,20 ,"             <"
12690 DATA  20,18,20 ,"             <"
12700 ._4%
12710 DATA  20, 4, 5 ,"TYPE:        <"
12720 DATA  20, 6,20 ,"NAME:        <"
12730 DATA  20, 8,30 ,"TERMINAL:    <"
12740 DATA  20,10,25 ,"PHONE:       <"
12750 DATA  20,12,10 ,"SPEED:       <"
12760 DATA  63,12, 4 ,"DUPLEX:      <"
12770 DATA  20,14, 9 ,"MODEM MODE:  <"
12780 DATA  63,14, 3 ,"EQUALISATION:<"
12790 DATA  20,16, 1 ,"DATA BITS:   <"
12800 DATA  42,16, 1 ,"STOP BITS:   <"
12810 DATA  63,16, 4 ,"PARITY:      <"
12820 DATA  20,18, 6 ,"PORT:        <"
12830 DATA  63,18, 8 ,"PROTOCOL:    <"
12840 DATA  20,20,20 ,"LOGON:       <"
12850 RESTOREz3%:FOR_%=0TO8:READp%(0,_%,0):READp%(0,_%,1):READp%(0,_%,2):READZ$(0,_%):NEXT:RESTORE_4%:FOR_%=0TO13:READp%(1,_%,0):READp%(1,_%,1):READp%(1,_%,2):READZ$(1,_%):NEXT:ENDPROC
13000 DEFPROCp:DIMc0%(7)
13020 .c0%(0)
13030 DATA"F","full"
13040 .c0%(1)
13050 DATA"OA","originate","answer"
13060 .c0%(2)
13070 DATA"YN","yes","no"
13080 .c0%(3)
13090 DATA"78","7","8"
13100 .c0%(4)
13110 DATA"12","1","2"
13120 .c0%(5)
13130 DATA"OEN","odd","even","none"
13140 .c0%(6)
13150 DATA"RP12","RS423","PHONE","PHONE1","PHONE2"
13160 .c0%(7)
13170 DATA"NXRD","none","xon/xoff","rts/cts","dtr"
13180 .y3%
13190 DATA"50","75","110","134.5","150","300","600","1200","1800","2400","3600","4800","7200","9600","19200","****"
13200 ENDPROC
15000 DEFFNL:IFe%=32ANDb%=0:i0%=FALSE:=TRUE
15020 i0%=TRUE:LOCALt1%,p2%,q2%,h1%:h1%=-1:IFe%=32PROCX:`0%=-1:=TRUE
15060 LOCALd0%,u1%:PROC80:u1%=j%+o0%-2-z%-d0%:IFb%<>0ELSEIFu1%<0i0%=FALSE:=FALSEELSE`0%=FN7(0):=TRUE
15100 t1%=TRUE:IFu1%+LEN($b%)<0i0%=FALSE:=FALSE
15120 PROCX:IFG$(1)=U$(1)a%=FN7(b%):=TRUE
15140 `0%=FN7(0):=TRUE
15160 DEFFN7(n%):LOCALu%,I%:IFn%=0PROC90
15190 IFn%>b%(g%-1)u%=g%ELSEu%=2-1:REPEATu%=u%+1:UNTILb%(u%)=n%
15200 PROCA0(n%,d0%):PROCB0(n%):FORI%=g%TOu%STEP-1:b%(I%+1)=b%(I%)+d0%:d%(I%+1)=d%(I%):NEXT:FORI%=0TO5:IFr%(I%)>=u%r%(I%)=r%(I%)+1
15280 NEXT:IFh1%>-1r%(h1%)=u%
15300 IFq2%=a%j%!17=u%ELSEIFj%!17>=u%j%!17=(j%!17)+1
15310 g%=g%+1:b%(u%)=n%:IFt1%d%(u%)=p2%ELSEd%(u%)=&80000000
15340 =u%
15350 DEFPROC80:LOCAL_%:d0%=t%+2:FOR_%=1TOt%:d0%=d0%+LENG$(_%):NEXT:ENDPROC
15420 DEFPROCX:LOCALr2%,i%:r2%=FNK(b%):IFt1%p2%=d%(a%)
15460 g%=g%-1:IFj%!17=a%q2%=a%:j%!17=-1ELSEIFj%!17>a%j%!17=(j%!17)-1
15480 IFa%=g%d%(g%)=0:ENDPROC
15490 FORi%=a%TOg%-1:d%(i%)=d%(i%+1):b%(i%)=b%(i%+1)-r2%:NEXT:FORI%=0TO5:IFr%(I%)>a%r%(I%)=r%(I%)-1
15550 IFr%(I%)=a%h1%=I%
15560 NEXT:d%(g%)=0:ENDPROC
15590 DEFPROC90:LOCALC%:C%=&5FANDASC(G$(1)):n%=FN1(3,CHR$C%,b0%,2):IFn%=-1PROCC0ELSEPROCD0
15640 ENDPROC
15650 DEFPROCC0:IFC%<ASC"Z"REPEATC%=C%+1:n%=FN1(3,CHR$C%,b0%,0):UNTILn%<>-1ORC%=ASC"Z"
15670 IFn%=-1n%=FN@(6,0,b0%,0)
15680 ENDPROC
15690 DEFPROCD0:IFFN8(G$(1),M$)ENDPROC
15710 LOCALs2%:REPEAT:s2%=n%:n%=FN@(4,0,n%,2):IFn%=-1UNTILTRUE:n%=FN@(6,0,s2%,0):ENDPROC
15760 UNTILFN8(G$(1),M$):ENDPROC
15780 DEFFN8(`$,X$):LOCALI%,L%,S%,F%:L%=LEN`$:IFLENX$<L%L%=LENX$
15820 I%=1:REPEAT:S%=FN5(`$,I%):F%=FN5(X$,I%):I%=I%+1:UNTILS%<>F%ORI%>L%:IFS%<>F%:=S%<F%
15890 =LENX$>LEN`$
15900 DEFFN5(M$,`4%):LOCALC%:C%=ASCMID$(M$,`4%,1):IFC%>ASC"`"ANDC%<ASC"{"C%=C%AND&5F
15940 =C%
15950 DEFPROCF:LOCALI%:IFi0%ELSEENDPROC
15980 $(j%)=TIME$(0):PROCE0:OSCLI("SAVE "+Y$+" "+STR$~(j%)+" +"+STR$~(o0%)):IF@ERC%PROC@(18):ENDPROC
16020 I%=OPENIN(Y$):IFI%CLOSE#I%ELSEPROC@(19)
16040 ENDPROC
16050 DEFPROCE0:LOCALA%,Y%:A%=j%:Y%=o0%-2:CALLd1%:A%?Y%=@A%:A%?(Y%+1)=@A%DIV256:ENDPROC
16130 DEFFN1(z0%,g$,v1%,_1%):IFz0%>3THEN=-1
16150 IFg$=""o5%=-1:=i1%
16160 =FN9
16170 DEFFN@(z0%,a4%,v1%,_1%):IFz0%=7v1%=b0%
16190 =FN9
16200 DEFFN9:$`%=f$:`%!3=v1%:`%!6=z0%:IFz0%<4$(`%+7)=g$ELSE`%?7=a4%
16250 CALLb4%:i1%=!`%:IFi1%<>-1AND_1%>0PROCG(i1%,_1%)
16280 =i1%
16290 DEFFNK(t2%):IFt2%=-1ENDPROC
16310 $`%=f$:`%!3=t2%:CALLc4%:z%=z%-!`%:=!`%
16360 DEFPROCA0(d4%,d0%):$`%=R$+d$+e$:`%!3=d4%:`%?6=d0%:CALLe4%:z%=z%+d0%:ENDPROC
16430 DEFPROCG(u2%,_1%):LOCALQ$,I%,J%:Q$=$(u2%+1):IF_1%=2M$=MID$(Q$,1,INSTR(Q$,R$)-1):ENDPROC
16470 e%=?u2%:IFe%=68G$(0)="DATA":J%=13ELSEG$(0)="VOICE":J%=8
16490 FORI%=1TOJ%:G$(I%)=MID$(Q$,1,INSTR(Q$,R$)-1):Q$=MID$(Q$,INSTR(Q$,R$)+1):NEXT:ENDPROC
16540 DEFPROCB0(n%):LOCALH$,_%,w1%:H$=CHR$e%:FOR_%=1TOt%:H$=H$+G$(_%)+R$:NEXT:w1%=?n%:$n%=H$:IFw1%=1n%?(1+LENH$)=w1%
16630 ENDPROC
16640 DEFPROCq:DIMv2%FNA(1023):`%=v2%+960:DIMw2%1,p5%1:FORx2%=0TO2STEP2:P%=v2%:[OPTx2%
16710 .b4%PHK:PLB:LDA`%+3:STA&E0:LDA`%+4:STA&E1:LDA`%+5:STA&E2:LDY#0:LDAL(&E0),Y:CMP`%+2:BEQp0%:LDX`%+1:LDA`%+6:BEQf4%:LDX`%
16860 .f4%:STXw2%:LDA`%+6:CMP#4:BCCy2%:CMP#4:BEQg4%:CMP#5:BEQh4%:CMP#7:BEQi4%:BCSp0%:JMPj4%
16990 .i4%:LDX`%+7
17010 .k4%:BEQq0%:JSRLx1%:BCSp0%:DEX:BRAk4%
17070 .g4%:JSRLx1%:BCSp0%:BCCq0%
17110 .h4%:JSRLm4%:BCSp0%:BCCq0%
17150 .p0%:LDA`%+6:CMP#6:BEQq0%:LDA#&FF:STA`%:STA`%+1:STA`%+2:STA`%+3:RTL
17250 .q0%:LDA&E0:STA`%:LDA&E1:STA`%+1:LDA&E2:STA`%+2:LDA#0:STA`%+3:RTL
17350 .y2%:LDX#7
17370 .n4%:LDA`%,X:CMP#13:BEQo4%:JSRLy1%:STA`%,X:INX:BRAn4%
17450 .o4%:LDY#1
17470 .z2%:LDX#7:LDAL(&E0),Y:CMPw2%:BNEp4%
17520 .q4%:JSRLx1%:BCSp0%:BCCy2%
17560 .p4%:JSRLy1%:INY:CMP`%,X:BEQ_3%:LDA`%+6:CMP#3:BEQq4%:BNEz2%
17650 ._3%:INX:LDA`%,X:CMP#&0D:BEQq0%:LDAL(&E0),Y:JSRLy1%:CMP`%,X:BNEz2%:INY:BRA_3%
17760 .y1%:CMP#ASC"a":BCC`3%:CMP#1+ASC"z":BCS`3%:AND#&5F
17820 .`3%:RTL
17840 .x1%PHK:PLB:LDY#0
17860 .r4%:LDAL(&E0),Y:INY:CMP`%+1:BNEr4%
17910 .s4%:CLC:TYA:ADC&E0:STA&E0:LDA#0:ADC&E1:STA&E1:LDY#0:LDAL(&E0),Y:CMP`%+2:BEQt4%:CLC
18040 .t4%:RTL
18060 .m4%PHK:PLB:LDY#254:DEC&E1:LDAL(&E0),Y:CMP`%:BNEu4%
18120 .v4%:LDAL(&E0),Y:DEY:CMP`%+1:BNEv4%:LDAL(&E0),Y:INY:INY:BNEs4%
18210 .u4%:SEC:RTL
18240 .j4%PHK:PLB:LDY#0
18260 .a3%:LDAL(&E0),Y:CMP`%+2:BEQw4%:CLC:LDA#1:ADC&E0:STA&E0:BCCa3%:LDA#0:ADC&E1:STA&E1:BCCa3%:SEC:RTL
18410 .w4%:CLC:JMPq0%
18440 .c4%PHK:PLB:LDY#0:LDA`%+3:STA&E3:LDA`%+4:STA&E4:LDA`%+5:STA&E5
18520 .x4%:LDAL(&E3),Y:INY:CMP`%+1:BNEx4%:CLC:TYA:PHA:ADC&E3:STA&E0:LDA#0:ADC&E4:STA&E1:LDA#0:ADC&E5:STA&E2:LDY#0:SEI
18700 .b3%:LDAL(&E0),Y:STAL(&E3),Y:CMP`%+2:BEQy4%:INY:BNEb3%:INC&E1:INC&E4:BNEb3%
18800 .y4%:PLA:STA`%:LDA#0:STA`%+1:STA`%+2:STA`%+3:CLI:RTL
18890 .e4%PHK:PLB:LDA`%+3:STA&E0:LDA`%+4:STA&E1:LDA`%+5:STA&E2:LDY#0
18970 .z1%:LDAL(&E0),Y:CMP`%+2:BEQz4%:INY:BNEz1%:INC&E1:BNEz1%:INC&E2:BNEz1%
19070 .z4%:TYA:CLC:ADC&E0:STA&E0:LDA#0:ADC&E1:STA&E1:LDA#0:ADC&E2:STA&E2:LDA`%+6:ADC&E0:STA&E3:LDA#0:ADC&E1:STA&E4:LDA#0:ADC&E2:STA&E5:LDY#0:SEI
19290 ._5%:LDAL(&E0),Y:STAL(&E3),Y:LDA&E0:CMP`%+3:BNEc3%:LDA&E1:CMP`%+4:BNEc3%:LDA&E2:CMP`%+5:BEQ`5%
19410 .c3%:DEC&E0:LDA&E0:CMP#255:BNEd3%:DEC&E1:LDA&E1:CMP#255:BNEd3%:DEC&E2
19510 .d3%:DEC&E3:LDA&E3:CMP#255:BNEe3%:DEC&E4:LDA&E4:CMP#255:BNEe3%:DEC&E5
19610 .e3%:JMP_5%
19630 .`5%:CLI:RTL:WRD&30
19670 .p1%:COP:EQUB@OPSCX%:RTL
19690 .r1%:COP:EQUB@OPRCX%:RTL
19710 .n1%:COP:EQUB@OPSSC%:RTL
19730 .s1%:COP:EQUB@OPRSC%:RTL
19750 .q1%:COP:EQUB@OPFSC%:RTL
19770 ._2%:PERa5%:BRAb5%
19800 .`2%:PERc5%
19820 .b5%PLA:PHK:PLB:LDY#0:LDX#0:COP:EQUB@OPRMI%:RTL
19880 .a5%:EQUS"BASIC":EQUB0
19910 .c5%:EQUS"TSHELL":EQUB0
19940 .a2%:LDA#126:COP:EQUB@OPOSB%
19970 .q5%:LDA#@EVPRE%:COP:EQUB@OPAEV%:RTL
20010 .d1%:WRD&30:COP:EQUB@OPSUM%:RTL:]:NEXTx2%:p1%=p1%+@WRDAM%+@WRDXY%:r1%=r1%+@WRDAM%+@WRDXY%:n1%=n1%+@WRDAM%+@WRDXY%:s1%=s1%+@WRDAM%+@WRDXY%:q1%=q1%+@WRDAM%+@WRDXY%:`2%=`2%+@WRDAM%+@WRDXY%:_2%=_2%+@WRDAM%+@WRDXY%:a2%=a2%+@WRDAM%+@WRDXY%
20150 d1%=d1%+@WRDAM%+@WRDXY%:CALL`2%:d5%=@BHA%+@MHNAME%+9:CALL_2%:e5%=@BHA%:ENDPROC
21000 DEFPROCR:LOCALv%,I%:h%=4:PROC2:IFc%<>133v%=a%ELSEIFj%!17=-1PROC@(7):f%=-1:ENDPROCELSEv%=j%!17
21050 IFd%(v%)AND(4OR2)PROC@(2):f%=-1:ENDPROC
21060 IFv%=0PROCY:ENDPROC
21070 PROCG(b%(v%),1):IFe%=86PROCY:ENDPROC
21080 IFG$(11)="RS423"J$="null"ELSEIFG$(3)=""PROCMELSEJ$=G$(3)
21090 IFJ$=""f%=129:ENDPROC
21100 I%=0:REPEATIFr%(I%)=-1UNTILTRUEELSEI%=I%+1:UNTILI%>5
21110 IFI%>5PROC@(6):f%=-1:ENDPROC
21120 PROCF0:IFf%=-1ENDPROC
21130 IFFN3ELSEPROCI0:PROCZ:ENDPROC
21140 PROCF:LOCALo%:PROC0(256+8):PROCD:ENDPROC
21190 DEFPROCI0:C%=1:Y%=a0%(I%):IFFN2<>0
21220 PROCN(I%,TRUE):f%=-1:ENDPROC
21250 DEFPROCF0:A%=e5%:D%=@SMSTK%:X%=@COCRE%:C%=0:CALLm1%+@USED%:IF@C%PROC@(4):f%=-1:ENDPROC
21280 a0%(I%)=@Y%:$j2%="W=&4000 P=&"+STR$~d5%:A%=j2%:Y%=a0%(I%):X%=@ENINIT%:IFFN2
21320 IF@C%PROC@(4):PROCN(I%,FALSE):f%=-1:ENDPROC
21330 q%=I%:r%(I%)=v%:d%(v%)=d%(v%)OR4:M$=G$(1):PROC9(v%):PROCL0:Y%=a0%(q%):X%=0:IFFN2
21390 IF@C%PROCO:f%=-1
21400 PROC_:ENDPROC
21420 DEFPROCL0:Y%=a0%(q%):X%=0:IFFN2
21440 IF@C%PROCO:f%=-1
21450 LOCALI%,J%,K%:I%=-1:K%=-1:FORJ%=1TO3-1:REPEAT:I%=I%+1:K%=K%+1:I%?@BHA%=K%?b%(v%):UNTILI%?@BHA%=9:NEXT:I%=I%+1:$(I%+@BHA%)=J$:I%=I%+LENJ$:K%=K%+1+LENG$(3):I%?@BHA%=9:REPEAT:I%=I%+1:K%=K%+1:I%?@BHA%=K%?b%(v%):UNTILI%?@BHA%=13:ENDPROC
21600 DEFPROCk:LOCALI%:IFx0%PROC@(12):f%=-1:ENDPROC
21630 IFq%=-1ELSEIFa%=r%(q%)PROCD:ENDPROC
21640 I%=0:REPEATIFr%(I%)=a%UNTILTRUEELSEI%=I%+1:UNTILI%>5
21650 IFI%>5PROC@(1):f%=-1:ENDPROC
21660 q%=I%:PROCD:ENDPROC
21680 DEFPROCD:IFq%=-1f%=-1:ENDPROC
21700 IFFN3ELSEf%=-1:ENDPROC
21710 w0%(q%)=TIME:Y%=a0%(q%):j1%=Y%:f%=FN2AND&FF:j1%=0:IF@C%PROCO
21770 ENDPROC
21780 DEFPROCM:IFc%=133J$=$(j%+21):IFJ$<>""ENDPROC
21800 REPEAT:h%=6:PROC2:G$=FN4(4,25,25,2):IFG$=""UNTILTRUE:J$="":ENDPROC
21850 PROCV:IFG$=""UNTIL0
21870 UNTILTRUE:J$=G$:ENDPROC
21900 DEFPROC_:j%!17=v%:IFJ$<>G$(3)$(j%+21)=J$ELSE$(j%+21)=""
21930 i0%=TRUE:ENDPROC
21950 DEFPROCO:IF@X%=4PROC@(3)
21970 IF@X%=6PROC@(13)
21980 IF@X%>0f%=-1
21990 LOCALI%,b2%:PROCN(q%,TRUE):PROCP:PROCZ:ENDPROC
22040 DEFPROCZ:I%=r%(q%):d%(I%)=d%(I%)AND-7:LOCALX%,Y%:PROCE(I%):PRINTTAB(X%-2,Y%);" ":r%(q%)=-1:q%=-1:b2%=0:FORI%=0TO5:IFw0%(I%)>b2%q%=I%:b2%=w0%(I%)
22150 NEXT:ENDPROC
22170 DEFPROCN(c2%,f5%):Y%=a0%(c2%):IFf5%X%=@COKILL%:CALLm1%
22200 X%=@CODEL%:CALLm1%:a0%(c2%)=0:w0%(c2%)=0:ENDPROC
22250 DEFPROCY:LOCALj0%:r0%=OPENUP"MODEM: Jvoice;Roff":IFr0%=0PROC@(5):f%=-1:ENDPROC
22290 IFv%=0PROCMELSEIFG$(3)=""PROCMELSEJ$=G$(3)
22300 IFJ$=""CLOSE#r0%:r0%=0:f%=129:ENDPROC
22310 IFv%=0G$(1)="your manual entry"
22320 PROC3(0,"Please wait - dialling "+G$(1),"                     on "+J$,""):BPUT#(r0%+1),("C"+J$):h%=3:x%=3:f%=129:j0%=o%ANDNOT(32+128):PROC_:PROCF:PROC0(j0%):ENDPROC
22420 DEFPROCh:IFh%<>3ENDPROC
22440 LOCALj0%:CLOSE#r0%:r0%=0:h%=0:x%=0:PROC2:j0%=o%OR32:IFa1%j0%=j0%OR128
22520 PROC0(j0%):ENDPROC
22540 DEFPROCQ0:CALLa2%:ENDPROC
22570 DEFFN2:LOCALk0%:REPEAT:CALLo3%:k0%=@BHA%AND&FFFF:IFk0%=@ECHELP%ORk0%=@ECPHON%ORk0%=@ECCOMP%ORk0%=@ECCALC%ORk0%=@ECSTOP%:PROC4:A%=@BHA%:X%=@X%:UNTILFALSE
22630 UNTILTRUE:=k0%:ENDPROC
25000 DEFPROCQ:MODE0:VDU19,0,4|19,1,7|:PRINTTAB(1);:PROC1(1):PRINT"Communicator ";j$;" ";m$;" Acorn Computers Ltd 1986":PROC1(0):IFFN0(-1,0,0)
25070 PROCB(0,79,1,22):PROCB(0,79,23,27):ENDPROC
25100 DEFPROC0(m0%):LOCALf3%:PROC1(1):IFm0%<0m0%=o%ANDm0%
25140 IFm0%AND256ANDNOTo%PROC`
25150 e0%=1:FORf3%=0TO7:IF(m0%ANDe0%)<>(o%ANDe0%)PROCa(f3%,m0%ANDe0%)
25180 e0%=2*e0%:NEXT:PROC1(0):o%=m0%:ENDPROC
25230 DEFPROCa(s0%,g5%):IFK$(s0%)=""ENDPROC
25250 IFg5%PRINTTAB(w%(s0%)+3,29);"F";s0%+1;TAB(w%(s0%),30);K$(s0%);ELSEVDU5:MOVE16*w%(s0%),92:PRINTh$;:PLOT0,-128,-32:PRINTh$;:VDU4
25260 ENDPROC
25270 DEFPROC`:LOCALt0%:PROCb:o%=256:e0%=1:FORt0%=0TO7:IFK$(t0%)<>"":PRINTTAB(w%(t0%)+3,29);"F";t0%+1;TAB(w%(t0%),30);K$(t0%);:o%=o%+e0%
25340 e0%=e0%*2:NEXT:ENDPROC
25370 DEFPROCb:PROCB(1,37,28,31):PROC8(10,28,31):PROC8(19,28,31):PROC8(28,28,31):PROCB(42,78,28,31):PROC8(51,28,31):PROC8(60,28,31):PROC8(69,28,31):ENDPROC
25470 DEFPROCB(L%,R%,T%,B%):LOCALd2%:VDU28,L%,B%,R%,T%,12,26:PRINTTAB(L%,T%);n$;STRING$(R%-L%-1,i$);o$;:FORd2%=T%+1TOB%-1:PRINTTAB(L%,d2%);a$;TAB(R%,d2%);a$;:NEXT:PRINTTAB(L%,B%);p$;STRING$(R%-L%-1,i$);q$;:ENDPROC
25560 DEFPROC8(e2%,T%,B%):LOCALg3%:PRINTTAB(e2%,T%);r$;:FORg3%=T%+1TOB%-1:PRINTTAB(e2%,g3%);a$;:NEXT:PRINTTAB(e2%,B%);s$;:ENDPROC
25640 DEFFN0(f0%,h3%,i3%):LOCAL_0%,V$:REPEAT:IFf0%=-1_0%=-1ELSEPRINTTAB(h3%,i3%);:IFf0%<0_0%=INKEY(100):f0%=f0%+1ELSE_0%=INKEY(f0%)
25680 IF_0%<0V$=LEFT$(TIME$(3)+"  ",21):PRINTTAB(58,0);:PROC1(1):PRINT;V$;:PROC1(0):UNTILf0%=-1ELSEUNTILTRUE
25690 PRINTTAB(h3%,i3%);:=_0%
25710 DEFFNB(f0%):LOCAL_0%,V$,j3%:REPEAT:j3%=TIME:CALLh5%:IF@C%_0%=-1:REPEATUNTILTIME>j3%ELSE_0%=@A%AND&FF
25760 IF_0%<0V$=LEFT$(TIME$(3)+"  ",21):PRINTTAB(58,0);:PROC1(1):PRINT;V$;:PROC1(0):UNTILf0%=-1ELSEUNTILTRUE
25770 =_0%
25780 DEFPROC@(i5%):RESTOREm%(i5%):READ`1%,N$,S$,T$:PROC3(`1%,N$,S$,T$+_$):PROC4:REPEATUNTILFN0(100,0,0)=32:ENDPROC
25850 DEFPROC2:IFh%<0PROCP0:ENDPROC
25870 RESTOREg0%(h%):READN$,S$,T$:PROC3(0,N$,S$,T$):ENDPROC
25910 DEFPROCP0:IFh%=-1PROC3(0,"","",""):ENDPROC
25930 RESTOREk1%(-(h%+2)):READN$:PROC3(0,N$,"Press RETURN to leave help before using function keys","For more details refer to the User guide"):ENDPROC
25970 DEFPROC3(`1%,N$,S$,T$):VDU28,1,26,78,24:PROC1(`1%):VDU12,26:PRINTTAB(3,24);N$;TAB(3,25);S$;TAB(3,26);T$:PROC1(0):ENDPROC
26040 DEFPROC1(`1%):IF`1%=0COLOUR1:COLOUR128ELSECOLOUR0:COLOUR129
26060 ENDPROC
26070 DEFPROC4:REPEAT:UNTILINKEY(0)=-1:ENDPROC
26110 DEFPROC6(j5%):IFj5%CALLf2%ELSECALLg2%
26130 IF@C%ELSEENDPROC
26140 PROC3(1,"Print failed because :",$@BHA%,_$):LOCALI%:REPEAT:I%=FNB(100):IFI%>=@ECPHON%ANDI%<=@ECHELP%OSCLI"fx 15,1":UNTILFALSE
26190 UNTILINKEY(0)=32:PROC2:ENDPROC
26220 DEFPROCR0:ENDPROC
26230 DEFPROC@HELP:h2%=h2%:IFh2%ELSEENDPROC
26260 IFj1%PROCG0:ENDPROC
26270 LOCALh0%,k3%,h%:PROCQ:PROC1(1):IFk5%k3%=o%:PROC`:PROC0(k3%)ELSEPROCb:PROCa(6,TRUE):PROC1(0)
26310 u0%=0:PROCc:OSCLI"FX 15,1":REPEAT:h0%=FNB(100):IFh0%>=@ECPHON%ANDh0%<=@ECHELP%UNTILTRUE:ENDPROC
26370 h0%=INKEY(0):IFh0%=32u0%=u0%+1:PROCc:UNTILFALSE
26390 IFh0%=135PROC6(FALSE):UNTILFALSE
26400 IFh0%=167PROC6(TRUE):UNTILFALSE
26410 UNTILh0%=13:ENDPROC
26430 DEFPROCG0:!m3%=j1%:CALLi2%:ENDPROC
26470 DEFPROCc:LOCALb$:b$="":VDU28,1,21,78,2,12:IFu0%>n0%(x%)u0%=0
26510 RESTOREv0%(x%,u0%):READc$:REPEAT:PRINTb$;c$;:b$=CHR$13+CHR$10:READc$:UNTILc$="****":IFn0%(x%)=0h%=-2ELSEIFu0%<n0%(x%)h%=-3ELSEh%=-4
26590 PROC2:VDU26:ENDPROC
26620 DEFPROCd:n$=CHR$&B0:o$=CHR$&B1:p$=CHR$&B2:q$=CHR$&B3:i$=CHR$&A6:a$=CHR$&A9:r$=CHR$&A7:s$=CHR$&AE:h$=STRING$(8,CHR$&BF):DIMw%(7):w%(0)=2:w%(1)=11:w%(2)=20:w%(3)=29:w%(4)=43:w%(5)=52:w%(6)=61:w%(7)=70:k5%=TRUE:t$=CHR$136:k$=CHR$137:u$=CHR$138:v$=CHR$139:m$=CHR$135:PROCn:PROCH0:j1%=0:PROCJ0:PROCK0:PROCM0:PROCN0:PROCO0:h2%=TRUE:ENDPROC
26850 DEFPROCK0:DIMk1%(2)
26870 .k1%(0)
26880 DATA""
26890 .k1%(1)
26900 DATA"Press SPACE for more information."
26910 .k1%(2)
26920 DATA"Press SPACE to return to start of help information."
26930 ENDPROC
26940 DEFPROCO0:DIMn3%FNA(100):m3%=n3%+90:FORPm5%=0TO2STEP2:P%=n3%:[OPTPm5%
27000 .h5%:COP:EQUB@OPXKC%:RTL:WRD&30
27050 .g2%:COP:EQUB@OPCMD%:EQUS"TXTDMP":BRK:RTL
27090 .f2%:COP:EQUB@OPCMD%:EQUS"SCRDMP":BRK:RTL
27130 .i2%:LDX#@COHELP%:PHK:PLB:LDYm3%:JSRL@CO%:RTL:]:NEXT:g2%=g2%+@WRDAM%+@WRDXY%:f2%=f2%+@WRDAM%+@WRDXY%:i2%=i2%+@WRDAM%+@WRDXY%:ENDPROC
27260 DEFFNA(N%):LOCALP%:DIMP%-1:IF((P%EOR(P%+N%+1))AND&FF0000)DIMP%(&FFFF-(P%AND&FFFF))
27290 =N%
28000 DEFPROCH0:DIMv0%(3,1),n0%(3):n0%(0)=1:n0%(1)=0:n0%(2)=0:n0%(3)=0
28060 .v0%(0,0)
28070 DATA"The LIST display shows the names of all the entries in your PHONE DIRECTORY",""
28080 DATA"To select an entry             Use up, down, left and right cursor keys",""
28090 DATA"To call a person who is        Select MANUAL VOICE CALL and press F4"
28100 DATA" not in the list                ( Connect ) then type the number after"
28110 DATA"                                the prompt, ending with RETURN.",""
28120 DATA"To call an entry in the list   Select the entry and press F4 ( Connect )"
28130 DATA"                                If the entry doesn't contain a valid"
28140 DATA"                                phone number, type one in, as above.",""
28150 DATA"To look at or alter an entry   Select it and press F2 ( See/Edit ). Any"
28160 DATA"                                changes you make will become permanent"
28170 DATA"                                when you leave edit mode.",""
28180 DATA"To create a new entry          Select NEW ENTRY and press F2 ( See/Edit )"
28190 DATA"****"
28200 .v0%(0,1)
28210 DATA"To disconnect the phone line   Press F4 when in terminal mode ( End Call )"
28220 DATA" ( or other data connection )   or making a voice call ( Connect )."
28230 DATA"                                A voice call will not finish until you"
28240 DATA"                                put the handset down too.",""
28250 DATA"To print the screen            Make sure that your Communicator has been"
28260 DATA" ( including help screens )     set up for your printer ( See Configure )"
28270 DATA"                                press F7 for text or ctrl/F7 for full"
28280 DATA"                                graphics ( only on dot matrix printers )"
28290 DATA""
28300 DATA"If you have more than one      Press F3 ( Terminal ) to get the most"
28310 DATA" data connection active         recently active, or ctrl/F3 to reach one"
28320 DATA"                                selected by the list pointer."
28330 DATA"****"
28340 .v0%(1,0)
28350 DATA"To move between entries        Use the up or down cursor keys or RETURN",""
28360 DATA"To enter information           All entries can be changed simply by"
28370 DATA"                                typing in the new information.",""
28380 DATA"If you make a mistake          You can always get the original entry back"
28390 DATA"                                by pressing F8 ( Restore )",""
28400 DATA"To delete an entry             Type spaces over the TYPE and leave edit."
28410 DATA""
28420 DATA"To leave edit :                NOTE any changes you have made will"
28430 DATA"                                become permanent."
28440 DATA" For Phone Directory           Use F1 ( List )"
28450 DATA" To make a call to this entry  Use F4 ( Connect )"
28460 DATA" To resume current active      Use F3 ( Terminal ). ( If you don't have"
28470 DATA"  data connection               a Terminal, this will go back into"
28480 DATA"                                the directory list screen."
28490 DATA"****"
28500 .v0%(2,0)
28510 DATA"You can use edit to create either a completely new entry, or a copy of"
28520 DATA"an existing entry which you can then modify as required.",""
28530 DATA"After pressing Edit with NEW ENTRY selected, you may move the cursor to"
28540 DATA"an existing entry and press F2 to edit a copy of it, or just press F2"
28550 DATA"again with NEW ENTRY selected to get a completely blank entry.",""
28560 DATA"Once in edit mode, press help again for more information.","****"
28570 .v0%(3,0)
28580 DATA"To start a conversation        Lift the handset and press F4 ( Connect )"
28590 DATA""
28600 DATA"To abandon the call before     Just press F4"
28610 DATA" you lift the handset",""
28620 DATA"To finish a call after         Just replace the handset. If you didn't"
28630 DATA" lifting the handset            press F4 ( Line in Use light is still on )"
28640 DATA"                                then press it now to continue.",""
28650 DATA"Until you have pressed F4 ( Connect ), the computer will hold the"
28660 DATA" phone line open and will not allow you to move to another entry in the"
28670 DATA" list. You can, however, still use any current active terminal, or edit"
28680 DATA" the current entry."
28690 DATA"****"
28700 ENDPROC
28710 DEFPROCJ0:DIMg0%(6)
28730 .g0%(0)
28740 DATA"To select an entry         Use cursor keys  |  To search the list     F6","To call a number in list                F4  |  For main menu        STOP","For further information               HELP"
28750 .g0%(1)
28760 DATA"To move between entries      Use up or down cursor keys or RETURN","To change an entry           Type new over old ( F8 to restore original )","To delete an entry           Type spaces over TYPE and exit ( F1 or F3 )"
28770 .g0%(2)
28780 DATA"If you want a blank entry to fill in, hit F2 (Edit) again now","If you want to copy an existing entry, move the pointer to","select the entry you want, then hit F2 (Edit)"
28790 .g0%(3)
28800 DATA"To speak to party             Lift the handset and press F4 (Connect)","To abandon the call           Press F4 without lifting handset","You cannot move the cursor or alter the list until F4 is pressed."
28810 .g0%(4)
28820 DATA"Please wait - initiating your call.","",""
28830 .g0%(5)
28840 DATA"Please enter the word or phrase that you wish to search for :",">",""
28850 .g0%(6)
28860 DATA"Please enter the number that you wish to dial",">",""
28870 ENDPROC
28880 DEFPROCM0:_$=" Press SPACE to continue.":DIMm%(20)
28910 .m%(0)
28920 DATA1,"Unable to save the list context screen due to lack of memory.","Please kill one or more other tasks to free enough memory so you can","enter See/Edit or Terminal   "
28930 .m%(1)
28940 DATA1,"Please ensure that pointer is selecting an active terminal before using","ctrl/TERMINAL. To start a new call use CONNECT. To get to the default","active terminal, use TERMINAL on its own."
28950 .m%(2)
28960 DATA1,"There is already an active call to the entry you have selected to CONNECT","Please use TERMINAL or ctrl/TERMINAL to resume the call","                     "
28970 .m%(3)
28980 DATA1,"The terminal task has a serious error, and could not issue a more","detailed error message. It should however, have freed resources and","so its worth trying again. "
28990 .m%(4)
29000 DATA1,"There is insufficient free memory to start up a terminal task. Please","release some memory by stopping unwanted tasks and try again.","                     "
29010 .m%(5)
29020 DATA1,"The phone line for this call is unavailable or not working. Please ensure","no other voice or data calls are using the line, and check that the phone","line is connected before trying again. "
29030 .m%(6)
29040 DATA1,"Cannot start a further call, since too many are active already.","Please finish one or more of the other calls and try again.","                     "
29050 .m%(7)
29060 DATA1,"The directory has no record of a last number dialled.","Please choose an existing entry from the directory list or use","manual dial.         "
29070 .m%(8)
29080 DATA1,"You cannot delete an entry which is in use - this entry has an active","call associated with it and you need to hang up before you can delete it.","                     "
29090 .m%(9)
29100 DATA1,"There is no room for further entries in your directory display - please","either delete an existing entry to make room, or use manual dial to call","your new number.     "
29110 .m%(10)
29120 DATA1,"The phone number you have entered contains an invalid character or","characters. Only ""0""-""9"", ""."", ""-"", ""("", "")"", ""/"" or "" ""","are valid.           "
29130 .m%(11)
29140 DATA1,"You entered an invalid speed - this must be one of : 50, 75, 110, 134.5","300, 600, 1200, 1800, 2400, 3600, 4800, 7200, 9600, 19200 ( or 1200/75,","75/1200 for viewdata ).   "
29150 .m%(12)
29160 DATA1,"An unexpected system error has occurred - no information is available.","It is recommended that you switch off the machine and start again before","doing anything with terminals. "
29170 .m%(13)
29180 DATA1,"A serious error occurred in terminal, followed by a fatal error while","trying to free resources : please turn machine off to restart.","                          "
29190 .m%(14)
29200 DATA1,"Unable to allocate enough memory to store the directory","You will need to STOP, KILL and delete some other tasks to continue.","                          "
29210 .m%(15)
29220 DATA1,"You cannot have an entry with a blank name field - it would be invisible in","the directory listing. Set the type field to blank to delete the entry or","fill in the name to keep it."
29230 .m%(16)
29240 DATA1,"None of the entries currently displayed match this search.","Press F8 to restore the full list if not all are currently displayed.","                          "
29250 .m%(17)
29260 DATA1,"There are too few entries for a search.","","                          "
29270 .m%(18)
29280 DATA1,"Failed to save directory data - possibly the file is held open by a","different program. If you can clear the fault, all changes you have made","will be saved next time.  "
29290 .m%(19)
29300 DATA1,"The non-volatile ram file system cannot hold the directory. There may not","be enough room. If you can clear the fault, all changes will be saved next","time. If not, your directory will be lost. "
29310 .m%(20)
29320 DATA1,"Your directory file has become corrupted, and will be replaced with a","default one. Occasional backup to the network is recommended to","avoid this problem.       "
29330 ENDPROC
29340 DEFPROCN0:DIMK$(7):K$(0)="  List":K$(1)="See/Edit":K$(2)="Terminal":K$(3)=" Connect":K$(4)=" Redial":K$(5)=" Search":K$(6)=" Print":K$(7)="Restore":o%=0:ENDPROC
65457