.J NEW 10 REM Text File Viewer 20 REM by Garry Lancaster, August 1995 30 *NAME VIEWER 40 ON ERROR K$=INKEY$(100):GOTO 100 100 CLS 110 VDU 1,ASC("R") 120 PRINT " File Viewer - by Garry Lancaster " 130 VDU 1,ASC("R") 140 PRINT:PRINT 150 INPUT "File to view: "F$ 160 C=OPENIN(F$) 170 V$=LEFT$(("VIEW:"+F$),15) 180 OSCLI "*NAME "+V$ 190 FL=EXT#C 200 N=200:MAX=9999999 210 DIM L(N) 220 P=1:E=1:F=1:L(P)=0 230 LI=1 240 VDU 1,ASC("C") 250 ON ERROR K$=INKEY$(100):GOTO 320 300 REM Main Loop 305 IF LI<1 THEN LI=1 307 IF LI>MAX THEN LI=MAX 310 PROCdisplay(LI) 320 K=GET 330 IF K<>0 GOTO 320 340 K=GET 350 IF K=255 AND LI>1 THEN LI=LI-1:GOTO 305 360 IF K=254 THEN PROCdownline:GOTO 320 370 IF K=251 AND LI>1 THEN LI=LI-7:GOTO 305 380 IF K=250 THEN LI=LI+7:GOTO 305 390 GOTO 320 9000 REM Ensure element number in range 9010 DEF FNelement(X) 9020 IF X<1 THEN X=X+N 9030 IF X>N THEN X=X-N 9040 =X 9100 REM Give element number for line 9110 DEF FNlinepos(X)=FNelement(X-F+P) 9200 REM Add pointer to line at end of list 9210 DEF PROCaddend(X) 9220 E=E+1 9230 L(FNlinepos(E))=X 9240 IF P=FNlinepos(E) THEN P=FNelement(P+1):F=F+1 9250 ENDPROC 9300 REM Add pointer to line at start of list 9310 DEF PROCaddstart(X) 9320 F=F-1 9330 P=FNelement(P-1) 9340 L(FNlinepos(F))=X 9350 IF P=FNlinepos(E) THEN E=E-1 9360 ENDPROC 9400 REM Display text from line X 9410 DEF PROCdisplay(X) 9415 LOCAL A 9420 IF X>MAX THEN X=MAX 9430 IF X<=E GOTO 9490 9440 PTR#C=L(FNlinepos(E)) 9450 INPUT#C,T$ 9460 IF (FL-PTR#C)<2 MAX=E:GOTO 9420 9470 PROCaddend(PTR#C) 9480 GOTO 9430 9490 IF X>=F GOTO 9570 9500 A=L(FNlinepos(F))-256:IF A<0 THEN A=0 9510 PTR#C=A 9520 A=PTR#C 9530 INPUT#C,T$ 9540 IF PTR#CE PROCaddend(PTR#C) 9640 NEXT A 9650 ENDPROC 9700 REM Display a line 9710 DEF PROCdispnext(X) 9720 INPUT#C,T$ 9725 IF ASC(T$)=10 THEN T$=MID$(T$,2) 9730 IF X THEN PRINT 9740 PRINT LEFT$(T$,80); 9750 ENDPROC 9800 REM Down a single line 9810 DEF PROCdownline 9820 IF (FL-PTR#C)<2 GOTO 9850 9830 PROCdispnext(1):LI=LI+1 9835 IF (FL-PTR#C)<2 GOTO 9850 9840 IF LI+7>E PROCaddend(PTR#C) 9850 ENDPROC