290 MODE7:PROCa:b$=FNc:ONERRORPROCd:b$=" ":GOTO360 360 IFb$=" "ANDFNb=4THENb$="D" 370 IFb$=" "ANDFNb=8THENb$="A" 380 IFb$="A"THENPROCe 390 IFb$="D"THENPROCf 400 ONERRORVDU3:PROCg("FX3"):CLOSE#0:IFERR=17THENPROCg("FX229,1"):GOTO480ELSEMODE7:REPORT:PRINT" at line ";ERL:PROCh:END 420 DIMM%-1:IFHIMEM-M%<256THENPROCi("There are less than 256 bytes of RAM free. The program will run but you will keep receiving warnings about the shortage of RAM.") 450 IFFNj("!Mesg")THENPROCkELSEPROCl 460 DIMm$(n%-1),o$(n%-1),p%(n%-1):PROCq 480 REPEAT:PROCr:s%=FNt:IFs%=1THENPROCu 520 IFs%=2THENPROCv 530 IFs%=3THENPROCw 540 IFs%=4THENPROCx 550 IFs%=5THENPROCy 560 UNTILs%=6:MODE7:PROCh:END 620 DEFPROCz:*FX229,1 640 *FX4,1 650 *FX225,200 660 *FX226,210 670 *FX227,220 680 *FX202,48 690 ENDPROC 710 DEFPROCh:*FX202,32 730 *FX118 740 *FX225,1 750 *FX226,128 760 *FX227,144 770 *FX229 780 *FX4 790 ENDPROC 810 DEFPROCa:ONERRORMODE7:REPORT:PRINT" at line ";ERL:PROCh:END 830 CLOSE#0:PROCz:PROCaa:PROCba:PROCca:PROCda:ea%=4080::DIMfa%32,ga%ea%:ha%=1:PROCia:ENDPROC 950 DEFFNS="SendMes" 970 DEFPROCe:*ADFS 990 *MOUNT 0 1000 *DIR $ 1010 ENDPROC 1030 DEFPROCf:*DISC 1050 *DRIVE 0 1060 *DIR $ 1070 ENDPROC 1090 DEFPROCaa:VDU23,1,0;0;0;0;:ENDPROC 1130 DEFPROCja:VDU23,1,1;0;0;0;:ENDPROC 1170 DEFPROCg($fa%):LOCALX%,Y%:X%=fa%MOD256:Y%=fa%DIV256:CALL&FFF7:ENDPROC 1240 DEFPROCba:ka%=150:la%=147:ma%=135:na%=131:oa%=131:pa%=132:qa%=135:ra%=130:sa%=131:ta%=135:ua%=131:va%=135:wa%=135:xa%=135:ya%=135:za%=135:ab%=135:bb%=135:cb%=135:ENDPROC 1460 DEFPROCca:LOCALdb%:VDU26,12:PRINTTAB(0,23);CHR$(ka%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ";:VDU30,11,30:PRINT" ";CHR$(ka%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ";:PRINTCHR$(ka%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(ka%);"ÿ"; 1530 PRINTCHR$(ka%);"ÿ";CHR$(la%);"¶£´ ·é¨è° ¶© °à¤ôà à ° °à    ";CHR$(ka%);"ÿ";:PRINTCHR$(ka%);"ÿ";CHR$(la%);"¶£´¡·éêê  ²éêê꡵êèêàîê ½¡ ";CHR$(ka%);"ÿ";:PRINTCHR$(ka%);"";CHR$(la%);"¢£ £¡¢ ¡ ¢¡ ¡¢ ¢ ¡¡ £¢ ¢¡   ":FORdb%=1TO19:PRINTCHR$(ka%);"ÿ";SPC(36);CHR$(ka%);"ÿ";:NEXT 1590 PRINTTAB(7,5);CHR$(la%-16);"8BS messaging system 2.11":VDU28,2,23,37,7:ENDPROC 1630 DEFPROCda:IFHIMEM=&7C00AND?&7C28=ka%THENENDPROC 1650 PROCi("Sorry, this program uses direct screen access and the screen RAM is not at &7C00. If you have them, try disabling your shadow RAM and/or second processor."):VDU26,12:PROCja:PROCh:END 1710 DEFPROCia:PRINTCHR$(ma%);"Please wait, loading...":DIMeb%452:OSCLI"Load SendMMC "+STR$~eb%:fb%=eb%+&1F:gb%=eb%+&A4:hb%=eb%+&B7:ib%=eb%+&C9:jb%=eb%+&EB:kb%=eb%+&126:lb%=eb%+&158:mb%=eb%+&18A:nb%=eb%+&1AA:ENDPROC 1860 DEFPROCob(T$):PROCpb(T$,ma%,TRUE):ENDPROC 1900 DEFPROCqb(T$):PROCpb(T$,ma%,FALSE):ENDPROC 1950 DEFPROCpb(T$,C%,N%):REPEAT:IFLEN(T$)<36THENPRINTCHR$(C%);T$;SPC((35-LEN(T$))*-N%);:T$=""ELSEA%=INSTR(T$," ",37):A%=A%+(A%=0)*-36:REPEAT:A%=A%-1:UNTILMID$(T$,A%,1)=" ":PRINTCHR$(C%);LEFT$(T$,A%-1);SPC(36-A%);:T$=MID$(T$,A%+1) 1980 UNTILT$="":ENDPROC 2010 DEFPROCi(rb$):CLS:PROCob(rb$):PRINT'CHR$(ma%);"Press SPACE to continue...":*FX21 2060 REPEATUNTILGET=32:ENDPROC 2090 DEFPROCsb(rb$):CLS:PROCob(rb$):PRINT'CHR$(ma%);"Press SPACE to return to BASIC":*FX21 2140 REPEATUNTILGET=32:VDU26,12:PROCja:PROCh:END 2200 DEFFNc:LOCALtb%,tb$:CLS:PROCob("Please insert your submission disc in drive 0. This disc should remain in the drive at all times when you are using this program."):PRINT 2250 PROCob("When you have done this, press A if it an ADFS disc, D if it is a DFS disc or SPACE to use the current filing system."):PRINT:PROCob("If in doubt, just press SPACE."):REPEAT:*FX21 2300 tb%=GET:tb$=CHR$((tb%AND&DF)-32*(tb%=32)):UNTILINSTR(" AD",tb$)<>0:=tb$ 2350 DEFFNb:LOCALA%,Y%:A%=0:Y%=0:=(USR(&FFDA)AND&FF) 2410 DEFPROCd:SOUND1,-10,52,5:ENDPROC 2450 DEFFNj(ub$):LOCALvb%:vb%=OPENIN(ub$):IFvb%<>0THENCLOSE#vb% 2490 =(vb%<>0) 2510 DEFPROCk:LOCALvb%,wb%:CLS:PRINTCHR$(ma%);"Please wait, scanning messages...":vb%=OPENIN("!Mesg"):wb%=BGET#vb%:IFwb%<>1THENPROCsb("The !Mesg file on this disc is a version "+STR$(wb%)+" file. This program can only handle version 1 files.") 2580 INPUT#vb%,xb$:INPUT#vb%,yb$:yb$=FNzb(yb$):n%=(EXT#vb%-256)/4096:IF((EXT#vb%-256)MOD4096)<>0ORn%<5ORn%>25THENPROCsb("The !Mesg file is an unacceptable size.") 2630 CLOSE#vb%:ENDPROC 2680 DEFFNzb(ac$):LOCALeb%:eb%=ASC(RIGHT$(ac$,1)):REPEAT:IFeb%<33OReb%>126THENac$=LEFT$(ac$,LEN(ac$)-1) 2730 eb%=ASC(RIGHT$(ac$,1)):UNTIL(eb%>=33ANDeb%<=126)ORac$="":=ac$ 2770 DEFPROCl:LOCALvb%,bc%:xb$="":yb$="":PROCcc:PROCdc:PRINT''CHR$(ma%);"Please wait...":vb%=OPENOUT("!Mesg"):BPUT#vb%,1::PRINT#vb%,xb$:PRINT#vb%,LEFT$(yb$+STRING$(20," "),20):FORbc%=0TOn%-1:PTR#vb%=256+bc%*4096:PRINT#vb%,"XXX":BPUT#vb%,1:NEXT:PTR#vb%=256+n%*4096:CLOSE#vb%:ENDPROC 2960 DEFPROCcc:CLS:PROCob("Please enter your three-character ID. If you don't know it, it is shown in the top left hand corner of the menu."):PRINT'CHR$(ma%);"ID:";CHR$(na%);:xb$=FNec(FNna(3,3,xb$)):PRINT' 3020 PROCob("Please enter your name as you wish it to appear in message headings. Just enter a blank name if you wish to remain anonymous."):PRINT'CHR$(na%);:yb$=FNna(0,20,yb$):ENDPROC 3070 DEFPROCdc:REPEAT:PRINT':PROCob("How many messages do you wish to have room for in the message file?"):PRINT'CHR$(ma%);"Messages (5-25):";CHR$(na%);:n%=VAL(FNna(1,2,"")):UNTILn%>=5ANDn%<=25:ENDPROC 3160 DEFFNna(fc%,gc%,ma$):LOCALhc%,ic%,tb%:hc%=POS:ic%=VPOS:PRINTLEFT$(ma$+STRING$(gc%,"."),gc%);TAB(hc%+LEN(ma$),ic%);:REPEAT:REPEAT:*FX21 3240 tb%=GET:UNTILtb%=13OR(tb%>=32ANDtb%<=127):IFtb%=127ANDLEN(ma$)>0THENVDU8,46,8:ma$=LEFT$(ma$,LEN(ma$)-1) 3270 IFtb%<>127ANDtb%<>13ANDLEN(ma$)=fc%):=ma$ 3310 DEFFNec(jc$):LOCALkc$,lc%,mc%:kc$="":IFjc$=""THEN="" 3350 FORlc%=1TOLEN(jc$):mc%=ASC(MID$(jc$,lc%,1)):IFmc%>=ASC"a"ANDmc%<=ASC"z"THENmc%=mc%-32 3380 kc$=kc$+CHR$(mc%):NEXT:=kc$ 3420 DEFFNt:LOCALnc%,oc$,tb%:CLS:PRINTFNpc("Start a new message","N");FNpc("View/edit/print messages","V");FNpc("Print all the messages","P");FNpc("Re-enter your user ID/name","R");FNpc("Undelete deleted messages","U");:PRINTFNpc("Quit the program","Q") 3470 PROCob("Use the up and down cursor keys to move the bar, or press the key shown after the option you want. Press RETURN to select the highlighted option."):PRINT:PROCqb("If you select an option by mistake, pressing ESCAPE will usually return you to this menu.") 3500 nc%=ha%:oc$="NVPRUQ":PRINTTAB(1,ha%-1);CHR$(pa%);CHR$157;CHR$(qa%):REPEAT:REPEAT:*FX21 3560 tb%=GETAND&DF:IFINKEY-1ANDtb%=27THENnc%=LEN(oc$):tb%=13: 3580 UNTILINSTR(CHR$138+CHR$139+CHR$13+oc$,CHR$(tb%))<>0:ha%=INSTR(oc$,CHR$(tb%)):IFha%=0THENha%=nc% 3600 IFtb%=138ANDha%1THENha%=ha%-1 3620 IFha%<>nc%THENPRINTTAB(1,nc%-1);" ";CHR$(oa%);TAB(1,ha%-1);CHR$(pa%);CHR$157;CHR$(qa%):nc%=ha% 3630 UNTILtb%=13:=ha% 3660 DEFFNpc(qc$,oc$)=" "+CHR$(oa%)+qc$+STRING$(28-LEN(qc$)," ")+oc$+" "+CHR$156 3680 DEFPROCu:LOCALrc$,sc%:CLS:IFtc%>=n%THENPROCi("Sorry, there is a limit of "+STR$(n%)+" messages for this file."):ENDPROC 3720 PROCob("Please enter the 3-character ID of the person who will receive the message. Messages to individual members are private and will not be published. Enter 999 to send a message to everyone or CCC to send in a comment for publication.") 3730 PRINT'CHR$(ma%);"ID:";CHR$(na%);:*FX229 3750 rc$=FNec(FNna(3,3,"")):*FX229,1 3770 PROCmb:sc%=(rc$<>"CCC"):IFrc$="999"THENuc$="(all members)"ELSEuc$="" 3800 IFsc%THENPROCvc(CHR$(ra%)+"To: "+CHR$(sa%)+rc$+" "+uc$,ga%) 3810 IFyb$=""THENwc$=""ELSEwc$="("+yb$+")" 3820 PROCvc(CHR$(ra%)+"From: "+CHR$(sa%)+xb$+" "+wc$,ga%-40*sc%):PROCvc(CHR$(ra%)+"Subject:"+CHR$(sa%),ga%+40-40*sc%):rc$=FNxc(10,1-sc%,rc$):PROCyc(rc$,FNzc):tc%=tc%+1:ENDPROC 3900 DEFPROCyc(ad$,bd%):LOCALvb%:PRINTTAB(0,0);CHR$(cb%);"Please wait, saving message...";:vb%=OPENUP("!Mesg"):PTR#vb%=256+bd%*4096:PRINT#vb%,ad$:BPUT#vb%,0:PROCcd(FNib+1,vb%):CLOSE#vb%:m$(bd%)=ad$:o$(bd%)=FNdd(30):p%(bd%)=0:ENDPROC 4050 DEFFNzc:LOCALed%,fd%:ed%=-1:FORfd%=0TOn%-1:IFp%(fd%)=255THENed%=fd% 4100 IFp%(fd%)=1THENed%=fd%:fd%=n% 4110 NEXT:IFed%=-1THENPROCi("An attempt was made to add a new message when no space was free"):PROCg("FX125"): 4130 =ed% 4150 DEFFNib:!&70=ga%+ea%+1:!&72=ga%:CALLib%:!&72=0:=(!&70)-ga% 4220 DEFPROCcd(gd%,vb%):LOCALA%,X%,Y%:fa%?0=vb%:fa%!1=ga%:fa%!5=gd%:A%=2:X%=fa%MOD256:Y%=fa%DIV256:CALL&FFD1:BPUT#vb%,152:ENDPROC 4340 DEFPROCvc(hd$,id%):LOCALjd%:jd%=id%?LEN(hd$):$id%=hd$:id%?LEN(hd$)=jd%:ENDPROC 4410 DEFPROCmb:!&70=ga%:!&72=ga%+ea%+1:CALLmb%:ENDPROC 4470 DEFFNxc(kd%,ld%,ad$):LOCALmd%,nd%,od%,pd%,tb%:VDU22,7::md%=0:nd%=0:od%=(ea%DIV40)-25:pd%=FALSE:PROCab(ad$,pd%):PROCqd(md%):*FX21 4550 REPEAT:VDU31,kd%,ld%:REPEAT:tb%=GET:UNTIL(tb%>=32ANDtb%<=127)OR(tb%>=136ANDtb%<=139)OR(tb%>=200ANDtb%<=229)ORtb%=13ORtb%=27ORtb%=20:IFtb%=ASC"£"THENtb%=35ELSEIFtb%=ASC"#"THENtb%=95ELSEIFtb%=ASC"_"THENtb%=96 4630 IFtb%>=32ANDtb%<=126ANDNOTpd%THEN?(kd%+ld%*40+&7C00)=tb%:ga%?(kd%+(ld%+md%)*40)=tb%:kd%=kd%+1:IFkd%=40ANDNOT(md%=od%ANDld%=23)ANDtb%<>32THENkd%=FNrd(ld%,md%):ld%=ld%+1:nd%=-1 4640 IFtb%=32ANDkd%=40THENkd%=39:tb%=13 4650 IFtb%>=200ANDtb%<=229THENsd%=FNtd(tb%,kd%,ld%):kd%=kd%-sd%:IFkd%=40ANDNOT(md%=od%ANDld%=23)THENkd%=0:ld%=ld%+1:nd%=-1 4660 IFtb%=127ANDkd%>0THEN!&70=ga%+(ld%+md%)*40:?&72=kd%:CALLgb%:!&70=&7C00+ld%*40:?&72=kd%:CALLgb%:kd%=kd%-1 4670 IFtb%=13THENIFNOT(md%=od%ANDld%=23)THENga%?((ld%+1+md%)*40)=ga%?((ld%+md%)*40):kd%=1:ld%=ld%+1:nd%=-1 4680 IFtb%=209THENpd%=NOTpd%:PROCab(ad$,pd%) 4690 IFtb%=219THENad$=FNud(ad$):PROCab(ad$,pd%) 4700 IFINSTR("QWASZXqwaszx",CHR$(tb%))<>0ANDpd%THENPROCpd(kd%,ld%,md%,tb%) 4710 IFtb%=226THENPROChb(kd%,ld%,md%) 4720 IFtb%=227THENPROCkb(ld%,md%):nd%=-1 4730 IFtb%=228THENPROClb(ld%,md%):nd%=-1 4740 IFtb%=20THENPROCvd(kd%,ld%,md%,od%):nd%=-1 4750 IFtb%=136THENkd%=kd%-1 4760 IFtb%=137THENkd%=kd%+1 4770 IFtb%=138THENld%=ld%+1 4780 IFtb%=139THENld%=ld%-1 4790 IFkd%<0THENkd%=39:ld%=ld%-1 4800 IFkd%>39THENkd%=0:ld%=ld%+1 4810 IFld%<0THENld%=0:md%=md%+(md%>0) 4820 IFld%>23THENld%=23:md%=md%-(md%md%THENPROCqd(md%):nd%=md%:PROCab(ad$,pd%) 4840 UNTILtb%=27ANDNOTpd%:PROCaa:PROCca:=ad$ 4890 DEFPROChb(kd%,ld%,md%):IFkd%=39THENga%?(39+(ld%+md%)*40)=32:?(&7C00+39+ld%*40)=32:ENDPROC 4910 !&70=ga%+(ld%+md%)*40:?&72=kd%:CALLhb%:!&70=&7C00+ld%*40:?&72=kd%:CALLhb%:ENDPROC 4990 DEFPROCkb(ld%,md%):LOCALwd%,xd%:wd%=FNib:IFwd%>=ea%-80THENPROCd:ENDPROC 5030 IF(ld%+md%)*40>wd%THENENDPROC 5040 !&70=ga%+(ld%+md%-1)*40:!&72=ga%+(wd%DIV40)*40:CALLkb%:FORxd%=(ld%+md%)*40TO39+(ld%+md%)*40:ga%?xd%=32:NEXT:ENDPROC 5120 DEFPROClb(ld%,md%):LOCALwd%,xd%:wd%=FNib:IF(ld%+md%)*40>wd%THENENDPROC 5160 IFwd%>=(ld%+md%)*40ANDwd%<=39+(ld%+md%)*40THENFORxd%=(ld%+md%)*40TO39+(ld%+md%)*40:ga%?xd%=32:NEXT:ENDPROC 5170 !&70=ga%+(ld%+md%)*40:!&72=ga%+(wd%DIV40)*40:CALLlb%:FORxd%=(wd%DIV40)*40TO(wd%DIV40)*40+40:ga%?xd%=32:NEXT:ENDPROC 5250 DEFPROCab(ad$,pd%):PRINTTAB(0,24);SPC(39);TAB(0,24);CHR$(ab%);"Message to ";ad$;TAB(29,24);:IFpd%THENPRINT"Pixel edit";ELSEPRINTSPC(10); 5280 ENDPROC 5300 DEFFNrd(ld%,md%):LOCALyd%,zd%:yd%=40:REPEAT:yd%=yd%-1:UNTILga%?(yd%+(ld%+md%)*40)=32ORyd%=0:IFga%?(yd%+(ld%+md%)*40)<>32THENga%?((ld%+1+md%)*40)=ga%?((ld%+md%)*40):=1: 5370 FORzd%=yd%+1TO39:ga%?(zd%-yd%+(ld%+1+md%)*40)=ga%?(zd%+(ld%+md%)*40):ga%?(zd%+(ld%+md%)*40)=32:NEXT:ga%?((ld%+1+md%)*40)=ga%?((ld%+md%)*40):=40-yd% 5440 DEFPROCqd(md%):!&70=ga%+md%*40:CALLnb%:ENDPROC 5490 DEFFNtd(tb%,kd%,ld%):LOCALae%:ae%=-1:IFtb%>=200ANDtb%<=208THENae%=tb%-71 5530 IFtb%>=210ANDtb%<=216THENae%=tb%-65 5540 IFtb%>=217ANDtb%<=218THENae%=tb%-61 5550 IFtb%>=220ANDtb%<=221THENae%=tb%-67 5560 IFtb%>=222ANDtb%<=223THENae%=tb%-64 5570 IFtb%>=224ANDtb%<=225THENae%=365-tb% 5580 IFae%<>-1THEN?(kd%+ld%*40+&7C00)=ae%:ga%?(kd%+(ld%+md%)*40)=ae%:=TRUE 5590 =FALSE 5610 DEFFNud(ad$):PRINTTAB(0,24);SPC(39);TAB(0,24);CHR$(bb%);"Send this message to:";CHR$(na%);:=FNec(FNna(3,3,ad$)) 5650 DEFPROCpd(kd%,ld%,md%,tb%):LOCALbe%,ce%,kc%:be%=2^((INSTR("QWASZ X",CHR$(tb%AND&DF)))-1):ce%=ga%+kd%+(ld%+md%)*40:IF(?ce%AND160)<>160THEN?ce%=?ce%OR160 5700 IF(?ce%ANDbe%)=be%THENkc%=?ce%AND(255-be%)ELSEkc%=?ce%ORbe% 5710 ?ce%=kc%:?(&7C00+kd%+ld%*40)=kc%:ENDPROC 5750 DEFPROCvd(kd%,ld%,md%,od%):LOCALgd%,ma$:PROCaa:PROCca:PRINTCHR$(ma%);"Are you sure you want to read in"'CHR$(ma%);"a text file?";CHR$(na%);:IFNOTFNdeTHENVDU22,7:ENDPROC 5810 PRINT':PROCob("Please insert the disc containing the text file into drive 0 and press SPACE..."):*FX21 5840 REPEATUNTILGET=32:gd%=10:IFFNb=4THENPROCf:gd%=7 5870 IFFNb=8THENPROCe 5880 PRINT:PRINTCHR$(ma%);"Filename:";CHR$(na%);:ma$=FNna(0,gd%,""):IFma$<>""THENPROCee(kd%,ld%,md%,od%,ma$) 5920 PROCob("Please insert your submission disc in drive 0 and press SPACE..."):*FX21 5940 REPEATUNTILGET=32:IFFNb=4THENPROCf 5960 IFFNb=8THENPROCe 5970 VDU22,7:ENDPROC 6000 DEFPROCee(kd%,ld%,md%,od%,ma$):LOCALvb%,fe$,jd%,ge%:vb%=OPENIN(ma$):IFvb%=0THENPRINT':PROCob("Sorry, the file "+ma$+" is not present on this disc."):PRINT:ENDPROC 6040 IFEOF#vb%THENCLOSE#vb%:ENDPROC 6050 PRINT''CHR$(ma%);"Please wait..."':REPEAT:fe$="":REPEAT:jd%=BGET#vb%:IFjd%=ASC"£"THENjd%=35ELSEIFjd%=ASC"#"THENjd%=95ELSEIFjd%=ASC"_"THENjd%=96 6120 IFjd%>=33ANDjd%<=126THENfe$=fe$+CHR$(jd%) 6130 UNTILjd%<33ORjd%>126OREOF#vb%:ge%=-1:IFkd%+LEN(fe$)<=39THENge%=kd%:he%=ld%:ie%=md%:kd%=kd%+LEN(fe$)+1 6160 IFge%=-1THENkd%=1:ld%=ld%+1:eb%=?(ga%+(ld%-1+md%)*40):IFeb%>=129ANDeb%<=135THEN?(ga%+(ld%+md%)*40)=eb% 6170 IFld%>23THENld%=23:md%=md%-(md%=129ANDeb%<=135THEN?(ga%+(ld%+md%)*40)=eb% 6210 UNTILEOF#vb%:CLOSE#vb%:ENDPROC 6250 DEFPROCq:LOCALvb%,fd%,ad$,je%:vb%=OPENIN("!Mesg"):FORfd%=0TOn%-1:PTR#vb%=256+fd%*4096:INPUT#vb%,ad$:p%(fd%)=BGET#vb%:IFp%(fd%)<>1THENje%=FNke(vb%,FALSE):o$(fd%)=FNdd(30):m$(fd%)=ad$ 6330 NEXT:CLOSE#vb%:tc%=FNle:ENDPROC 6380 DEFFNle:LOCALtc%,fd%:tc%=0:FORfd%=0TOn%-1:IFp%(fd%)=0THENtc%=tc%+1 6430 NEXT:=tc% 6460 DEFFNdd(me%):LOCALne$:ga%?128=13:ne$="Subject:":IFINSTR($ga%,ne$)=0THENne$="Article:" 6510 IFINSTR($ga%,ne$)=0THEN="No subject?" 6520 =FNzb(MID$($ga%,INSTR($ga%,ne$)+9,me%)) 6540 DEFPROCv:LOCALoe%,nc%,pe%,qe%,re%,se%,te%,tb%,ue%,ve%:CLS:IFtc%=0THENPROCi("Sorry, there are no messages to view."):ENDPROC 6580 oe%=1:nc%=1:pe%=1:qe%=-1:REPEAT:REPEAT:PROCwe:IFpe%=qe%THENnc%=1:pe%=1 6660 CLS:PRINTTAB(0,16);CHR$(ta%);"Use:";CHR$(ua%);"V";CHR$(ta%);"iew,";CHR$(ua%);"E";CHR$(ta%);"dit,";CHR$(ua%);"P";CHR$(ta%);"rint,";CHR$(ua%);"D";CHR$(ta%);"elete";:VDU30:IFoe%>tc%THENoe%=1 6700 re%=oe%+13:IFre%>tc%THENre%=tc% 6710 FORse%=oe%TOre%:PRINTFNpc(m$(fa%?se%)+": "+LEFT$(o$(fa%?se%),22)," ");:NEXT:te%=re%-oe%+1:qe%=te%+1:IFtc%>14THENPRINTFNpc("More messages..."," ");:te%=te%+1 6760 IFpe%>te%THENpe%=te% 6770 PRINTTAB(1,pe%-1);CHR$(pa%);CHR$157;CHR$(qa%):REPEAT:REPEAT:*FX21 6810 tb%=GETAND&DF:UNTILINSTR(CHR$138+CHR$139+CHR$13+CHR$27+"PVED",CHR$(tb%))<>0:IFtb%=138ANDpe%1THENpe%=pe%-1 6850 IFpe%<>nc%THENPRINTTAB(1,nc%-1);" ";CHR$(oa%);TAB(1,pe%-1);CHR$(pa%);CHR$157;CHR$(qa%):nc%=pe% 6860 UNTILINSTR(CHR$13+CHR$27+"PVED",CHR$(tb%))<>0:IFpe%=qe%THENoe%=oe%+14:IFoe%>tc%THENoe%=1 6880 UNTILpe%0THENgd%=gd%+(40-(gd%MOD40)) 7420 =gd%-&3C0 7440 DEFPROCaf(bd%):PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(xa%);"Delete this - are you sure?";CHR$(na%);:IFNOTFNdeTHENENDPROC 7470 PROCef(bd%):ENDPROC 7500 DEFPROCef(bd%):LOCALvb%:vb%=OPENUP("!Mesg"):PTR#vb%=256+bd%*4096+5:BPUT#vb%,255:CLOSE#vb%:p%(bd%)=255:tc%=tc%-1:ENDPROC 7600 DEFPROCbf(bd%):LOCALgd%,ad$:PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(za%);"Edit this - are you sure?";CHR$(na%);:IFNOTFNdeTHENENDPROC 7640 PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(wa%);"Loading message, please wait...";:gd%=FNxe(bd%):ad$=FNxc(1,4,m$(bd%)):PROCyc(ad$,bd%):ENDPROC 7720 DEFFNde:LOCALtb%:REPEAT:*FX21 7760 tb%=GETAND&DF:UNTILtb%=ASC("Y")ORtb%=ASC("N"):IFtb%=ASC("Y")THENPRINT"Yes";:=TRUE 7790 PRINT"No";:=FALSE 7820 DEFPROCze(bd%):LOCALgd%:PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ya%);"Print this - are you sure?";CHR$(na%);:*FX229 7860 IFNOTFNdeTHENPROCg("FX229,1"):ENDPROC 7870 PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(wa%);"Loading message, please wait...";:gd%=FNxe(bd%):PRINTTAB(0,16);SPC(35);TAB(0,16);CHR$(ya%);"Printing, please wait...";:PROCff(gd%):*FX229,1 7920 ENDPROC 7940 DEFPROCw:LOCALob%:CLS:IFtc%=0THENPROCi("Sorry, there are no messages to print."):ENDPROC 7980 PRINTCHR$(ma%);"Are you sure you want to print the"'CHR$(ma%);"messages?";CHR$(na%);:*FX229 8000 IFNOTFNdeTHENPROCg("FX229,1"):ENDPROC 8010 PRINT':PROCob("Please wait, printing - press ESCAPE to stop..."):FORob%=0TOn%-1:IFp%(ob%)=0THENPROCff(FNxe(ob%)) 8050 NEXT:*FX229,1 8070 ENDPROC 8090 DEFPROCff(gd%):LOCALob%,mc%:*FX3,10 8120 FORob%=0TOgd%-1:mc%=ga%?ob%:IFmc%>=32ANDmc%<=126THENVDUmc%ELSEVDU32 8150 IF(ob%MOD40)=39ORob%=gd%-1THENPRINT 8160 NEXT:PRINT:*FX3 8190 ENDPROC 8210 DEFPROCx:LOCALgf$,hf$,vb%:gf$=xb$:hf$=yb$:PROCcc:IFxb$=gf$ANDyb$=hf$THENENDPROC 8260 vb%=OPENUP("!Mesg"):PTR#vb%=1:PRINT#vb%,xb$:PRINT#vb%,LEFT$(yb$+STRING$(20," "),20):CLOSE#vb%:ENDPROC 8330 DEFPROCy:LOCALif%,jf%:CLS:*FX229 8370 if%=FALSE:FORjf%=0TOn%-1:IFp%(jf%)=255THENif%=TRUE:PROCjf(jf%) 8400 NEXT:*FX229,1 8420 IFNOTif%THENPROCi("Sorry, there are no messages to undelete.") 8430 ENDPROC 8450 DEFPROCjf(bd%):LOCALvb%:PROCqb("Undelete the message to "+m$(bd%)+" with subject '"+o$(bd%)+"'?"):IFPOS>31THENPRINT 8490 VDUna%:IFNOTFNdeTHENPRINT':ENDPROC 8510 PRINT':*FX229,1 8530 vb%=OPENUP("!Mesg"):PTR#vb%=256+bd%*4096+5:BPUT#vb%,0:CLOSE#vb%:*FX229 8580 p%(bd%)=0:tc%=tc%+1:ENDPROC 8620 DEFPROCr:DIMM%-1:IFHIMEM-M%>=256THENENDPROC 8650 IFHIMEM-M%>=128THENPROCi("There are less than 256 bytes of RAM free. I recommend quitting the program and restarting, as a crash may occur if RAM is exhausted."):ENDPROC 8660 PROCi("There are less than 128 bytes of RAM free. You should quit the program and restart it very soon, otherwise a crash may occur due to lack of RAM."):ENDPROC