10 MODE3 20 VDU23;11,8;0;0;0:?&88=1:PROCmode 22 *FX12,25 30 *FX4,1 40 *FX21,0 60 ONERROR PROCerror 70 VDU3:CLS 80 IF ?!&74<>&FF THEN PROCclear 90 ?&8F=0:cls=0:PROCpscreen 100 REPEAT 110 A%=GET 120 IF A%=16 OR A%=135 OR A%>147 THEN PROCfunctions 130 IF A%=1 THEN PROCscrollup 140 IF A%=13 THEN PROCinsert 150 IF A%=26 THEN PROCscrolldown 160 IF A%>31 AND A%<127 THEN PROCinsert 170 IF A%=127 THEN PROCdelete 180 IF A%=136 THEN PROCleft 190 IF A%=137 THEN PROCright 200 IF A%=138 AND VPOS<23 THEN PROCdown 210 IF A%=139 THEN PROCup 220 IF A%=144 THEN N%=0:PROCdir 230 IF A%=145 THEN N%=1:PROCdir 240 IF A%=146 THEN N%=2:PROCdir 250 IF A%=147 THEN N%=3:PROCdir 260 PROCpscreen:?&8F=1 268 IF VPOS=24 THEN PROCleft:PROCpscreen 270 UNTIL FALSE 280 290 DEFPROCfunctions 300 VDU28,0,24,79,20,12,28,30,24,60,20 310 IF A%=16 THEN PROCprinter 320 IF A%=135 THEN PROChome 330 IF A%=148 THEN PROCload 340 IF A%=149 THEN PROCsave 350 IF A%=150 THEN PROCzap 360 IF A%=151 THEN PROCmode 370 IF A%=152 THEN PROCjump 380 IF A%=153 THEN PROCdir:S%=GET 390 CLS:ENDPROC 400 410 DEFPROCmode 420 ?&88=?&88 EOR 1 430 IF ?&88 THEN VDU23;10,&60;0;0;0 ELSE VDU23;10,&68;0;0;0 440 ?&8F=0:cls=1:ENDPROC 450 460 DEFPROCleft 470 IF !&7C<>!&70 AND !&7C<>!&78 THEN !&7C=!&7C-1 480 ENDPROC 490 500 DEFPROCright 520 IF !&7C<>!&74 THEN !&7C=!&7C+1 530 ENDPROC 540 550 DEFPROCup 560 IF !&7C=!&70 THEN ENDPROC 570 IF !&7C=!&78 AND A%=139 THEN ENDPROC 580 B%=0 590 REPEAT 600 !&7C=!&7C-1 610 IF !&7C=!&70 THEN B%=2 620 IF ?(!&7C)=13 THEN B%=B%+1 630 UNTIL B%>1 640 IF !&7C=!&70 THEN ENDPROC 650 PROCdown:ENDPROC 660 670 DEFPROCdown 690 IF !&7C=!&74 THEN ENDPROC 700 B%=0 710 REPEAT 720 IF ?(!&7C)=13 THEN B%=1 730 !&7C=!&7C+1 740 IF !&7C=!&74 THEN B%=1 750 UNTIL B%=1 760 ENDPROC 770 780 DEFPROCscrollup 790 IF !&78<>!&70 THEN !&7C=!&78:PROCup:!&78=!&7C:CLS:?&8F=0 800 ENDPROC 810 820 DEFPROCscrolldown 830 IF !&78<>(!&74-&100) THEN !&7C=!&78:PROCdown:!&78=!&7C:CLS:?&8F=0 840 ENDPROC 850 860 DEFPROCdelete 870 IF !&7C<>!&78 THEN !&80=!&7C-1:CALL Y%:!&74=!&74-1:!&7C=!&7C-1:CLS:?&8F=0 890 ENDPROC 900 910 DEFPROCinsert 920 IF ?&88=0 OR A%=13 OR ?!&7C=13 OR !&7C=!&74 THEN !&80=!&74:CALL Z%:!&74=!&74+1:?(!&7C+1)=?!&7C 940 ?!&7C=A%:!&7C=!&7C+1:CLS:?&8F=0 950 ENDPROC 960 970 DEFPROCjump 980 cls=1:?&8F=0 990 !&80=0:D%=-1:B%=0:C%=0:CALL X% 1000 PRINT'STR$(B%);" LINES SPACE LEFT=";STR$(&4000-!&74) 1010 PRINT"CURRENT LINE = ";STR$(C%) 1020 INPUT"GOTO WHICH LINE ? "'N$ 1030 IF N$="" THEN ENDPROC 1040 D%=VAL(N$) 1050 IF D%<1 THEN !&78=!&70:!&7C=!&70:ENDPROC 1060 IF D%>B% THEN D%=B% 1070 B%=0:C%=0:CALL X% 1080 !&78=!&80:!&7C=!&80 1090 ENDPROC 1100 1110 DEFPROCpscreen 1120 IF !&70=!&74 THEN ENDPROC 1130 VDU26,30 1140 IF cls THEN CLS 1150 D%=!&7C-!&78 1160 VDU23,1,0;0;0;0;0 1170 ?&40A=?&8F:CALL W% 1180 VDU23,1,1;0;0;0;0 1190 cls=0:?&8F=1 1200 ENDPROC 1210 1220 DEFPROCload 1230 ?&8F=0:PROCcheck("LOAD FILE") 1240 IF Q% THEN CLS ELSE ENDPROC 1250 REPEAT 1260 INPUT'"ENTER FILE NAME OR ? "''$&900 1270 IF $&900="?" THEN PROCdir 1280 UNTIL $&900<>"?" 1290 F%=OPENIN(":"+STR$(N%)+"."+$&900) 1300 IF F% THEN PROCclear:!&74=!&70 ELSE ENDPROC 1310 REPEAT 1320 B%=BGET#F% AND &7F 1330 IF B%=13 OR B%>31 THEN ?!&74=B%:!&74=!&74+1 1340 UNTIL EOF#F% OR B%=0 1350 CLOSE#F%:?!&74=&FF:!&78=!&70:!&7C=!&70 1360 ENDPROC 1370 1380 DEFPROCdir 1400 VDU26:CLS:OSCLI".:"+STR$(N%) 1410 VDU28,30,24,60,20:cls=1 1420 ?&8F=0:ENDPROC 1430 1440 DEFPROCsave 1450 ?&8F=0:PROCcheck("SAVE FILE") 1460 IF Q% THEN CLS ELSE ENDPROC 1470 REPEAT 1480 PRINT'"Current name is ";$&900 1490 INPUT'" or newname or ? "''N$ 1500 IF N$="?" THEN PROCdir 1510 IF N$<>"" THEN $&900=N$ 1520 UNTIL $&900<>"?" 1530 F%=OPENOUT(":"+STR$(N%)+"."+$&900) 1540 I%=!&70 1550 REPEAT 1560 BPUT#F%,?I%:I%=I%+1 1570 UNTIL ?I%=&FF OR ?I%=0 1580 CLOSE#F% 1590 ENDPROC 1600 1610 DEFPROCclear 1620 !&70=TOP+&100:!&78=!&70:!&7C=!&70:?!&70=&20:!&74=!&70+1:?!&74=&FF:VDU26:CLS 1630 ENDPROC 1640 1650 DEFPROCzap 1660 ?&8F=0:PROCcheck("ZAP THIS FILE") 1670 IF Q% THEN PROCclear 1680 ENDPROC 1690 1700 DEFPROCprinter 1710 ?&8F=0:PROCcheck("PRINT FILE") 1720 IF Q% THEN CLS ELSE ENDPROC 1730 REPEAT 1740 PRINT'"Current name is ";$&900 1750 INPUT'" or newname or ? "''N$ 1760 IF N$="?" THEN PROCdir 1770 IF N$<>"" THEN P$=N$ ELSE P$=$&900 1780 UNTIL $&900<>"?" 1782 *FX6,13 1790 VDU2 1800 OSCLI("TYPE :"+STR$(N%)+"."+P$) 1810 VDU3 1820 ENDPROC 1830 1840 DEFPROChome 1850 ?&8F=0:PROCcheck("HOME CURSOR") 1860 IF Q% THEN !&7C=!&78:cls=1 1870 ENDPROC 1880 1890 DEFPROCcheck(T$) 1900 PRINT'T$;" Y/N ? " 1910 Q%=0:A$=GET$ 1920 IF INSTR("Yy",A$) THEN Q%=1 1930 ENDPROC 1940 1950 DEFPROCerror 1960 cls=1:PROCpscreen 1970 ENDPROC