10 REM ***************************** 20 REM Moving Message Display System 30 REM Message Editing Software 40 REM By Tim Surtell 50 REM ***************************** 60 REM NC200 Version 2.1 : 2/97 70 REM Downloads to MMDS Version 6 80 REM Downloaded from Tim's NC Users' Site 90 REM http://www.ncus.org.uk 100 DIM byte 4096,cset 600 110 f$="":edited=FALSE:st=TRUE:clip=0:cls=0:cle=0:txt$="NORMAL.SET":modnum=4:tot=0:cflag=175:invbk=32:invcl=32:invch=175:txtn=175:txtb=32:txti=32:txts=32:txtm=32:autr=175 120 CLS:PROCloadset 130 SX=1:X=1:Y=1:YY=1:GX=33:GY=33:MX=1:MY=1:MGX=12:MGY=96:opt=0 140 PROCscreen 150 PROCmenu(1):MOVEMGX,MGY:PLOT102,MGX+60,MGY+7 160 IF st=FALSE AND MY=0 MOVEGX,23:PLOT101,GX+1,27:MOVEGX,82:PLOT101,GX+1,86 170 IF st=FALSE AND MY=0 MOVEGX-2,GY-2:PLOT6,GX+3,GY+3:MOVEGX+3,GY-2:PLOT6,GX-2,GY+3 180 G=GET 190 IF st=FALSE AND MY=0 MOVEGX,23:PLOT103,GX+1,27:MOVEGX,82:PLOT103,GX+1,86 200 IF st=FALSE AND MY=0 MOVEGX-2,GY-2:PLOT6,GX+3,GY+3:MOVEGX+3,GY-2:PLOT6,GX-2,GY+3 210 IF G=19 PRINTTAB(0,0);:FORI=97 TO 123:VDU27,I:NEXT 220 IF G=13 AND st=FALSE AND MY=0 PROCdot:st=FALSE 230 IF G=242 AND X>SX X=X-1:GX=GX-7:PROCupdate:GOTO160 240 IF G=243 AND X1 Y=Y/2:GY=GY-7:YY=YY-1:PROCupdate 270 IF G=127 AND X-SX>5 X=X-6:GX=GX-42:PROCupdate 280 IF G=127 AND X-SX<6 X=SX:GX=33:PROCupdate 290 IF G=246 AND MX>1 AND MY=0 MOVEMGX,MGY:PLOT102,MGX+53,MGY+7:MX=MX-1:MGX=MGX-60:MOVEMGX,MGY:PLOT102,MGX+53,MGY+7 300 IF G=247 AND MX<6 AND MY=0 MOVEMGX,MGY:PLOT102,MGX+53,MGY+7:MX=MX+1:MGX=MGX+60:MOVEMGX,MGY:PLOT102,MGX+53,MGY+7 310 IF G=246 AND MX>1 AND MY>0 MOVEMGX,104:PLOT102,MGX+53,111:FORI=3 TO 3+opt:PRINTTAB(MX*10-9,I)SPC12:NEXT:PROCredraw:MX=MX-1:MGX=MGX-60:MY=1:MGY=96:MOVEMGX,104:PLOT102,MGX+53,111:PROCmenu(MX):MOVEMGX,96:PLOT102,MGX+60,103 320 IF G=247 AND MX<6 AND MY>0 MOVEMGX,104:PLOT102,MGX+53,111:FORI=3 TO 3+opt:PRINTTAB(MX*10-9,I)SPC12:NEXT:PROCredraw:MX=MX+1:MGX=MGX+60:MY=1:MGY=96:MOVEMGX,104:PLOT102,MGX+53,111:PROCmenu(MX):MOVEMGX,96:PLOT102,MGX+60,103 330 IF G=245 AND MY=0 PROCmenu(MX):MY=1:MGY=96:MOVEMGX,MGY:PLOT102,MGX+60,MGY+7:GOTO160 340 IF G=244 AND MY=1 FORI=3 TO 3+opt:PRINTTAB(MX*10-9,I)SPC12:NEXT:MY=0:MGY=104:PROCredraw:GOTO160 350 IF G=245 AND MY1 MOVEMGX,MGY:PLOT102,MGX+60,MGY+7:MY=MY-1:MGY=MGY+8:MOVEMGX,MGY:PLOT102,MGX+60,MGY+7:GOTO160 370 IF (G=13 OR G=236) AND MY>0 FORI=3 TO 3+opt:PRINTTAB(MX*10-9,I)SPC12:NEXT:PROCoptions:MY=0:MGY=104:PROCredraw:GOTO160 380 IF G=2 PROCmark:rs=X-SX+1:re=X-SX+1:PROCredraw 390 IF G=9 AND st=FALSE AND MY=0 PROCinvert 400 IF G=7 AND st=FALSE AND MY=0 PROCgoto:PROCredraw 410 IF G=18 rs=1:re=60:YY=autr:autr=175:PROCredraw:autr=YY 420 IF G=222 AND st=FALSE AND MY=0 PROCmove(-1):PROCredraw 430 IF G=14 AND st=FALSE AND MY=0 PROCmove(+1):PROCredraw 440 IF G>31 AND G<123 AND st=FALSE AND MY=0 PROCtext:edited=TRUE 450 GOTO160 460 DEF PROCdot 470 IF ?(byte+X) AND Y ?(byte+X)=?(byte+X)-Y ELSE ?(byte+X)=?(byte+X)+Y 480 MOVEGX-2,GY-2:PLOT102,GX+3,GY+3:edited=TRUE 490 IF X>tot tot=X 500 ENDPROC 510 DEF PROCscreen 520 MOVE0,0:PLOT101,479,127:MOVE1,9:PLOT103,478,103:MOVE1,112:PLOT103,478,120 530 tit$="Moving Message Display Editing System -- '"+f$+"'" 540 PRINTTAB(40-(LENtit$/2),1)tit$ 550 PRINTTAB(3,2)CHR$14"File Edit View Invert Text Options"CHR$15 560 MOVEMGX,104:PLOT102,MGX+53,111 570 PRINTTAB(3,15)CHR$14"Col ";X;" "; TAB(13,15)"Row ";Y;" "; TAB(23,15)"Char ";((X-1)DIV6)+1;" "; TAB(33,15)"Clipboard : ";clip;" ";CHR$15; 580 ENDPROC 590 DEF PROCupdate 600 PRINTTAB(3,15)CHR$14"Col ";X;" "; TAB(13,15)"Row ";YY;" "; TAB(23,15)"Char ";((X-1)DIV6)+1;" "; TAB(33,15)"Clipboard : ";clip;" ";CHR$15; 610 ENDPROC 620 DEF PROCmenu(M) 630 IF M=1 PRINTTAB(1,3)CHR$14CHR$179" New "CHR$179TAB(1,4)CHR$179" Save "CHR$179TAB(1,5)CHR$179" Load "CHR$179TAB(1,6)CHR$179" Print "CHR$179TAB(1,7)CHR$179" Download "CHR$179 640 IF M=1 PRINTTAB(1,8)CHR$179" Exit "CHR$179TAB(1,9)CHR$192STRING$(10,CHR$196)CHR$217CHR$15:opt=6:rs=1:re=7 650 IF M=2 PRINTTAB(11,3)CHR$14CHR$179" Cut "CHR$179TAB(11,4)CHR$179" Paste "CHR$179TAB(11,5)CHR$179" "CHR$19"B"CHR$20"lock "CHR$179TAB(11,6)CHR$179CHR$cflag"Clear "CHR$179 660 IF M=2 PRINTTAB(11,7)CHR$192STRING$(10,CHR$196)CHR$217CHR$15:opt=4:rs=6:re=16 670 IF M=3 PRINTTAB(21,3)CHR$14CHR$179" "CHR$19"N"CHR$20"ext "CHR$179TAB(21,4)CHR$179" "CHR$19"P"CHR$20"revious "CHR$179TAB(21,5)CHR$179" "CHR$19"G"CHR$20"oto "CHR$179TAB(21,6)CHR$179" Select "CHR$179 680 IF M=3 PRINTTAB(21,7)CHR$192STRING$(10,CHR$196)CHR$217CHR$15:opt=4:rs=14:re=24 690 IF M=4 PRINTTAB(31,3)CHR$14CHR$179" "CHR$19"I"CHR$20"nvert "CHR$179TAB(31,4)CHR$179CHR$invcl"Inv. col "CHR$179TAB(31,5)CHR$179CHR$invch"Inv. txt "CHR$179TAB(31,6)CHR$179CHR$invbk"Inv. blk "CHR$179 700 IF M=4 PRINTTAB(31,7)CHR$192STRING$(10,CHR$196)CHR$217CHR$15:opt=4:rs=23:re=33 710 IF M=5 PRINTTAB(41,3)CHR$14CHR$179CHR$txtn"Normal "CHR$179TAB(41,4)CHR$179CHR$txtb"Bold "CHR$179TAB(41,5)CHR$179CHR$txti"Italic "CHR$179TAB(41,6)CHR$179CHR$txts"Symbols "CHR$179 720 IF M=5 PRINTTAB(41,7)CHR$179CHR$txtm"Small "CHR$179TAB(41,8)CHR$192STRING$(10,CHR$196)CHR$217CHR$15:opt=5:rs=31:re=42 730 IF M=6PRINTTAB(51,3)CHR$14CHR$179SPC10CHR$179 TAB(53,3)"tot=";tot TAB(51,4)CHR$179" modnum=";modnum;" "CHR$179TAB(51,5)CHR$179CHR$autr"Autodraw "CHR$179 TAB(51,6)CHR$179" "CHR$19"R"CHR$20"edraw "CHR$179 740 IF M=6PRINTTAB(51,7)CHR$192STRING$(10,CHR$196)CHR$217CHR$15:opt=4:rs=40:re=50 750 ENDPROC 760 DEF PROCoptions 770 IF MX=1 AND MY=1 PROCnew 780 IF MX=1 AND MY=2 PROCsave 790 IF MX=1 AND MY=3 PROCload 800 IF MX=1 AND MY=4 PROCprint 810 IF MX=1 AND MY=5 PROCdownload 820 IF MX=1 AND MY=6 PROCexit 830 IF MX=2 AND MY=1 PROCcut 840 IF MX=2 AND MY=2 PROCpaste 850 IF MX=2 AND MY=3 PROCmark:PROCredraw:rs=X-SX+1:re=X-SX+1 860 IF MX=2 AND MY=4 PROCclear 870 IF MX=3 AND MY=1 PROCmove(+1) 880 IF MX=3 AND MY=2 PROCmove(-1) 890 IF MX=3 AND MY=3 PROCgoto 900 IF MX=3 AND MY=4 PROCselect 910 IF MX=4 AND MY=1 PROCinvert 920 IF MX=4 AND MY=2 invcl=175:invch=32:invbk=32 930 IF MX=4 AND MY=3 invcl=32:invch=175:invbk=32 940 IF MX=4 AND MY=4 invcl=32:invch=32:invbk=175 950 IF MX=5 AND MY=1 txtn=175:txtb=32:txti=32:txts=32:txtm=32:txt$="NORMAL.SET":PROCloadset 960 IF MX=5 AND MY=2 txtn=32:txtb=175:txti=32:txts=32:txtm=32:txt$="BOLD.SET":PROCloadset 970 IF MX=5 AND MY=3 txtn=32:txtb=32:txti=175:txts=32:txtm=32:txt$="ITALIC.SET":PROCloadset 980 IF MX=5 AND MY=4 txtn=32:txtb=32:txti=32:txts=175:txtm=32:txt$="SYMBOLS.SET":PROCloadset 990 IF MX=5 AND MY=5 txtn=32:txtb=32:txti=32:txts=32:txtm=175:txt$="SMALL.SET":PROCloadset 1000 IF MX=6 AND MY=1 PROCnewtot 1010 IF MX=6 AND MY=2 PROCnewmodnum 1020 IF MX=6 AND MY=3 PROCautor 1030 IF MX=6 AND MY=4 YY=autr:autr=175:rs=1:re=60:PROCredraw:autr=YY:rs=1:re=1 1040 ENDPROC 1050 DEF PROCborder 1060 FORI=5 TO 13:PRINTTAB(15,I)CHR$14SPC50CHR$15:NEXT 1070 ENDPROC 1080 DEF PROCdelborder 1090 FORI=5 TO 13:PRINTTAB(15,I)SPC50:NEXT 1100 ENDPROC 1110 DEF PROCnew 1120 PROCborder:PRINTTAB(17,5)CHR$14CHR$17"New"CHR$18 1130 IF edited=FALSE GOTO1160 1140 PRINTTAB(17,7)"* '";f$;"' has not been saved."TAB(17,9)"Save before continuing? (Y/N)":REPEAT:G$=GET$:UNTILG$="Y" OR G$="N" 1150 IF G$="Y" PROCsave:PROCborder:GOTO1120 1160 PRINTTAB(17,7)CHR$19"S"CHR$20"tandard ----- allows complete text and"TAB(32,8)"graphics editing."TAB(17,9)CHR$19"Q"CHR$20"uick-route -- use to create a simple"TAB(32,10)"text-only display, fast!"TAB(17,12)"Press S or Q..."CHR$15 1170 REPEAT:G$=GET$:UNTILG$="S" OR G$="Q" 1180 IF st=FALSE PRINTTAB(17,12)CHR$14"Please wait... "CHR$15:FORI=1 TO 4096:?(byte+I)=0:NEXT:SX=1:X=1:Y=1:YY=1:GX=33:GY=33:edited=FALSE 1190 IF G$="Q" PROCquickroute:edited=TRUE 1200 f$="Untitled":PROCscreen:st=FALSE 1210 ENDPROC 1220 DEF PROCquickroute 1230 PROCborder:PRINTTAB(17,5)CHR$14CHR$17"Quick-route..."CHR$18 TAB(17,7)"Type in"TAB(17,8)"your message here : ":VDU28,37,12,63,6 1240 PRINTTAB(0,2);:INPUTLINEmess$ 1250 VDU26:PROCborder:PRINTTAB(17,5)CHR$14CHR$17"Quick-route..."CHR$18TAB(17,7)"Please wait..."CHR$15 1260 X=1 1270 FORI=1 TO LEN(mess$) 1280 apos=(ASC(MID$(mess$,I,1))-31)*6-5 1290 FORA=0 TO 5 1300 ?(byte+X)=?(cset+(apos+A)) 1310 X=X+1 1320 NEXT 1330 NEXT 1340 tot=X 1350 edited=TRUE:X=1:Y=1:YY=1:SX=1:GX=33:GY=33:rs=1:re=60 1360 ENDPROC 1370 DEF PROCredraw 1380 IF st=TRUE OR autr=32 ENDPROC 1390 XX=SX-1:MOVE30,80:PLOT103,450,81 1400 FORI=30 TO 450 STEP 7:MOVEI,30:DRAWI,79 1410 IF XX MOD 6=0 MOVEI,80:DRAWI,81 1420 XX=XX+1 1430 NEXT 1440 FORI=30 TO 79 STEP 7:MOVE30,I:DRAW450,I:NEXT 1450 gse=(rs*7)+26:MOVE(rs*7)+26,20:PLOT103,(re*7)+26,21 1460 FORI=rs TO re 1470 PROCcol(SX+I-1,gse) 1480 IF SX+I-1=cls OR SX+I-1=cle MOVEgse,20:PLOT101,gse+1,21 1490 gse=gse+7 1500 NEXT 1510 ENDPROC 1520 DEF PROCloadset 1530 PROCborder:PRINTTAB(17,7)CHR$14"Loading '";txt$;"'."TAB(17,9)"Please wait..."CHR$15 1540 K=OPENIN(txt$) 1550 I=1 1560 INPUT#K,dummy 1570 REPEAT 1580 ?(cset+I)=BGET#K 1590 I=I+1 1600 UNTILEOF#K 1610 CLOSE#0 1620 PROCdelborder:rs=1:re=60 1630 ENDPROC 1640 DEF PROCtext 1650 apos=(G-31)*6-5 1660 FORI=X TO X+5 1670 ?(byte+I)=?(cset+apos) 1680 IF I-SX<60 PROCcol(I,GX) 1690 apos=apos+1:X=X+1:GX=GX+7 1700 NEXT 1710 IF X-SX>59 GX=33:SX=X:rs=1:re=60:PROCredraw 1720 IF X>tot tot=X 1730 PROCupdate 1740 ENDPROC 1750 DEF PROCcol(col,gcol) 1760 GY=33:b=1 1770 FORA=1 TO 7 1780 IF ?(byte+col) AND b MOVEgcol-2,GY-2:PLOT101,gcol+3,GY+3 ELSE MOVEgcol-2,GY-2:PLOT103,gcol+3,GY+3 1790 b=b*2:GY=GY+7 1800 NEXT 1810 GY=33:Y=1 1820 ENDPROC 1830 DEF PROCinvert 1840 IF edited=FALSE ENDPROC 1850 IF invbk=175 AND cflag=32 is=cls:ie=cle 1860 IF invbk=175 AND cflag=175 ENDPROC 1870 IF invcl=175 is=X:ie=X 1880 IF invch=175 is=X:ie=X+5 1890 FORI=is TO ie 1900 ?(byte+I)=127-?(byte+I) 1910 IF I>SX-1 AND I59 GX=33:SX=X:rs=1:re=60:PROCredraw 1970 IF X>tot tot=X 1980 PROCupdate:edited=TRUE 1990 ENDPROC 2000 DEF PROCgoto 2010 PRINTTAB(7,15)CHR$14;"****"TAB(7,15);:X$="" 2020 FORI=1 TO 4 2030 REPEAT 2040 G=GET 2050 UNTIL(G>47 AND G<58) OR G=13 2060 IF G=13 I=4 ELSE X$=X$+CHR$G:PRINT;CHR$G; 2070 NEXT 2080 PRINTTAB(7,15);" ";CHR$15; 2090 X=VALX$ 2100 SX=X:GX=33:GY=33:rs=1:re=60:G=0:PROCupdate 2110 ENDPROC 2120 DEF PROCnewtot 2130 PROCmenu(6):PRINTTAB(57,3)CHR$14;"****"TAB(57,3);:X$="" 2140 FORI=1 TO 4 2150 REPEAT 2160 G=GET 2170 UNTIL(G>47 AND G<58)ORG=13 2180 IF G=13 I=4 ELSE X$=X$+CHR$G:PRINT;CHR$G; 2190 NEXT 2200 PRINTCHR$15:tot=VALX$:G=0:FORI=3 TO 3+opt:PRINTTAB(MX*10-9,I)SPC12:NEXT 2210 ENDPROC 2220 DEF PROCnewmodnum 2230 PROCmenu(6):PRINTTAB(60,4)CHR$14;"*"TAB(60,4); 2240 REPEAT:G=GET:UNTILG>48 AND G<57:PRINTCHR$G CHR$15:modnum=VAL(CHR$G) 2250 G=0:FORI=3 TO 3+opt:PRINTTAB(MX*10-9,I)SPC12:NEXT 2260 ENDPROC 2270 DEF PROCmove(D) 2280 IF st=TRUE ENDPROC 2290 IF D=-1 AND X<61 X=1:SX=1:GX=33:rs=1:re=60:PROCupdate:ENDPROC 2300 SX=SX+(60*D):X=SX:GX=33:rs=1:re=60:PROCupdate:ENDPROC 2310 ENDPROC 2320 DEF PROCsave 2330 IF f$="" ENDPROC 2340 PROCborder:PRINTTAB(17,5)CHR$14CHR$17"Save message"CHR$18 2350 IF f$="Untitled" GOTO 2380 2360 PRINTTAB(17,7)"Save as '";f$;"' ? (Y/N)":REPEAT:G$=GET$:UNTILG$="Y" OR G$="N" 2370 IF G$="Y" GOTO2400 2380 PRINTTAB(17,9)"Save as : ":INPUTTAB(27,9)f$ 2390 IF RIGHT$(f$,4)<>".SET" f$=LEFT$(f$,8)+".MES" 2400 PRINTTAB(17,11)"Please wait..."CHR$15 2410 K=OPENOUT(f$) 2420 PRINT#K,tot 2430 FORI=1 TO tot 2440 BPUT#K,?(byte+I) 2450 NEXT 2460 CLOSE#0 2470 rs=1:re=60:PROCscreen:edited=FALSE 2480 ENDPROC 2490 DEF PROCload 2500 PROCborder:PRINTTAB(17,5)CHR$14CHR$17"Load message"CHR$18 2510 IF edited=FALSE GOTO2540 2520 PRINTTAB(17,7)"* '";f$;"' has not been saved."TAB(17,9)"Save before continuing? (Y/N)":REPEAT:G$=GET$:UNTILG$="Y" OR G$="N" 2530 IF G$="Y" PROCsave:GOTO2500 2540 PRINTTAB(17,11)"Load in : ":INPUTTAB(27,11)f$ 2550 IF RIGHT$(f$,4)<>".SET" f$=LEFT$(f$,8)+".MES" ELSE FORI=1 TO 400:?(cset+I)=0:NEXT 2560 PRINTTAB(17,13)"Please wait..."CHR$15 2570 K=OPENIN(f$) 2580 INPUT#K,tot 2590 col=1 2600 REPEAT 2610 ?(byte+col)=BGET#K 2620 col=col+1 2630 UNTILEOF#K 2640 CLOSE#0 2650 IF st=FALSE FORI=col TO 4096:?(byte+I)=0:NEXT 2660 st=FALSE:editing=TRUE:X=1:SX=1:GX=33:rs=1:re=60:clip=0:cflag=175:cls=0:cle=0:PROCscreen:PROCupdate 2670 ENDPROC 2680 DEF PROCselect 2690 IF f$="" ENDPROC 2700 PROCscreen:MOVE1,10:PLOT103,478,111:edited=TRUE 2710 FORY=11 TO 101 STEP 11:MOVE12,Y:DRAW467,Y:MOVE12,Y+8:DRAW467,Y+8:NEXT:MOVE11,10:DRAW11,108:MOVE468,10:DRAW468,108 2720 X=1 2730 FORBY=100 TO 10 STEP -11 2740 FORGX=12 TO 467 2750 Y=1 2760 IF X=cls OR X=cle PLOT71,GX,BY-1:PLOT71,GX,BY+7 2770 FORGY=BY TO BY+6 2780 IF ?(byte+X) AND Y PLOT69,GX,GY 2790 Y=Y+Y 2800 NEXT 2810 X=X+1:IF X>tot GX=468:BY=10 2820 NEXT 2830 NEXT 2840 X=1:GX=12:GY=97:Y=1 2850 MOVEGX,GY:DRAWGX,GY+1:MOVEGX,GY+11:DRAWGX,GY+12 2860 G=GET 2870 MOVEGX,GY:PLOT7,GX,GY+1:MOVEGX,GY+11:PLOT7,GX,GY+12 2880 IF G=242 AND GX>12 X=X-1:GX=GX-1:PROCupdate 2890 IF G=243 AND GX<467 X=X+1:GX=GX+1:PROCupdate 2900 IF G=250 AND GX>18 X=X-6:GX=GX-6:PROCupdate 2910 IF G=251 AND GX<462 X=X+6:GX=GX+6:PROCupdate 2920 IF G=240 AND GY<97 X=X-456:GY=GY+11:PROCupdate 2930 IF G=241 AND GY>9 X=X+456:GY=GY-11:PROCupdate 2940 IF G=13 SX=X:Y=1:YY=1:GX=33:GY=33:rs=1:re=60:PROCscreen:PROCupdate:ENDPROC 2950 IF G=2 PROCmark:IFX=cls OR X=cle PLOT71,GX,GY+2:PLOT71,GX,GY+10 2960 GOTO2850 2970 DEF PROCprint 2980 IF f$="" ENDPROC 2990 PROCborder:PRINTTAB(17,5)CHR$14CHR$17"Print message"CHR$18TAB(17,7)"(G)raphics only"TAB(17,8)"(C)odes only"TAB(17,9)"(B)oth":REPEAT:G$=GET$:UNTILG$="G" OR G$="C" OR G$="B":PRINTTAB(17,11)"Please wait..."CHR$15 3000 IF G$="C" GOTO3130 3010 div=tot DIV 450:IF tot MOD 450>0 div=div+1 3020 XX=1 3030 VDU2 3040 FORI=1 TO div 3050 VDU1,27,1,76,1,132,1,3 3060 FORA=1 TO 450 3070 VDU1,?(byte+XX),1,?(byte+XX):XX=XX+1 3080 NEXT 3090 VDU1,10 3100 NEXT 3110 VDU1,10,1,10 3120 VDU3 3130 VDU2,21 3140 FORI=1 TO tot:PRINT?(byte+I);",";:NEXT 3150 VDU3,6 3160 IF G$="G" GOTO3170 3170 rs=1:re=60:PROCdelborder 3180 ENDPROC 3190 DEF PROCmark 3200 IF edited=FALSE OR clip>0 OR X=cls ENDPROC 3210 IF clip=0 AND cls=0 cls=X:GOTO3240 3220 IF X>cls cle=X:GOTO3240 3230 IF X0 AND cle>0 clip=cle-cls+1:cflag=32 3250 PROCupdate 3260 ENDPROC 3270 DEF PROCclear 3280 IF cls>SX-1 AND clsSX-1 AND cle4:NEXT 3700 FORI=1 TO tot:VDU1,?(byte+I):TIME=0:REPEAT UNTIL TIME>4:NEXT 3710 FORI=1 TO modnum*16-3:VDU1,0:TIME=0:REPEAT:UNTIL TIME>4:NEXT 3720 VDU1,128,1,128,1,128,3 3730 rs=1:re=60:PROCdelborder 3740 ENDPROC