1 ' Text editor
2 ' by Mark Bonshor 3 ' Amstrad Action September 87 30 MODE 2: WINDOW 1,80,2,25: WINDOW #1,1,80,1,1 40 PAPER #1,1: PEN #1,0:PAPER 0:PEN 1:CLS: CLS#1: mapa=1 50 CLS: CLS#1: mapa=1: EVERY 100 GOSUB 580 60 DIM tex$(200): FOR f=1 TO 200: tex$(f)=SPACE$(80): NEXT 70 FOR f=1 TO 24: PRINT tex$(f);: NEXT: a=1: s=1: tex=1 80 PAPER 1: PEN 0: LOCATE a,s: PRINT MID$(tex$(tex),a,1); 90 a$=INKEY$: IF a$="" THEN 90 100 PAPER 0: PEN 1: LOCATE a,s: PRINT MID$(tex$(tex),a,1); 110 zx$=CHR$(241)+CHR$(240)+CHR$(127)+CHR$(13)+CHR$(16)+CHR$(27) 120 ON INSTR(zx$,a$) GOSUB 250,280,310,340,350,370 130 IF INKEY(1)=0 THEN a=a+1: IF a=81 THEN a=1: GOSUB 250 140 IF INKEY(8)=0 THEN a=a-1: IF a=0 THEN a=80: GOSUB 280 150 IF INKEY(27)=128 THEN GOTO 400 160 IF INKEY(60)=128 THEN GOTO 450 170 IF INKEY(36)=128 THEN GOTO 530 180 IF INKEY(68)=32 THEN GOSUB 590 190 IF INKEY(79)=32 THEN GOSUB 630: GOTO 80 200 IF INKEY(68)=0 THEN a=a+5: IF a>80 THEN a=80 210 IF INKEY(24)=32 THEN MID$(tex$),a,1)="#": LOCATE a,s: PRINT "#";: a=a+1: IF a=81 THEN a=1:GOSUB 250 220 IF tex>mapa THEN mapa=tex 230 IF ASC(a$)>31 AND ASC(a$)<126 THEN MID$(tex$(tex),a,1)=a$: LOCATE a,s: PRINT a$;: a=a+1: IF a=81 THEN a=1: GOSUB 250 240 GOTO 80 250 IF s<24 THEN s=s+1: text=tex+1: GOTO 270 260 IF s=24 AND tex<200 THEN tex=tex+1: LOCATE 1,24: prin CHR$(10): LOCATE 1,24: PRINT tex$(tex); 270 RETURN 280 IF s>1 THEN s=s-1: tex=tex-1: GOTO 300 290 IF s=1 AND tex>1 THEN tex=tex-1: LOCATE 1,1: PRINT CHR$(11): LOCATE 1,1: PRINT tex$(tex); 300 RETURN 310 a=a-1: IF a>0 THEN MID$(tex$(tex),a,1)=" " 320 IF a=0 THEN a=80: GOSUB 280: MID$(tex$(tex),a,1)=" " 330 RETURN 340 a=1: GOSUB 250: RETURN 350 c$=tex$(tex): z$=LEFT$(c$,a-1): x$=RIGHT$(c$,80-(a)) 360 tex$(tex)=z$+x$+" ":LOCATE 1,s:PRINT tex$(tex));:RETURN 370 c$=tex$(tex): z$=LEFT$(c$,a-1): x$=RIGHT$(c$,81-a) 380 tex$(tex)=z$+" "+LEFT$(x$,LEN(x$)-1): LOCATE 1,s 390 PRINT tex$(tex);: RETURN 400 CLS: PRINT "NLQ ? Y/N" 410 v$=INKEY$: IF v$="" THEN GOTO 410 420 IF UPPER$(v$)="Y" THEN PRINT #8,CHR$(27)+"x"+CHR$(1);:PRINT #8,CHR$(27)+"R"+CHR$(3); 430 PRINT "OK": PRINT "Printing!": PRINT: FOR f=1 TO mapa 440 PRINT #8,tex$(f): PRINT tex$(f);: NEXT: CLS: GOTO 70 450 PRINT CHR$(13);"Preparing To Save" 460 FOR f=1 TO mapa: FOR g=1 TO 80 470 IF MID$(tex$(f),g,1)=" " THEN MID$(tex$(f),g,1)=CHR$(255) 480 NEXT: NEXT: PRINT"Saving..." 490 OPENOUT "text": PRINT #9,mapa: FOR f=1 TO mapa 500 PRINT #9,tex$(f): NEXT: CLOSEOUT: FOR f=1 TO mapa 510 FOR g=1 TO 80: IF MID$(tex$(f),g,1)=CHR$(255) THEN MID$(tex$(f),g,1)=" " 520 NEXT: NEXT: CLS: GOTO 70 530 PRINT CHR$(13);"Loading...":OPENIN"text":INPUT #9,mapa 540 FOR f=1 TO mapa: INPUT #9,tex$(f): NEXT: CLOSEIN 550 FOR f=1 TO mapal FOR g=1 TO 80 560 IF MID$(tex$(f),g,1)=CHR$(255) THEN MID$(tex$(f),g,1)=" " 570 NEXT: NEXT: CLS: GOTO 70 580 PRINT#1,"TEXT EDITOR: Column: ";a;" Line: ";tex:RETURN 590 c$=MID$(tex$(tex),a,1) 600 IF ASC(c$)>64 AND ASC(c$)<91 THEN MID$(tex$(tex),a,1)=LOWER$(MID$(tex$(tex),a,1)): GOTO 620 610 IF ASC(c$)>96 AND ASC(c$)<123 THEN MID$(tex$(tex),a,1)=UPPER$(MID$(tex$(tex),a,1)) 620 RETURN 630 a$=tex$(tex): oa$=a$: FOR f=1 TO LEN(a$) 640 IF MID$(a$,f,1)="." THEN GOTO 800 650 NEXT 660 z=1: IF a$=SPACE$(80) THEN GOTO 800 670 IF MID$(a$,z,1)<>" " THEN GOTO 690 680 z=z+1: GOTO 670 690 z=z-1: a$=a$+SPACE$(z): a$=RIGHT$(a$,80): z=80: x=1 700 IF MID$(a$,z,1)<>" " THEN GOTO 720 710 z=z-1: x=x+1: GOTO 700 720 x=x-1: need=x: a$=LEFT$(a$,80-need): p=0: p=p+1 730 IF p=LEN(a$) THEN p=1 740 IF LEN(a$)=80 THEN GOTO 800 750 IF MID$(a$,p,1)=" " THEN GOSUB 780: p=p+1: IF p=LEN(a$) THEN p=1 760 IF INKEY(18)=0 THEN a$=oa$: got 800 770 GOTO 730 780 c$=LEFT$(a$,p): v$=RIGHT$(a$,LEN(a$)-p) 790 a$=c$+" "+v$: RETURN 800 tex$(tex)=a$: LOCATE 1,s: PRINT LEFT$(tex$(tex),80);: RETURN |