10 VDU23,1|:PROCW:PROCX:PROCE:PROCF:PROCI:PROCL:REPEAT:PROCY:UNTILFALSE:END
  120 DEFPROCY:LOCALd%:d%=FN1(-2,0,0):IFd%=-1IFFN7PROCF:PROCI:ENDPROC
  160 IFd%<128ENDPROC
  170 IFd%=128+2IF`%>0PROCP(d%):ENDPROC
  180 IFd%=128+3IFFN@>0PROCP(d%):ENDPROC
  190 IFd%=128+4PROCZ:ENDPROC
  200 IFd%=128+5PROC_:ENDPROC
  210 IFd%=128+6PROC`:ENDPROC
  220 IFd%=128+7PROC4(FALSE):ENDPROC
  230 IFd%=160+7PROC4(TRUE):ENDPROC
  240 IF(d%>128+10ANDd%<144)OR(d%=128)PROCa:ENDPROC
  250 ENDPROC
  260 DEFPROCP(k%):REPEAT:IFk%=128+2PROCbELSEPROCc
  290 PROCG:UNTIL(k%<>128+2)AND(k%<>128+3):ENDPROC
  320 DEFPROCd:DIMb%(16):DIMM$(16):DIMf%(16):DIMu%(16):f%(1)=0:LOCALI%:FORI%=1TO16:b%(I%)=0:M$(I%)="":u%(I%)=15:NEXT:`%=0:OSCLI"fx 4,2":OSCLI"fx 225,128":OSCLI"fx 226,144":OSCLI"fx 227,160":OSCLI"fx 228,0":OSCLI"fx 229,1":p0%=FALSE:N$="Carousel V1.00":e$="RAM:!S.":g%=0:e%=0:p%=0:ENDPROC
 5000 DEFPROC`:IF`%=0ENDPROC
 5020 LOCALe0%:e0%=FN2(b%(a%)):IFe0%=0PROCeELSEPROCH(e0%,TRUE)
 5050 ENDPROC
 5060 DEFPROCe:LOCALW$,f0%,I%,_0%:W$=FN3(4,25,4,5):PROC3(0,"","",""):IF(W$="")OR(_0%=128+8)PROC@:ENDPROC
 5110 f0%=VAL(W$):IF(f0%<1)OR(f0%>FN@+1)PROC1(0):PROC@:ENDPROC
 5130 FORI%=16TOf0%+1STEP-1:f%(I%)=f%(I%-1):u%(I%)=u%(I%-1):NEXT:f%(f0%)=b%(a%):u%(f0%)=15:PROCJ:PROCB:PROC@:IFFN@=1PROC6(g%+4)
 5230 ENDPROC
 5240 DEFPROCH(e0%,b2%):IFe0%<16PROCf
 5260 f%(16)=0:PROCJ:IFb2%PROCB
 5290 IFFN@=0PROC6(NOT4)
 5300 ENDPROC
 5310 DEFPROCf:LOCALI%:FORI%=e0%TO16-1:f%(I%)=f%(I%+1):u%(I%)=u%(I%+1):NEXT:ENDPROC
 5380 DEFPROCJ:LOCAL_%,I%,J%,`$:_%=OPENOUT("RAM:!S."+"CAROUSEL"):IF_%=0ENDPROC
 5420 J%=FN@:IFJ%=0CLOSE#_%:ENDPROC
 5440 FORI%=1TOJ%:`$=STR$(f%(I%))+","+STR$(u%(I%)):BPUT#_%,`$:NEXT:CLOSE#_%:ENDPROC
 5500 DEFFN2(c2%):LOCALI%,L%:I%=1:L%=FN@:REPEAT:IFf%(I%)=c2%UNTILTRUE:=I%
 5560 I%=I%+1:UNTILI%>L%:=0
 5590 DEFFN@:LOCALI%:I%=1:REPEAT:IFf%(I%)=0UNTILTRUE:=I%-1
 5640 I%=I%+1:UNTILI%>16:=16
 5670 DEFPROCg(q%):LOCALI%:PRINTTAB(3-1,q%+2);" ";M$(q%);:ENDPROC
 5710 DEFPROCh:LOCALq%:IF`%=0ENDPROC
 5740 FORq%=1TO`%:PROCg(q%):NEXT:ENDPROC
 5780 DEFPROCB:LOCALq%:IF`%=0ENDPROC
 5810 FORq%=1TO`%:I%=FN2(b%(q%)):PRINTTAB(74,q%+2);:IFI%<10PRINT" ";
 5850 IFI%<=0PRINT" ";ELSEPRINT;I%;
 5860 NEXT:ENDPROC
 5880 DEFFN7:LOCAL_%,S$:S$="RAM:!S."+"ALTERED":_%=OPENIN(S$):IF_%=0THEN=FALSE
 5930 CLOSE#_%:PROCK(S$):=TRUE
 5960 DEFPROCI:a%=1:PROCM:PROC7:p%=0:PROC@:ENDPROC
 6030 DEFPROC7:LOCALr%:VDU23,1|:PROCh:PROCB:PROC8:r%=256OR64:IFFN@>0r%=r%OR4
 6110 IF`%>0r%=r%OR2OR16OR32
 6120 IF(`%>0)AND(`%<16)r%=r%OR8
 6130 IFr%<>g%PROC6(r%)
 6140 IF`%>0e%=0ELSEe%=3
 6150 ENDPROC
 6160 DEFPROCF:PROC3(0,"Please wait while loading screen information ...","",""):PROCi:PROCj:ENDPROC
 6220 DEFPROCi:LOCALI%:`%=0:FORI%=1TO16:PROCk(I%):NEXT:ENDPROC
 6290 DEFPROCk(j1%):LOCAL_%,q0%,y0%,N$,G$,H$,J$,h%:_%=OPENIN(FN0(j1%)):IF_%=0ENDPROC
 6330 q0%=FALSE:y0%=FALSE:N$="":G$="":REPEAT:PROC2(_%,":"):H$=J$:IF(H$<>"DATA:")AND(NOTh%)PROC2(_%,"")
 6410 IFH$="TITLE:"N$=J$:q0%=TRUE
 6420 IFH$="TIME:"G$=J$:y0%=TRUE
 6430 UNTILh%OR(H$="DATA:")OR(q0%ANDy0%):IFNOTq0%CLOSE#_%:ENDPROC
 6450 IFLEN(N$)>=48-3N$=LEFT$(N$,48-3-1)
 6460 IFLEN(G$)>=74-48G$=LEFT$(G$,74-48-1)
 6470 `%=`%+1:M$(`%)=N$+STRING$(48-3-LEN(N$)," ")+G$+STRING$(74-48-LEN(G$)," "):b%(`%)=j1%:CLOSE#_%:ENDPROC
 6520 DEFPROCj:LOCAL_%,I%,J%,J$,h%:_%=OPENIN("RAM:!S."+"CAROUSEL"):IF_%=0f%(1)=0:ENDPROC
 6560 I%=1:REPEAT:PROC2(_%,","):J%=VAL(J$):IFFN8(J%)f%(I%)=J%:I%=I%+1
 6610 PROC2(_%,""):UNTILh%OR(I%>16):IF(I%<=16)f%(I%)=0
 6640 CLOSE#_%:ENDPROC
 6660 DEFFN8(`0%):LOCALI%,z0%:I%=1:REPEAT:z0%=(b%(I%)=`0%):I%=I%+1:UNTIL(I%>`%)ORz0%:=z0%:ENDPROC
 6750 DEFPROCa:ONd%-(128+11)PROCm,PROCn,PROCo,PROCpELSEIFd%=128PROCq
 6770 ENDPROC
 6780 DEFPROCm:ENDPROC
 6800 DEFPROCn:ENDPROC
 6820 DEFPROCo:IFa%<`%PROCC:a%=a%+1:PROC8
 6840 ENDPROC
 6850 DEFPROCp:IFa%>1PROCC:a%=a%-1:PROC8
 6870 ENDPROC
 6880 DEFPROCq:PROCC:a%=1:PROC8:ENDPROC
 6930 DEFPROC8:IF`%=0ENDPROC
 6950 PROC0(1):PRINTTAB(3-1,a%+2);f$;:PROC0(0):ENDPROC
 6990 DEFPROCC:PRINTTAB(3-1,a%+2);" ";:ENDPROC
 7020 DEFFN4:IFp0%ENDPROC
 7040 CALL_1%:d2%=@Y%:IF@C%THEN=FALSE
 7070 CALL`1%:e2%=@Y%:IF@C%CALLr0%:=FALSE
 7100 k1%=g%:p0%=TRUE:=TRUE
 7130 DEFPROCG:e%=0:IFp0%ELSEENDPROC
 7160 g%=k1%:Y%=e2%:CALLa1%:IF@C%PRINT"Unable to restore context":STOP
 7200 Y%=d2%:CALLr0%:IF@C%PRINT"Unable to restore screen":STOP
 7230 p0%=FALSE:PROC@:PROC6(k1%):ENDPROC
 7270 DEFPROC_:IF`%=0ENDPROC
 7290 LOCAL_%,I%:PROCK(FN0(b%(a%))):I%=FN2(b%(a%)):IFI%>0PROCH(I%,FALSE)
 7330 IFa%<`%PROCrELSEa%=a%-1
 7340 `%=`%-1:PROC7:PRINTTAB(3-1,`%+1+2);STRING$(74-3+3," ");:IF`%=0PROC@
 7380 ENDPROC
 7390 DEFPROCr:LOCALI%:FORI%=a%+1TO`%:b%(I%-1)=b%(I%):M$(I%-1)=M$(I%):NEXT:ENDPROC
 7460 DEFPROCK(S$):OSCLI("delete "+S$):ENDPROC
 7490 DEFPROCZ:IF`%=0ENDPROC
 7510 IF`%=16PROC1(1):PROC@:ENDPROC
 7520 LOCALX$,Q$,G$,s%,_0%:Q$=FN3(4,25,40,4):IF_0%=128+8PROC@:ENDPROC
 7550 e%=2:PROC@:IFFN9PROCs
 7580 PROC7:PROC@:ENDPROC
 7610 DEFFN9:LOCALi%,m%:s%=1:REPEAT:i%=OPENIN(FN0(s%)):IFi%<>0CLOSE#i%:s%=s%+1
 7670 UNTIL(i%=0)OR(s%>16):IFs%>16PROC1(2):=FALSE
 7690 i%=OPENIN(FN0(b%(a%))):IFi%=0PROC1(3):=FALSE
 7710 m%=OPENOUT(FN0(s%)):IFm%=0CLOSE#i%:PROC1(4):=FALSE
 7730 PROCt:IFQ$<>""BPUT#m%,("TITLE:"+Q$+CHR$13);
 7750 IFX$<>""BPUT#m%,("EMULATION:"+X$+CHR$13);
 7760 VDU23,1|:G$=TIME$(3):BPUT#m%,("TIME:"+G$+CHR$13);:BPUT#m%,"DATA:";:IFNOTEOF#i%REPEATBPUT#m%,BGET#i%:UNTILEOF#i%
 7810 CLOSE#i%:CLOSE#m%:m%=OPENIN(FN0(s%)):IFm%=0PROC1(5):=FALSE
 7850 CLOSE#m%:=TRUE
 7870 DEFPROCt:LOCALH$,J$,h%:REPEAT:PROC2(i%,":"):H$=J$:IF(H$<>"DATA:")AND(NOTh%)PROC2(i%,"")
 7930 IFH$="EMULATION:"X$=J$
 7940 UNTILh%OR(H$="DATA:"):ENDPROC
 7960 DEFPROCs:IFLEN(Q$)>=48-3Q$=LEFT$(Q$,48-3-1)
 7980 IFLEN(G$)>=74-48G$=LEFT$(G$,74-48-1)
 7990 `%=`%+1:M$(`%)=Q$+STRING$(48-3-LEN(Q$)," ")+G$+STRING$(74-48-LEN(G$)," "):b%(`%)=s%:ENDPROC
 8030 DEFPROCM:LOCALg0%,I%,m1%,a$,k0%:g0%=FN@:IFg0%<1ENDPROC
 8070 FORI%=1TOg0%:k0%=FNA(I%):m1%=b%(I%):a$=M$(I%):b%(I%)=b%(k0%):M$(I%)=M$(k0%):b%(k0%)=m1%:M$(k0%)=a$:NEXTI%:ENDPROC
 8170 DEFFNA(f2%):LOCALn1%,J%:n1%=f%(f2%):J%=1:REPEAT:IFb%(J%)=n1%UNTILTRUE:=J%
 8230 J%=J%+1:UNTILJ%>`%:STOP
10000 DEFPROCb:LOCALe%,p%,s0%,c%,_0%,a0%,t0%:IFFN4ELSEPROC1(6):PROC@:k%=-1:ENDPROC
10030 p%=1:g%=1OR4OR64OR128:PROCD(b%(a%)):IFk%<>0PROCG:PROC1(3):ENDPROC
10070 s0%=FALSE:a0%=39:IF(c%=2)OR(c%=5)a0%=19ELSEIF(c%=0)OR(c%=3)a0%=79
10100 IF(c%=3)OR(c%=6)OR(c%=7)t0%=23ELSEt0%=31
10110 PROCu(b%(a%)):IFs0%PROCv(b%(a%))
10130 k%=_0%:ENDPROC
10150 DEFFN0(g2%):=e$+"SCREEN"+STR$(g2%)
10170 DEFPROCD(`0%):LOCAL_%,C%,p$,H$,J$,h%:k%=-1:_%=OPENIN(FN0(`0%)):IF_%=0ENDPROC
10220 REPEAT:PROC2(_%,":"):H$=J$:IF(NOTh%)AND(H$<>"DATA:")PROC2(_%,"")
10260 UNTILh%OR(H$="DATA:"):IFH$<>"DATA:"CLOSE#_%:ENDPROC
10280 C%=BGET#_%:IFEOF#_%CLOSE#_%:ENDPROC
10300 c%=BGET#_%:IF(c%<0)OR(c%>7)CLOSE#_%:ENDPROC
10320 MODEc%:VDU23,1|:IFNOTEOF#_%REPEATVDUBGET#_%:UNTILEOF#_%
10350 CLOSE#_%:k%=0:ENDPROC
10380 DEFPROC2(_%,g$):LOCALC%:J$="":h%=EOF#_%:IFh%ENDPROC
10430 REPEAT:C%=BGET#_%:h%=EOF#_%:IFC%>=32J$=J$+CHR$(C%)
10470 UNTIL(C%<32)ORh%OR(INSTR(g$,CHR$(C%))>0):ENDPROC
10490 DEFPROCv(`0%):LOCALn%:n%=OPENOUT(FN0(`0%)):IFn%=0ENDPROC
10530 BPUT#n%,("TITLE:"+LEFT$(M$(a%),48-3)+CHR$13);:BPUT#n%,("EMULATION:");:IFc%=7BPUT#n%,("VIDEOTEX"+CHR$13);ELSEBPUT#n%,("TELETYPE"+CHR$13);
10560 VDU23,1|:BPUT#n%,("TIME:"+TIME$(3)+CHR$13);:VDU23,1,1|:BPUT#n%,("DATA:"+CHR$22+CHR$(c%));:D%!(&E0)=n%:D%!(&E0+2)=h2%:D%?(&E0+5)=32:IFc%=7D%?(&E0+6)=255ELSED%?(&E0+6)=127
10640 IF(c%=3)OR(c%=6)OR(c%=7)D%?(&E0+7)=24ELSED%?(&E0+7)=31
10650 D%?(&E0+8)=a0%+1:CALLb1%:CLOSE#n%:n%=0:IF@C%
10690 ENDPROC
10700 DEFFNB(o1%):IFo1%=128+1THEN=TRUE
10720 IFo1%=128+3THEN=(FN@>0)
10730 =FALSE
10740 DEFPROCu(`0%):LOCALC%,m0%,X%,Y%:PROCN:REPEAT:C%=INKEY(100):IFC%=128+7PROC9(FALSE):UNTILFALSE
10800 IFC%=160+7PROC9(TRUE):UNTILFALSE
10810 IFC%=128+8PROCD(`0%):PROCN:s0%=FALSE:UNTILFALSE
10820 IFC%=128VDU30:X%=0:Y%=0
10830 IFC%=27m0%=NOTm0%:UNTILFALSE
10840 IF(C%>=32)AND(C%<127)PROCO(C%)
10850 IFC%=127PROCO(&FF)
10860 IFC%=128+12PROCw
10870 IFC%=128+13PROCQ
10880 IFC%=128+14PROCR
10890 IFC%=128+15PROCx
10900 IFC%=13X%=0
10910 VDU31,X%,Y%:UNTILFNB(C%):_0%=C%:ENDPROC
10950 DEFPROCN:VDU30:VDU23,1,1|:X%=0:Y%=0:m0%=FALSE:ENDPROC
11020 DEFPROCO(C%):IF(X%=a0%)AND(Y%=t0%)AND(c%<>7)ENDPROC
11040 IFm0%m0%=FALSE:VDU(C%AND&1F)OR&80ELSEVDUC%
11050 PROCQ:s0%=TRUE:ENDPROC
11080 DEFPROCQ:IFX%<a0%X%=X%+1:ENDPROC
11100 X%=0:PROCR:ENDPROC
11130 DEFPROCw:IFX%>0X%=X%-1:ENDPROC
11150 IFY%>0X%=a0%:Y%=Y%-1
11160 ENDPROC
11170 DEFPROCR:IFY%<t0%Y%=Y%+1
11190 ENDPROC
11200 DEFPROCx:IFY%>0Y%=Y%-1
11220 ENDPROC
11230 DEFFN3(X%,Y%,W%,i2%):LOCALO$,C%,J%,p1%:p1%=e%:e%=i2%:PROC@:O$="":J%=0:VDU23,1,1|:REPEAT:C%=FN1(100,X%+J%,Y%):IFC%=128+7PROC4(FALSE)
11340 IFC%=160+7PROC4(TRUE)
11350 IFC%=160+7ORC%=128+7PRINTTAB(X%,Y%);O$;:UNTILFALSE
11360 IFC%<>127ELSEIFJ%=0UNTILFALSEELSEO$=LEFT$(O$,(LENO$)-1):J%=J%-1:PRINTTAB(X%+J%,Y%);" ":UNTILFALSE
11370 IF(C%=13)OR(C%=128+8)UNTILTRUE:_0%=C%:VDU23,1|:e%=p1%:=O$
11380 IFC%=21J%=0:O$="":PRINTTAB(X%,Y%);SPC(W%):UNTILFALSE
11390 IFC%<32ORC%>127UNTILFALSE
11400 IFJ%=W%VDU7:UNTILFALSE
11410 O$=O$+CHR$(C%):PRINTTAB(X%+J%,Y%);CHR$C%;:IFJ%=0PRINT;SPC(W%-1)
11440 J%=J%+1:UNTILFALSE
11460 DEFPROCc:IFFN@=0k%=-1:ENDPROC
11480 PROCM:PROC7:LOCALp%:IFFN4ELSEPROC1(6):PROC@:k%=-1:ENDPROC
11520 p%=4:g%=1OR64:PROCy:ENDPROC
11560 DEFPROCy:LOCALC%,n0%,b0%,g0%,u0%,c1%,c%:u0%=TRUE:b0%=1:n0%=0:g0%=FN@:c1%=FALSE:REPEAT:IFu0%PROCD(f%(b0%))
11650 C%=INKEY(100):IFC%=128+7PROC9(FALSE):UNTILFALSE
11670 IFC%=160+7PROC9(TRUE):UNTILFALSE
11680 IFC%=128+1k%=C%:c1%=TRUE
11690 n0%=n0%+1:u0%=n0%>=u%(b0%):IFNOTu0%ELSEn0%=0:IFb0%<g0%b0%=b0%+1ELSEb0%=1
11720 UNTILc1%:ENDPROC
11740 DEFPROC9(d1%):IFd1%CALLv0%ELSECALLw0%
11760 ENDPROC
15000 DEFPROCX:DIMq1%FN5(1000):h2%=q1%+890:FORr1%=0TO2STEP2:P%=q1%:[OPTr1%:WRD&10
15070 .j2%:PHY:LDY&E0:COP:EQUB@OPBPT%:PLY:RTS
15130 .b1%:LDA#20:COP:EQUB@OPWRC%:LDA#0:STA&E0+9:LDA#30:COP:EQUB@OPWRC%:LDA&E0+7:PHA
15220 .k2%:JSRm2%:JSRn2%:PLA:BCSo2%:DECA:BEQp2%:PHA:LDA#9:COP:EQUB@OPWRC%:BRAk2%
15330 .p2%:CLC
15350 .o2%:RTL
15370 .m2%:LDA&E0+8:PHA:LDY#0
15410 .q2%:JSRr2%:PLA:DECA:BEQs2%:PHA:PHY:LDA#9:COP:EQUB@OPWRC%:PLY:BRAq2%
15520 .s2%:RTS
15540 .n2%:SWA:LDA&E0+8:TAY:DEY
15590 .t2%:LDAL(&E0+2),Y:CMP#32:BNEu2%:DEY:BPLt2%
15650 .u2%:INY:CPY&E0+8:BEQv2%:LDA#13:STAL(&E0+2),Y:INY:LDA#10:STAL(&E0+2),Y:INY
15750 .v2%:TYX:LDY#0
15780 .w2%:LDAL(&E0+2),Y:JSRj2%:BCSx2%:INY:DEX:BNEw2%
15850 .e3%:CLC
15870 .x2%:RTS
15890 .r2%:PHY:LDA#&87:COP:EQUB@OPOSB%:TXA:BNEy2%:JSRz2%:LDA#&87:COP:EQUB@OPOSB%:TXA
15990 .y2%:CMP&E0+5:BCC_3%:CMP&E0+6:BCCs1%:BEQs1%
16050 ._3%:LDA#32
16070 .s1%:PLY:STAL(&E0+2),Y:INY:RTS
16120 .z2%:LDA#17:COP:EQUB@OPWRC%:LDA&E0+9:COP:EQUB@OPWRC%:LDA#17:COP:EQUB@OPWRC%:LDA&E0+9:EOR#&80:STA&E0+9:ORA#7:COP:EQUB@OPWRC%:RTS:WRD&30
16260 .`1%:COP:EQUB@OPSCX%:RTL
16280 .a1%:COP:EQUB@OPRCX%:RTL
16300 ._1%:COP:EQUB@OPSSC%:RTL
16320 .r0%:COP:EQUB@OPRSC%:RTL
16340 .t1%:LDA#126:COP:EQUB@OPOSB%
16370 .f3%:LDA#@EVPRE%:COP:EQUB@OPAEV%:RTL:WRD&20
16420 .e1%:RTL:]:NEXTr1%:`1%=`1%+@WRDAM%+@WRDXY%:a1%=a1%+@WRDAM%+@WRDXY%:_1%=_1%+@WRDAM%+@WRDXY%:r0%=r0%+@WRDAM%+@WRDXY%:t1%=t1%+@WRDAM%+@WRDXY%:b1%=b1%+@WRDXY%+@USED%:e1%=e1%+@WRDAM%:CALLe1%:D%=@D%:ENDPROC
20000 DEFPROCz:DIMv%(4,3):DIMw%(4):w%(0)=1:w%(1)=1:w%(2)=0:w%(3)=0:w%(4)=0
20080 .v%(0,0)
20090 DATA"To select or                Use the cursor keys to select a screen and"
20100 DATA"change carousel sequence     press F6 (Select).  Type in the position you"
20110 DATA"                             would like the screen to appear in the carousel"
20120 DATA"                             and press RETURN.  You will see the position"
20130 DATA"                             number on the far right hand side of the screen"
20140 DATA""
20150 DATA"To start the carousel       Make sure you have assigned carousel positions"
20160 DATA"                             to the screens you have saved.  Press F3"
20170 DATA"                             (Start)."
20180 DATA""
20190 DATA"To see and/or edit a screen Position the pointer to the screen name and"
20200 DATA"                             press F2 (See/Edit)."
20210 DATA""
20220 DATA"To take a screen out of a   Position the pointer to the screen name and"
20230 DATA"carousel sequence            press F6 (Select)."
20240 DATA"****"
20250 .v%(0,1)
20260 DATA"To delete a screen          Position the pointer to the screen name and"
20270 DATA"                             press F5 (Delete)."
20280 DATA""
20290 DATA"To print the list of        Make sure the Communicator is connected to the"
20300 DATA"screen names                 printer and press F7 (Print) or Ctrl-F7 for"
20310 DATA"                             full graphics printing."
20320 DATA""
20330 DATA"To stop the carousel and    Press F1 (List)."
20340 DATA"restore the carousel menu"
20350 DATA"****"
20360 .v%(1,0)
20370 DATA"To edit text displayed      Move the cursor by using the cursor keys."
20380 DATA"                             Type new text on top of the existing text."
20390 DATA"                             On videotex screens colour changes and other"
20400 DATA"                             display controls are entered by typing ESCAPE"
20410 DATA"                             followed by a character.  See documentation"
20420 DATA"                             for a list of these characters"
20430 DATA""
20440 DATA"To return to the carousel   Press F1 (List)."
20450 DATA"menu"
20460 DATA""
20470 DATA"To print the screen         Make sure the Communicator is connected to the"
20480 DATA"displayed                    printer and press F7 (Print) or Ctrl-F7 for"
20490 DATA"                             full graphics printing."
20500 DATA""
20510 DATA"To restore the original     Press F8 (Restore)."
20520 DATA"version of the screen"
20530 DATA"****"
20540 .v%(1,1)
20550 DATA"To start the carousel       Make sure you have assigned carousel positions"
20560 DATA"                             to the screens you have saved.  Press F3"
20570 DATA"                             (Start)."
20580 DATA""
20590 DATA"****"
20600 .v%(2,0)
20610 DATA"****"
20620 .v%(3,0)
20630 DATA"****"
20640 .v%(4,0)
20650 DATA"You are running the carousel of stored screens."
20660 DATA""
20670 DATA"To stop the carousel and    Press F1 (List)."
20680 DATA"restore the carousel menu"
20690 DATA""
20700 DATA"To print the screen         Make sure the Communicator is connected to the"
20710 DATA"displayed                    printer and press F7 (Print) or Ctrl-F7 for"
20720 DATA"                             full graphics printing."
20730 DATA""
20740 DATA"****"
20750 ENDPROC
20760 DEFPROC@0:DIMc0%(6)
20780 .c0%(0)
20790 DATA"To select a screen    Use cursor keys  |  To duplicate a screen      F4"
20800 DATA"To See/Edit a screen               F2  |  To delete a screen         F5"
20810 DATA"To start Carousel                  F3  |  To amend carousel sequence F6"
20820 .c0%(1)
20830 .c0%(2)
20840 DATA"Copying to the new screen - please wait."
20850 DATA""
20860 DATA""
20870 .c0%(3)
20880 DATA"There are no saved screens"
20890 DATA""
20900 DATA"Please press STOP to return to the Main Menu"
20910 .c0%(4)
20920 DATA"Please enter the title for the copied screen:"
20930 DATA">"
20940 DATA""
20950 .c0%(5)
20960 DATA"Please enter the position in the carousel where this screen is to appear:"
20970 DATA">"
20980 DATA""
20990 ENDPROC
21000 DEFPROC00:b$="Press SPACE to continue.":DIMx%(15)
21030 .x%(0)
21040 DATA 1,"The new carousel sequence number must be between 1 and one greater than"
21050 DATA "the current highest carousel sequence number."
21060 DATA "                     "
21070 .x%(1)
21080 DATA 1,"You cannot copy a screen because the list already contains the maximum"
21090 DATA "number of entries.  Delete some other screen and then use Copy again."
21100 DATA "                     "
21110 .x%(2)
21120 DATA 1,"You cannot copy a screen because the maximum number of screens has already"
21130 DATA "been stored.  Delete some other screen first and then use Copy again."
21140 DATA "                     "
21150 .x%(3)
21160 DATA 1,"There has been a problem in reading the screen you have requested."
21170 DATA ""
21180 DATA "                     "
21190 .x%(4)
21200 DATA 1,"There has been a problem in saving the screen you have requested."
21210 DATA ""
21220 DATA "                     "
21230 .x%(5)
21240 DATA 1,"There was no space available to copy the screen you have requested."
21250 DATA "Delete some other screen first and then use Copy again."
21260 DATA "                     "
21270 .x%(6)
21280 DATA 1,"There is no memory available to save the list screen.  In order to run"
21290 DATA "Carousel fully, delete some other task at the main menu."
21300 DATA "                     "
21310 ENDPROC
21320 DEFPROC10:DIMK$(7):K$(0)="  List  ":K$(1)="See/Edit":K$(2)=" Start  ":K$(3)="  Copy  ":K$(4)=" Delete ":K$(5)=" Select ":K$(6)=" Print  ":K$(7)="Restore ":ENDPROC
25000 DEFPROCE:MODE0:VDU19,0,4|19,1,7|:PRINTTAB(1);:PROC0(1):PRINT"Communicator ";N$;" ";h$;" Acorn Computers Ltd 1986":PROC0(0):IFFN1(-1,0,0)
25070 PROCA(0,79,1,22):PROCA(0,79,23,27):ENDPROC
25100 DEFPROC6(d0%):LOCALu1%:PROC0(1):IFd0%<0d0%=g%ANDd0%
25140 IFd0%AND256ANDNOTg%PROCS
25150 t%=1:FORu1%=0TO7:IF(d0%ANDt%)<>(g%ANDt%)PROCT(u1%,d0%ANDt%)
25180 t%=2*t%:NEXT:PROC0(0):g%=d0%:ENDPROC
25230 DEFPROCT(h0%,`3%):IFK$(h0%)=""ENDPROC
25250 IF`3%PRINTTAB(j%(h0%)+3,29);"F";h0%+1;TAB(j%(h0%),30);K$(h0%);ELSEVDU5:MOVE16*j%(h0%),92:PRINTc$;:PLOT0,-128,-32:PRINTc$;:VDU4
25260 ENDPROC
25270 DEFPROCS:LOCALi0%:PROCU:g%=256:t%=1:FORi0%=0TO7:IFK$(i0%)<>"":PRINTTAB(j%(i0%)+3,29);"F";i0%+1;TAB(j%(i0%),30);K$(i0%);:g%=g%+t%
25340 t%=t%*2:NEXT:ENDPROC
25370 DEFPROCU:PROCA(1,37,28,31):PROC5(10,28,31):PROC5(19,28,31):PROC5(28,28,31):PROCA(42,78,28,31):PROC5(51,28,31):PROC5(60,28,31):PROC5(69,28,31):ENDPROC
25470 DEFPROCA(L%,R%,T%,B%):LOCALf1%:VDU28,L%,B%,R%,T%,12,26:PRINTTAB(L%,T%);i$;STRING$(R%-L%-1,d$);j$;:FORf1%=T%+1TOB%-1:PRINTTAB(L%,f1%);Y$;TAB(R%,f1%);Y$;:NEXT:PRINTTAB(L%,B%);k$;STRING$(R%-L%-1,d$);m$;:ENDPROC
25560 DEFPROC5(g1%,T%,B%):LOCALv1%:PRINTTAB(g1%,T%);n$;:FORv1%=T%+1TOB%-1:PRINTTAB(g1%,v1%);Y$;:NEXT:PRINTTAB(g1%,B%);o$;:ENDPROC
25640 DEFFN1(y%,w1%,x1%):LOCALo%,T$:REPEAT:IFy%=-1o%=-1ELSEPRINTTAB(w1%,x1%);:IFy%<0o%=INKEY(100):y%=y%+1ELSEo%=INKEY(y%)
25680 IFo%<0T$=LEFT$(TIME$(3)+"  ",21):PRINTTAB(58,0);:PROC0(1):PRINT;T$;:PROC0(0):UNTILy%=-1ELSEUNTILTRUE
25690 PRINTTAB(w1%,x1%);:=o%
25710 DEFFN6(y%):LOCALo%,T$,y1%:REPEAT:y1%=TIME:CALLa3%:IF@C%o%=-1:REPEATUNTILTIME>y1%ELSEo%=@A%AND&FF
25760 IFo%<0T$=LEFT$(TIME$(3)+"  ",21):PRINTTAB(58,0);:PROC0(1):PRINT;T$;:PROC0(0):UNTILy%=-1ELSEUNTILTRUE
25770 =o%
25780 DEFPROC1(b3%):RESTOREx%(b3%):READo0%,R$,U$,V$:PROC3(o0%,R$,U$,V$+b$):PROCL:REPEATUNTILFN1(100,0,0)=32:ENDPROC
25850 DEFPROC@:IFe%<0PROC20:ENDPROC
25870 RESTOREc0%(e%):READR$,U$,V$:PROC3(0,R$,U$,V$):ENDPROC
25910 DEFPROC20:IFe%=-1PROC3(0,"","",""):ENDPROC
25930 RESTOREx0%(-(e%+2)):READR$:PROC3(0,R$,"Press RETURN to leave help before using function keys","For more details refer to the User guide"):ENDPROC
25970 DEFPROC3(o0%,R$,U$,V$):VDU28,1,26,78,24:PROC0(o0%):VDU12,26:PRINTTAB(3,24);R$;TAB(3,25);U$;TAB(3,26);V$:PROC0(0):ENDPROC
26040 DEFPROC0(o0%):IFo0%=0COLOUR1:COLOUR128ELSECOLOUR0:COLOUR129
26060 ENDPROC
26070 DEFPROCL:REPEAT:UNTILINKEY(0)=-1:ENDPROC
26110 DEFPROC4(d1%):IFd1%CALLv0%ELSECALLw0%
26130 IF@C%ELSEENDPROC
26140 PROC3(1,"Print failed because :",$@BHA%,b$):LOCALI%:REPEAT:I%=FN6(100):IFI%>=@ECPHON%ANDI%<=@ECHELP%OSCLI"fx 15,1":UNTILFALSE
26190 UNTILINKEY(0)=32:PROC@:ENDPROC
26220 DEFPROC60:ENDPROC
26230 DEFPROC@HELP:h1%=h1%:IFh1%ELSEENDPROC
26260 IFz1%PROC30:ENDPROC
26270 LOCALz%,_2%,e%:PROCE:PROC0(1):IFc3%_2%=g%:PROCS:PROC6(_2%)ELSEPROCU:PROCT(6,TRUE):PROC0(0)
26310 j0%=0:PROCV:OSCLI"FX 15,1":REPEAT:z%=FN6(100):IFz%>=@ECPHON%ANDz%<=@ECHELP%UNTILTRUE:ENDPROC
26370 z%=INKEY(0):IFz%=32j0%=j0%+1:PROCV:UNTILFALSE
26390 IFz%=135PROC4(FALSE):UNTILFALSE
26400 IFz%=167PROC4(TRUE):UNTILFALSE
26410 UNTILz%=13:ENDPROC
26430 DEFPROC30:!`2%=z1%:CALLi1%:ENDPROC
26470 DEFPROCV:LOCALZ$:Z$="":VDU28,1,21,78,2,12:IFj0%>w%(p%)j0%=0
26510 RESTOREv%(p%,j0%):READ_$:REPEAT:PRINTZ$;_$;:Z$=CHR$13+CHR$10:READ_$:UNTIL_$="****":IFw%(p%)=0e%=-2ELSEIFj0%<w%(p%)e%=-3ELSEe%=-4
26590 PROC@:VDU26:ENDPROC
26620 DEFPROCW:i$=CHR$&B0:j$=CHR$&B1:k$=CHR$&B2:m$=CHR$&B3:d$=CHR$&A6:Y$=CHR$&A9:n$=CHR$&A7:o$=CHR$&AE:c$=STRING$(8,CHR$&BF):DIMj%(7):j%(0)=2:j%(1)=11:j%(2)=20:j%(3)=29:j%(4)=43:j%(5)=52:j%(6)=61:j%(7)=70:c3%=TRUE:q$=CHR$136:f$=CHR$137:r$=CHR$138:s$=CHR$139:h$=CHR$135:PROCd:PROCz:z1%=0:PROC@0:PROC40:PROC00:PROC10:PROC50:h1%=TRUE:ENDPROC
26850 DEFPROC40:DIMx0%(2)
26870 .x0%(0)
26880 DATA""
26890 .x0%(1)
26900 DATA"Press SPACE for more information."
26910 .x0%(2)
26920 DATA"Press SPACE to return to start of help information."
26930 ENDPROC
26940 DEFPROC50:DIMa2%FN5(100):`2%=a2%+90:FORPd3%=0TO2STEP2:P%=a2%:[OPTPd3%
27000 .a3%:COP:EQUB@OPXKC%:RTL:WRD&30
27050 .w0%:COP:EQUB@OPCMD%:EQUS"TXTDMP":BRK:RTL
27090 .v0%:COP:EQUB@OPCMD%:EQUS"SCRDMP":BRK:RTL
27130 .i1%:LDX#@COHELP%:PHK:PLB:LDY`2%:JSRL@CO%:RTL:]:NEXT:w0%=w0%+@WRDAM%+@WRDXY%:v0%=v0%+@WRDAM%+@WRDXY%:i1%=i1%+@WRDAM%+@WRDXY%:ENDPROC
27260 DEFFN5(N%):LOCALP%:DIMP%-1:IF((P%EOR(P%+N%+1))AND&FF0000)DIMP%(&FFFF-(P%AND&FFFF))
27290 =N%
65415