110 : 120 *FX119 130 MODE7 140 PROCa 150 PROCb 160 : 190 ONERRORPROCc:d$=" ":GOTO210 200 d$=FNe 210 IFd$=" "ANDFNf=8THENd$="A" 220 IFd$=" "ANDFNf<>8THENd$="D" 230 IFd$="A"ORd$="a"THENPROCg("ADFS"):PROCg("MOUNT 0"):h%=TRUE 240 IFd$="D"ORd$="d"THENPROCg("DISC"):PROCg("DRIVE 0"):h%=FALSE 250 ONERRORPROCi:END 260 : 270 PROCj 280 PROCk 290 PROCl(m$,"!Mesg") 300 MODE7 310 PROCn 320 END 330 : 340 DEFPROCa 350 *FX229,1 360 *FX4,1 370 PROCo 380 ENDPROC 390 : 400 DEFPROCn 410 PROCp 420 *FX229,0 430 *FX4,0 440 ENDPROC 450 : 460 DEFPROCb 470 ONERRORPROCi:END 480 q%=4096 490 r%=25 500 s%=-1:t%=-1 510 DIMu%256,v%q%,w%q% 520 PROCx 530 PROCy 540 ENDPROC 550 : 560 DEFPROCi 570 IF(ERR<&CCORERR>&CE)ANDERR<>&D6THENVDU26,12:CLOSE#0:REPORT:PRINT" at line ";ERL:PROCn:END 580 PROCc 590 GOTO270 600 : 610 DEFPROCo 620 VDU23,1,0;0;0;0; 630 ENDPROC 640 : 650 DEFPROCp 660 VDU23,1,1;0;0;0; 670 ENDPROC 680 : 690 DEFFNS 700 ="ASC2Mes" 710 : 720 DEFPROCx 730 z%=6 740 aa%=3 750 ba%=3 760 ca%=7 770 da%=7 780 k%=7 790 ea%=3 800 fa%=2 810 ga%=3 820 l%=7 830 ha%=3 840 ia%=7 850 ENDPROC 860 : 870 DEFPROCy 880 LOCALja% 890 VDU26,12 900 PRINT" ";CHR$(144+z%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ"; 910 PRINTCHR$(144+z%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯ ";CHR$(144+z%);"ÿ"; 920 PRINTCHR$(144+z%);"ÿ";CHR$(144+aa%);"êë ·Ž€µ ê£àðàðê ° °ð°ðàð   ";CHR$(144+z%);"ÿ"; 930 PRINTCHR$(144+z%);"ÿ";CHR$(144+aa%);"ê뢡·Žµ· ¢ëêêê€ê¡µŽµœµµê® ";CHR$(144+z%);"ÿ"; 940 PRINTCHR$(144+z%);"";CHR$(144+aa%);"¢£ £ ¡£¡ ¢£¢£¢ ¢¡££¡¡¡¡¢£   ";CHR$(145);" "; 950 FORja%=1TO18 960 PRINTCHR$(144+z%);"ÿ";SPC(36);CHR$(144+z%);"ÿ"; 970 NEXT 980 PRINTCHR$(144+z%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ"; 990 VDU28,2,22,37,5 1000 ENDPROC 1010 : 1020 DEFPROCg($u%) 1030 LOCALX%,Y% 1040 X%=u%MOD256 1050 Y%=u%DIV256 1060 CALL&FFF7 1070 ENDPROC 1080 : 1090 DEFFNe 1120 PROCba 1130 PRINT'CHR$(128+ca%);"Please insert your submission disc"'CHR$(128+ca%);"(which should also contain the"'CHR$(128+ca%);"message text file) into drive 0." 1140 PRINT'CHR$(128+ca%);"Press A if this disc is in ADFS"'CHR$(128+ca%);"format, D if it is in DFS format or";CHR$(128+ca%);"SPACE to use the current format. If";CHR$(128+ca%);"in doubt, press SPACE." 1150 =FNka("AaDd ",FALSE) 1160 : 1170 DEFPROCj 1180 REPEAT 1190 PROCba 1200 PRINT'CHR$(128+da%);"Please enter the filename of the"'CHR$(128+da%);"text:";CHR$(128+ea%); 1210 IFh%THENm$=FNea(1,37)ELSEm$=FNea(1,12) 1220 IFNOTFNla(m$)THENPRINT':PROCma(m$+" does not exist.",da%):PRINT'CHR$(128+da%);"Press SPACE to continue...":PROCna 1230 UNTILFNla(m$) 1240 ENDPROC 1250 : 1260 DEFFNka(oa$,pa%) 1270 LOCALd$ 1280 REPEAT 1290 *FX21 1300 IFpa%THENd$=CHR$(GETAND&DF)ELSEd$=GET$ 1310 UNTILINSTR(oa$,d$)<>0 1320 =d$ 1330 : 1340 DEFPROCna 1350 *FX21 1360 REPEATUNTILGET=32 1370 ENDPROC 1380 : 1390 DEFPROCk 1400 LOCALqa% 1410 qa%=OPENIN(m$) 1420 ra$=FNsa(FNta(FNua(qa%))) 1430 IFLEN(ra$)<>3THENCLOSE#qa%:PROCva("Your ID is given as "+ra$+" which cannot be correct since ID's have 3 digits."):END 1440 IFEOF#qa%THENCLOSE#qa%:PROCva("This text file is far too short - it only contains your user ID."):END 1450 wa$=FNta(FNua(qa%)) 1460 IFLEN(wa$)>30THENwa$=LEFT$(wa$,30):PROCxa("Your name is too long! I have shortened it to "+wa$+".") 1470 IFEOF#qa%THENCLOSE#qa%:PROCva("This text file is far too short - it only contains your name and user ID."):END 1480 CLOSE#qa% 1490 IFFNla("!Mesg")THENPROCyaELSEPROCza 1500 ENDPROC 1510 : 1520 DEFPROCya 1530 LOCALab%,bb%,d$,cb$ 1540 PROCba 1550 ab%=OPENUP("!Mesg") 1560 bb%=BGET#ab% 1570 IFbb%>0THENCLOSE#ab%:PROCva("There is a !Mesg file on this disc with a version numbr higher than 0."):END 1580 PRINT'CHR$(128+k%);"There is already a message file on"'CHR$(128+k%);"this disc. Do you want to replace"'CHR$(128+k%);"it (R) or add the new messages to"'CHR$(128+k%);"it (A)?";CHR$(128+ea%); 1590 d$=FNka("AR",TRUE):PRINTd$ 1600 IFd$="R"THENPRINT'CHR$(128+k%);"Are you sure? (Y or N)";CHR$(128+ea%);:IFFNdbTHENCLOSE#ab%:PRINT"Yes":PROCza:ENDPROC 1610 IFd$="R"THENPRINT"No"''CHR$(128+k%);"I will add the new messages to the"'CHR$(128+k%);"old ones."''CHR$(128+k%);"Press SPACE to continue...":PROCna 1620 INPUT#ab%,cb$ 1630 IFcb$<>ra$THENCLOSE#ab%:PROCva("The existing !Mesg file has a different sender ID ("+cb$+") to the text message file ("+ra$+"). This should not occur - please correct the error."):END 1640 INPUT#ab%,wa$ 1650 wa$=FNta(wa$) 1660 eb%=PTR#ab% 1670 CLOSE#ab% 1680 ENDPROC 1690 : 1700 DEFFNta(fb$) 1710 IFLEFT$(fb$,1)=" "THENREPEAT:fb$=MID$(fb$,2):UNTILLEFT$(fb$,1)<>" "ORfb$="" 1720 IFRIGHT$(fb$,1)=" "THENREPEAT:fb$=LEFT$(fb$,LEN(fb$)-1):UNTILRIGHT$(fb$,1)<>" "ORfb$="" 1730 =fb$ 1740 : 1750 DEFPROCza 1760 LOCALab% 1770 ab%=OPENOUT("!Mesg") 1780 BPUT#ab%,0 1790 PRINT#ab%,ra$ 1800 PRINT#ab%,LEFT$(wa$+STRING$(20," "),20) 1810 eb%=PTR#ab% 1820 PRINT#ab%,0 1830 CLOSE#ab% 1840 ENDPROC 1850 : 1860 DEFFNua(ab%) 1870 LOCALfb$ 1880 REPEAT 1890 fb$=FNgb(ab%) 1900 UNTILEOF#ab%ORFNta(fb$)<>"" 1910 =fb$ 1920 : 1930 DEFFNgb(ab%) 1940 LOCALfb$,hb% 1950 fb$="" 1960 REPEAT 1970 hb%=BGET#ab% 1980 IFhb%=13ORhb%=10ANDs%=-1THENs%=hb%:t%=23-s% 1990 IFhb%<>s%ANDhb%<>t%THENfb$=fb$+CHR$(hb%) 2000 UNTILhb%=s%OREOF#ab%ORLEN(fb$)>40 2010 =fb$ 2020 : 2030 DEFPROCl(ib$,jb$) 2040 LOCALjb%,kb%,ib%,lb$,mb% 2050 jb%=OPENIN(jb$) 2060 PTR#jb%=eb% 2070 INPUT#jb%,kb% 2080 CLOSE#jb% 2090 ib%=OPENIN(ib$) 2100 lb$=FNua(ib%) 2110 lb$=FNua(ib%) 2120 mb%=1 2130 REPEAT 2140 IFkb%+mb%>r%THENCLOSE#ib%:PROCva("There is a limit of 25 messages in the !Mesg file and this has now been reached."):END 2150 PROCnb(mb%,ib$,jb$,ib%) 2160 mb%=mb%+1 2170 UNTILEOF#ib% 2180 CLOSE#ib% 2190 ENDPROC 2200 : 2210 DEFPROCnb(ob%,ib$,jb$,ib%) 2220 LOCALpb$,qb$,rb$,sb%,tb%,ub$,vb%,wb%,hb%,xb%,yb%,zb% 2230 PROCba 2240 pb$=FNta(FNua(ib%)) 2250 IFEOF#ib%THENCLOSE#ib%:PROCva("Message "+STR$(ob%)+" is too short. Please either finish or remove it."):END 2260 IFLEN(pb$)>30THENpb$=LEFT$(pb$,30):PROCxa("Message "+STR$(ob%)+" has a destination which is too long. I will shorten it to "+pb$+".") 2270 IFpb$="999"ANDLEN(pb$)=3THENpb$="999 (all members)" 2280 IFLEFT$(pb$,3)="CCC"ORINSTR(FNsa(pb$),"COMMENT")<>0THENpb$="Comment":qb$="CCC"ELSEqb$=LEFT$(pb$,3) 2290 rb$=FNta(FNua(ib%)) 2300 IFEOF#ib%THENCLOSE#ib%:PROCva("Message "+STR$(ob%)+" is not complete. Please either finish or remove it."):END 2310 IFLEN(rb$)>30THENrb$=LEFT$(rb$,30):PROCxa("Message "+STR$(ob%)+" has a subject which is too long. I will shorten it to "+rb$+".") 2320 PRINT 2330 IFqb$="CCC"THENPROCma("Converting message "+STR$(ob%)+", which is a program comment on "+rb$+".",l%)ELSEPROCma("Converting message "+STR$(ob%)+", which is a message to "+pb$+" about "+rb$+".",l%) 2340 sb%=FNac(pb$,rb$) 2350 tb%=PTR#ib% 2360 ub$=FNta(FNua(ib%)) 2370 IFINSTR(ub$,"~")<>0THENPROCbc(qb$,sb%):ENDPROC 2380 IFFNcc(ub$)THENub%=FNdc(ub$)ELSEub%=128+ha%:PTR#ib%=tb% 2390 vb%=FNec(ib%) 2400 wb%=0 2410 REPEAT 2420 hb%=v%?wb%:wb%=wb%+1 2430 UNTILhb%>32 2440 IFhb%=126THENREPEAT:hb=v%?wb%:wb%=wb%+1:UNTILhb%=s%ORwb%=vb%:PROCbc(qb$,sb%):ENDPROC 2450 wb%=wb%-1 2460 REPEAT 2470 w%?sb%=ub% 2480 FORxb%=sb%+1TOsb%+39:w%?xb%=32:NEXT 2490 sb%=sb%+1 2500 yb%=1 2510 zb%=-1 2520 REPEAT 2530 hb%=v%?wb%:wb%=wb%+1 2540 IFhb%>=32ANDhb%<>126THENw%?sb%=hb% 2550 IFhb%=32THENzb%=sb% 2560 IFhb%<>t%:sb%=sb%+1:yb%=yb%+1 2570 UNTILhb%=s%ORhb%=126ORwb%=vb%ORyb%=40 2580 IFyb%=40ANDzb%<>-1ANDhb%<>32ANDNOT(hb%=s%ORhb%=126ORwb%=vb%)THENFORxb%=zb%+1TOsb%-1:w%?xb%=32:NEXT:wb%=wb%-(sb%-zb%-1) 2590 IFhb%=s%THENsb%=sb%+(40-yb%) 2600 UNTILhb%=126ORwb%=vb%ORsb%>=(q%-80) 2610 IFsb%>=(q%-80)THENCLOSE#ib%:PROCva("Message "+STR$(ob%)+" takes more than the allowed space in teletext format. Please shorten or remove it."):END 2620 IFhb%=126THENsb%=sb%-1 2630 IFhb%=126ANDwb%<>vb%THENREPEAT:hb%=v%?wb%:wb%=wb%+1:UNTILhb%=s%ORwb%=vb% 2640 PTR#ib%=PTR#ib%-(vb%-wb%) 2650 PROCbc(qb$,sb%) 2660 ENDPROC 2670 : 2680 DEFFNec(ab%) 2690 LOCALA%,X%,Y% 2700 ?u%=ab% 2710 u%!1=v% 2720 u%!5=q% 2730 A%=4 2740 X%=u%MOD256 2750 Y%=u%DIV256 2760 CALL&FFD1 2770 =q%-u%!5 2780 : 2790 DEFFNcc(ub$) 2800 LOCALfc$,lb% 2810 ub$=FNsa(FNta(ub$)) 2820 RESTORE2970 2830 REPEAT 2840 READfc$,lb% 2850 UNTILfc$="WHITE"ORub$=fc$ 2860 =(ub$=fc$) 2870 : 2880 DEFFNdc(ub$) 2890 LOCALfc$,gc% 2900 ub$=FNsa(FNta(ub$)) 2910 RESTORE2970 2920 REPEAT 2930 READfc$,gc% 2940 UNTILfc$=ub$ 2950 =gc% 2960 : 2970 DATA RED,129,GREEN,130,YELLOW,131,BLUE,132,MAGENTA,133,PURPLE,133,PINK,133,CYAN,134,LIGHT BLUE,134,TURQUOISE,134,WHITE,135 2980 : 2990 DEFFNac(pb$,rb$) 3000 LOCALxb%,hc%,ic%,jc$ 3010 FORxb%=0TO156STEP4 3020 w%!xb%=&20202020 3030 NEXT 3040 hc%=128+fa%:ic%=128+ga% 3050 IFwa$=""THENjc$=ra$ELSEjc$=ra$+" ("+wa$+")" 3060 IFpb$<>"Comment"THENPROCkc(CHR$(hc%)+"To: "+CHR$(ic%)+pb$,w%):PROCkc(CHR$(hc%)+"From: "+CHR$(ic%)+jc$,w%+40):PROCkc(CHR$(hc%)+"Subject:"+CHR$(ic%)+rb$,w%+80):=160 3070 PROCkc(CHR$(hc%)+"From: "+CHR$(ic%)+jc$,w%) 3080 PROCkc(CHR$(hc%)+"Subject:"+CHR$(ic%)+rb$,w%+40) 3090 =120 3100 : 3110 DEFPROCba 3120 CLS 3130 PRINTTAB(2,0);CHR$(128+ba%);"Text to message converter 0.21" 3140 ENDPROC 3150 : 3160 DEFFNf 3170 LOCALA%,Y% 3180 A%=0 3190 Y%=0 3200 =(USR(&FFDA)AND&FF) 3210 : 3220 DEFFNla(lc$) 3230 LOCALab% 3240 ab%=OPENIN(lc$) 3250 IFab%=0THEN=FALSE 3260 CLOSE#ab% 3270 =TRUE 3280 : 3290 DEFFNsa(qa$) 3300 LOCALmc$,nc%,oc% 3310 mc$="" 3320 FORnc%=1TOLEN(qa$) 3330 oc%=ASC(MID$(qa$,nc%,1)) 3340 IFoc%>=ASC("a")ANDoc%<=ASC("z")THENoc%=oc%-32 3350 mc$=mc$+CHR$(oc%) 3360 NEXT 3370 =mc$ 3380 : 3390 DEFFNea(pc%,qc%) 3400 LOCALnc%,rc%,qa$,d% 3410 nc%=POS 3420 rc%=VPOS 3430 qa$="" 3440 REPEAT 3450 REPEAT 3460 *FX21 3470 d%=GET 3480 UNTILd%=13OR(d%>=32ANDd%<=127) 3490 IFd%=127ANDLEN(qa$)>0THENVDU127:qa$=LEFT$(qa$,LEN(qa$)-1) 3500 IFd%<>127ANDd%<>13ANDLEN(qa$)=pc%) 3520 =qa$ 3530 : 3540 DEFPROCkc(sc$,tc%) 3550 LOCALuc% 3560 FORuc%=tc%TOtc%+LEN(sc$)-1 3570 ?uc%=ASC(MID$(sc$,uc%-tc%+1,1)) 3580 NEXT 3590 ENDPROC 3600 : 3610 DEFPROCc 3620 SOUND1,-10,101,5 3630 ENDPROC 3640 : 3650 DEFPROCbc(vc$,sb%) 3660 LOCALab%,A%,X%,Y% 3670 w%?sb%=152 3680 ab%=OPENUP("!Mesg") 3690 PTR#ab%=eb% 3700 INPUT#ab%,wc% 3710 PTR#ab%=eb% 3720 PRINT#ab%,wc%+1 3730 PTR#ab%=EXT#ab% 3740 PRINT#ab%,vc$ 3750 BPUT#ab%,0 3760 u%?0=ab% 3770 u%!1=w% 3780 u%!5=sb%+1 3790 A%=2 3800 X%=u%MOD256 3810 Y%=u%DIV256 3820 CALL&FFD1 3830 CLOSE#ab% 3840 ENDPROC 3850 : 3860 DEFFNdb 3870 LOCALd$ 3880 REPEAT 3890 d$=CHR$(GETAND&DF) 3900 UNTILd$="Y"ORd$="N" 3910 =(d$="Y") 3920 : 3930 DEFPROCva(i$) 3940 PROCba 3950 PRINT 3960 PROCma(i$,ia%) 3970 PRINT'CHR$(128+ia%);"Press SPACE to continue..." 3980 PROCna 3990 VDU26,12 4000 PROCn 4010 END 4020 : 4030 DEFPROCxa(xa$) 4040 PROCba 4050 PRINT 4060 PROCma(xa$,ia%) 4070 PRINT'CHR$(128+ia%);"Press SPACE to continue..." 4080 PROCna 4090 ENDPROC 4100 : 4110 DEFPROCma(T$,C%) 4120 REPEAT 4130 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) 4140 UNTILT$="" 4150 ENDPROC