1 REM Ins{nd av David Andersson <5201> 1986-08-09 11.58.12 (DUMP) 10 REM . SAVE VISAUTIL 20 REM ============================== 30 REM AV DAVID ANDERSSON <5201> 40 REM 1986-08-08 50 REM 60 REM LISTA EN FIL P] SK[RMEN. 70 REM GER M\JLIGHET ATT SCROLLA LITE 80 REM BAK]T I FILEN. 90 REM 91 REM (Notera att det inte finns n}gra GOTO och att 92 REM alla GOSUB g}r till j{mna hundratal) 93 REM 100 REM INIT 110 DIM S$(23%)=0% : REM S$() M]STE LIGGA F\RST, MAPPAR SK[RMEN 120 S8%=PEEK(590%) : REM RADL[NGD 130 X%=FNP2%(65065%) : X%=FNP2%(X%+4%) 140 FOR S1%=0% TO 23% : POKE X%+S1%*6%,S8%,0%,PEEK(884%+S1%*2%),PEEK(885%+S1%*2%) : NEXT S1% 150 DEFFNP2%(X%)=PEEK(X%)+SWAP%(PEEK(X%+1%)) 160 DEFFNV%(V%)=V%+V9%*((V%>=V9%)-(V%<0%)) 170 REM MASKINKOD BAK]TSCROLL 180 POKE 65408%,229%,197%,221%,33%,164%,3% 190 POKE 65414%,62%,24%,237%,75%,78%,2% 200 POKE 65420%,221%,94%,254%,221%,86%,255% 210 POKE 65426%,61%,202%,105%,2%,221%,110% 220 POKE 65432%,252%,221%,102%,253%,237%,176% 230 POKE 65438%,221%,43%,221%,43%,24%,228% 240 REM TEXTRAD FR]N FIL 250 DIM L$=122% 260 REM FILNAMN 270 DIM F1$=20% 280 REM DIMENSIONERA BUFFERT 290 X%=FNP2%(65063%)-FNP2%(65056%)-500% 300 V9%=X%/(S8%+6%) 310 IF V9%<48% ; 'F|r lite minne f|r textbufferten' : STOP 320 DIM V$(V9%-1%)=S8% 1000 REM  1010 ; '***** VISAUTIL *****' 1020 ; 'Listar en fil, 'V9%' - raders buffert' 1030 ; ' FRAM]TPIL =lista fram}t i filen' 1040 ; ' MELLANSLAG= -"-' 1050 ; ' BAK]TPIL =lista bak}t i filen' 1060 ; ' CTRL-\ =lista fr}n b|rjan igen' 1070 ; ' CTRL-@ =sluta' 1080 ; 'Filnamn'; 1090 INPUT F1$ 1100 FOR R0%=0% TO 32767% 1110 F1%=1% 1120 OPEN F1$ ASFILE F1% 1130 ; CHR$(12%) 1140 L$='' 1150 GOSUB 1800 1160 GOSUB 2000 1170 CLOSE F1% 1180 IF I%=28% NEXT R0% 1190 ; CUR(23%,0%); 1200 POKE 65013%,0% 1210 END 1800 REM V[NTA P] TANGENTSL[PP 1810 FOR R1%=0% TO 32767% 1820 IF INP(56%)>=128% NEXT R1% 1830 RETURN 2000 REM HUVUDRUTIN 2001 REM INITIERA BUFFERT 2010 W1%=0% : W2%=0% : V1%=0% 2020 V$(0%)='****** H[R B\RJAR FILEN '+F1$ : S$(0%)=V$(0%) 2030 FOR V%=1% TO 23% 2040 V$(V%)=':' : S$(V%)=V$(V%) 2050 NEXT V% 2100 REM HUVUDLOOP 2110 FOR R1%=0% TO 32767% 2120 I%=INP(56%) XOR 128% : REM TANGENTKOD 2130 IF I%=0% OR I%=28% RETURN : REM CTRL-@ OR CTRL-\ 2140 IF I%=8% GOSUB 2300 : REM <- 2150 IF I%=9% OR I%=32% GOSUB 2400 : REM -> 2160 IF I%>=128% GOSUB 2200 : REM INGEN TANGENT 2170 NEXT R1% 2180 RETURN 2200 REM FRAMF\RH]LLNING 2210 REM L[S FR]N FILEN OM N[RA SLUTET P] BUFFERTEN 2220 V%=FNV%(W2%-V1%) 2230 IF V%<36% GOSUB 3000 2240 RETURN 2300 REM SCROLLA BAK]T 2310 IF V1%=W1% RETURN 2320 V1%=FNV%(V1%-1%) 2330 V2%=FNV%(V1%+23%) 2340 Z%=CALL(65408%) 2350 S$(0%)=V$(V1%) 2360 RETURN 2400 REM SCROLLA FRAM]T 2410 X%=FNV%(W2%-V1%) 2420 IF X%<12% GOSUB 3000 : RETURN 2430 V1%=FNV%(V1%+1%) : ; CUR(23%,0%) 2440 V2%=FNV%(V1%+23%) 2450 IF V2%=W1% W1%=FNV%(W1%+1%) 2460 IF X%<24% V$(V2%)=':' 2470 S$(23%)=V$(V2%) 2480 RETURN 3000 REM L[S FR]N FILEN 3010 IF F1%=0% RETURN 3020 W2%=FNV%(W2%+1%) 3030 IF W2%=W1% W1%=FNV%(W1%+1%) 3040 REM KOLLA OM REST FR]N F\RRA RADEN 3050 L%=LEN(L$)-2% : IF L%<=0% GOSUB 3200 : L%=LEN(L$)-2% 3060 IF L%>S8% L%=S8% 3070 V$(W2%)=LEFT$(L$,L%) 3080 L$=RIGHT$(L$,L%+1%) 3090 REM VISA RADEN P] SK[RMEN OM DET G]R 3100 S1%=FNV%(W2%-V1%) 3110 IF S1%<24% S$(S1%)=' ' : S$(S1%)=V$(W2%) 3120 RETURN 3200 REM L[S EN RAD 3210 ONERRORGOTO 3250 3220 INPUTLINE #F1%,L$ 3230 ONERRORGOTO 0 3240 RETURN 3250 REM ERROR 3260 L$='****** L[SFEL ERROR'+NUM$(ERRCODE)+'**' 3270 IF ERRCODE=34% L$='****** SLUT P] FILEN '+F1$+'**' 3280 CLOSE F1% : F1%=0% 3290 RETURN