10 REM Mode 7 Screen Designer 20 REM written 16/9 to 14/10/97 30 REM (c) 3 Spaceman (E3Y) 40 REM (c) DataDream FreeWare 50 REM The home of happy software! 60 MODE7 70 ONERRORIFERR<>17PRINT:REPORT:PRINT" @ ";ERL:PROCquit 80 *FX229,1 90 DIMsa$(19),nm$(19) 100 FORr%=0TO19:READsa$(r%):nm$(r%)="untitled":NEXT 110 v%=24:h%=40:curr%=1:NF%=0 120 PROCcontrol 130 x1%=(40-h%)DIV2:x2%=39-(40-h%)/2 140 y1%=((25-v%)DIV2)+1:y2%=(24-(25-v%)/2)+1 150 C%=64:ch%=32:X%=0:Y%=0:A%=135 160 PROCstat 170 CLS 180 IFNF%=1PROCreveal 190 REPEAT 200 addr%=&7C00+x1%+X%+(y1%+Y%)*40 210 ch%=?addr% 220 ?addr%=C% 230 PROCstat 240 PROCkeys 250 ?addr%=ch% 260 UNTIL0 270 END 280 VDU28,x1%,y2%,x2%,y1% 290 DEFPROCstat 300 PROCcurs(0) 310 VDU26 320 PRINT"Ch:"FNFILL(C%,3);:PROCextra(C%):PRINT" On:"FNFILL(ch%,3);:PROCextra(ch%) 330 VDU28,x1%,y2%,x2%,y1% 340 VDU31,X%,Y% 350 PROCcurs(1) 360 ENDPROC 370 DEFFNFILL(N%,M%) 380 LOCALL% 390 L%=LENSTR$N% 400 PRINTSTRING$(M%-L%,"0");:=STR$N% 410 DEFPROCkeys 420 IFINKEY-113PROCflip 430 LOCALd% 440 IFINKEY-1d%=2ELSEd%=1 450 IFINKEY-26X%=X%-d% 460 IFINKEY-122X%=X%+d% 470 IFINKEY-58Y%=Y%-d% 480 IFINKEY-42Y%=Y%+d% 490 IFX%<0X%=h%-1 500 IFX%>=h%X%=0 510 IFY%<0Y%=v%-1 520 IFY%>=v%Y%=0 530 d%=0 540 IFINKEY-103d%=-1 550 IFINKEY-104d%=1 560 IFINKEY-1d%=d%*10 570 C%=C%+d% 580 IFC%>255C%=32 590 IFC%<32C%=255 600 IFINKEY-74ch%=C% 610 IFINKEY-90ch%=32 620 IFINKEY-2ANDINKEY-90FORs%=0TO960STEP4:s%!&7C28=0:NEXT:nm$(curr%-1)="untitled" 630 ENDPROC 640 DEFPROCextra(a%) 650 IFa%=127a%=255 660 IFa%<127ORa%>159PRINT"‡"CHR$a%"—"CHR$a%"‡"SPC8;:ENDPROC 670 LOCALs$,l% 680 s$=FNcheck 690 l%=ASCLEFT$(s$,1) 700 IF(l%<129ORl%>136)AND(l%<145ORl%>151)s$=" "+s$ 710 PRINTs$STRING$(13-LENs$," "); 720 ENDPROC 730 DEFFNcheck 740 IFa%>128ANDa%<136=CHR$a%+"text"+CHR$135 750 IFa%=136=CHR$a%+"flash"+CHR$137 760 IFa%=137="no flash" 770 IFa%=140="1x height" 780 IFa%=141="2x height" 790 IFa%>144ANDa%<152=CHR$(a%-16)+"grfx"+CHR$135 800 IFa%=152="hide display" 810 IFa%=153="contin. grfx" 820 IFa%=154="separ. grfx" 830 IFa%=156="blk backgrnd" 840 IFa%=157="new backgrnd" 850 IFa%=158="hold grfx" 860 IFa%=159="release grfx" 870 ="nothing" 880 DEFPROCinstr 890 CLS 900 FORn%=0TO1 910 VDU132,157,141,129+n%*4 920 PRINTSPC4"3ason's Teletext Editor"SPC8CHR$156; 930 NEXT 940 PRINTCHR$130"Currently editing page" 950 PRINT'CHR$134"CURSOR KEYS to move" 960 PRINTCHR$134"(SHIFT+direction for double speed)" 970 PRINT'CHR$131"< or > to change selected character" 980 PRINTCHR$131"(SHIFT+change character for faststep)" 990 PRINT'CHR$135"RETURN to place character" 1000 PRINTCHR$135"DELETE to remove character" 1010 PRINTCHR$135"(CTRL+DELETE to clear screen)" 1020 PRINT'CHR$132"ESCAPE toggles this page" 1030 PRINTCHR$132"(SHIFT+ESCAPE to quit)" 1040 PRINT''" CONTROLS ON THIS PAGE:" 1050 PRINT'CHR$133"< or > to change current screen" 1060 PRINT'CHR$129"S to save screen" 1070 PRINTCHR$129"L to load screen" 1080 PRINTCHR$129"(SHIFT+S or L-save/load screen block)"; 1090 ENDPROC 1100 DEFPROCcontrol 1110 PROCinstr 1120 PROCcurs(0) 1130 REPEAT 1140 IFINKEY-103curr%=curr%+19:PROCkdel 1150 IFINKEY-104curr%=curr%+1:PROCkdel 1160 curr%=(curr%-1)MOD20+1 1170 PRINTTAB(24,2)STR$curr%"/20 ("nm$(curr%-1)")"SPC8 1180 IFINKEY-82PROCinout(2) 1190 IFINKEY-87PROCinout(1) 1200 UNTILINKEY-113 1210 IFINKEY-1PROCquit 1220 CLS 1230 ENDPROC 1240 DEFPROCflip 1250 IFINKEY-1PROCquit 1260 LOCALs% 1270 ?addr%=ch% 1280 FORs%=0TO960STEP4 1290 s%!(&2C40+curr%*&3C0)=s%!&7C28 1300 NEXT:VDU26 1310 PROCcontrol 1320 PROCstat 1330 PROCreveal 1340 ch%=?(&2C40+curr%*&3C0+x1%+X%+(y1%+Y%)*40) 1350 ENDPROC 1360 DEFPROCreveal 1370 FORs%=0TO960STEP4 1380 s%!&7C28=s%!(&2C40+curr%*&3C0) 1390 NEXT 1400 ENDPROC 1410 DEFPROCquit 1420 *FX229,0 1430 *FX15 1450 PROCcurs(1) 1460 END 1470 DEFPROCcurs(onoff%) 1480 VDU23,1,onoff%;0;0;0; 1490 ENDPROC 1500 DEFPROCkdel 1510 TIME=0:REPEATUNTILTIME>15:*FX15 1520 ENDPROC 1530 DEFPROCinout(io%) 1540 LOCALshift%,X%,Y% 1550 shift%=0:dir$="S" 1560 IFINKEY-1shift%=1:dir$="B" 1570 REPEATUNTILINKEY$0="" 1580 CLS 1590 IFio%=1op$="load":NF%=1ELSEop$="save" 1600 IFshift%=1st$="block"ELSEst$="screen" 1610 PRINT''CHR$130" Enter name of "st$" file to "op$ 1620 PRINT'SPC13CHR$132CHR$157CHR$135"....... "CHR$156 1630 PRINTTAB(16,4); 1640 PROCcurs(1) 1650 PROCkdel 1660 f$="":REPEATG%=GET 1670 IFG%>32ANDG%<127ANDLENf$<7f$=f$+CHR$G%:VDUG% 1680 IFG%=127ANDLENf$>0VDU8,46,8:f$=LEFT$(f$,LENf$-1) 1690 UNTIL(LENf$>0ANDG%=13)ORG%=27 1700 PROCcurs(0) 1710 IFG%=27ENDPROC 1720 op$=op$+" "+dir$+"."+f$+" " 1730 IFshift%=1op$=op$+"3000"ELSEop$=op$+sa$(curr%-1) 1740 IFshift%=0nm$(curr%-1)=f$ 1750 IFshift%FORr%=0TO19:nm$(r%)=f$:NEXT 1760 IFio%=2ANDshift%=0op$=op$+"+3C0" 1770 IFio%=2ANDshift%=1op$=op$+"+4B00" 1780 $&900=op$:X%=0:Y%=9:CALL&FFF7 1790 PROCinstr 1800 ENDPROC 1810 DATA3000,33C0,3780,3B40 1820 DATA3F00,42C0,4680,4A40 1830 DATA4E00,51C0,5580,5940 1840 DATA5D00,60C0,6480,6840 1850 DATA6C00,6FC0,7380,7740