1 REM Ins{nd av Kristoffer Eriksson <5357> 1988-12-12 22.00.55 (KERMIT) 10 ! save VIDEOTXB, 1985-05-03 11.32 20 EXTEND : INTEGER : OPTION BASE 0 30 COMMON K$=36,K2$=93,K22$=93,K3$=32,K4$=320,V24$=16,Login$=160,Alth,Nrh 40 COMMON Skala,Sv{rta,Abc,Fwid,Printer,Vmarg,F{rg$=16,Sparf$=16,Prbak 50 COMMON Prk$(15)=15,Printer$=30,Namn$(19,1)=20,Tele$(19)=160,Chain$=16,Dv$=4 60 Terminal=-1 70 Kdump=247 ! CTRL SH PF8 80 Kff=194 ! PF4 90 Kstop=192 ! PF1 100 Kv{rd=193 ! PF2 110 Kspara=245 ! CTRL SH PF6 120 Kh{mta=195 ! PF4 130 Atra=PEEK2(116)+6 140 IF Abc=0 THEN Z=FNFel(1) 150 ! 160 DIM Grafik$=80,Text$=80,Crt$=0,Crt2$=1920,Attr$=1920,Spars$=16 170 Grafik$=" " : Text$=" " 180 POKE VAROOT(Crt$),128,7,0,120,128,7 : Attr$=" " 190 MID$(K$,11,2)=CVT%$(VARPTR(Attr$)) 200 MID$(K3$,2,2)=CVT%$(VARPTR(Attr$)) 210 Prgr=VARPTR(K2$) 220 ! 230 DATA 1,2 240 DATA EPSON,C.ITOH M-1550 S/SC 250 ! 260 DATA 27,65,1,13,10,-1 270 DATA 27,65,1,13,10,-1 280 DATA 27,65,9,13,10,-1 290 DATA 27,65,12,-1 300 DATA 27,65,7,13,10,-1 310 DATA 15,-1, 15,-1, 18,-1, 18,14,-1 320 DATA 27,42,0,128,-1, 27,42,1,128,-1 330 DATA 27,64,-1, -1, -1, 3,4,3,3,6,6,-1 340 DATA PR:VSA70A72.55 350 DATA 5,2,1,-1 360 ! 370 ! C.ITOH M-1550 S/SC 380 DATA 27,84,48,50,13,10,-1 390 DATA 27,84,48,52,13,10,-1 400 DATA 27,84,49,56,13,10,-1 410 DATA 27,84,50,52,-1 420 DATA 27,84,49,53,13,10,-1 430 DATA 27,78,15,-1, 27,81,15,-1, 27,78,15,-1, 27,78,14,-1 440 DATA 27,78,15,27,83,132,-1, 27,81,15,27,83,132,-1 450 DATA 27,61,48,27,67,80,48,49,50,51,52,53,54,55,-1 460 DATA 48,50,53,49,54,51,52,55,-1, 27,67,-1, 4,4,4,4,8,8,-1 470 DATA PR:VSA70A72.55 480 DATA 5,2,1,0 490 ! 500 Z=FNSkalinit 510 IF LEN(V24$) THEN Z=FNKommunicera(V24$,Login$) ELSE Z=FNH{mta 515 IF Prop THEN ; #10 CHR$(12); 520 CLOSE 530 ! 540 ON ERROR GOTO 550 : CHAIN Chain$ 550 Z=FNFel(2-(ERRCODE<>21)) 560 RESUME 540 570 ! 580 DEF FNGetv24(M) LOCAL X,Y 590 X=PEEK2(PEEK2(65500)+6) : Y=Y OR X : IF PEEK(65507)=Kstop THEN RETURN -1 600 IF X=0 AND M=1 THEN 590 ELSE IF X THEN GET #4 A$ : A$=CHR$(ASCII(A$) AND 127) : Z=FNDvvis(A$) : IF M=2 THEN 590 610 RETURN Y 620 FNEND 630 DEF FNKommunicera(V24$,Login$) LOCAL T,T3,Buf$=500 640 POKE PEEK2(65500)+2,VAROOT(Buf$),SWAP%(VAROOT(Buf$)) 650 Wid=80 : IF Terminal OR Fwid<=40 THEN Wid=40 660 WIDTH Wid 670 ON ERROR GOTO 860 680 IF Abc=806 THEN POKE Atra,0 ! ATTR 0 690 OPEN V24$ AS FILE 1 700 IF Login$="" OR LEN(V24$)<5 THEN 820 710 ; CHR$(12); : Z=FNLine25(5) : ; CUR(0,0); 720 OPEN LEFT$(V24$,4)+"V"+RIGHT$(V24$,6) AS FILE 4 730 FOR I=1 TO LEN(Login$) 740 T=INSTR(1,CHR$(193,195,197,199,209,213,215),MID$(Login$,I,1)) 750 IF T=6 THEN Z=FNGetv24(1) : GOTO 780 760 IF T=7 THEN A$=" " : WHILE INSTR(1,CHR$(10,13,3),A$)=0 AND FNGetv24(1)<>-1 : WEND : GOTO 780 770 IF T=0 THEN ; #4 MID$(Login$,I,1); ELSE ; #4 MID$(CHR$(13,24,8,9,3),T,1); 780 FOR J=1 TO 50 : IF FNGetv24(2)>0 THEN J=1 790 NEXT J : IF PEEK(65507)=Kstop THEN I=32760 800 NEXT I 810 ! 820 ; CHR$(12); 830 Z=FNLine25(1) : POKE SYS(10)+82,Pos,SWAP%(Pos) 840 ON ERROR GOTO 860 : GET #ABS(SGN(Terminal)) A$ 850 ; A$; : GOTO 840 860 IF ERRCODE<>53 THEN RESUME 880 ELSE RESUME 870 870 Pos=PEEK2(SYS(10)+82) : ON FNPf GOTO 830,890 880 Z=FNFel(9) 890 CLOSE 900 POKE PEEK2(65500)+2,0,0 : IF Abc=802 THEN OUT 56,6,57,24 910 RETURN 0 920 FNEND 930 ! 940 DEF FNPf LOCAL A,F1 950 IF SYS(5) THEN GET A$ 960 F1=PEEK(Atra) : Wid=80 : IF PEEK2(SYS(10)+84)<=40 THEN Wid=40 970 A=INSTR(1,CHR$(Kdump,Kff,Kv{rd,Kspara,Kh{mta,Kstop,192),CHR$(PEEK(65507))) 980 ON A+1 GOTO 990,1020,1020,1000,1000,1000,1120,1120 990 ; CHR$(7); : GOTO 1110 1000 IF Niv} THEN 990 ELSE Niv}=1 1010 Crt2$=Crt$ : IF Abc=806 THEN Z=CALL(VARPTR(K$),0) 1020 ON A GOTO 1030,1040,1060,1070,1080 1030 Z=FNDump : GOTO 1110 1040 IF Prop THEN ; #10 CHR$(12); 1050 GOTO 1110 1060 Z=FNSt{llparm : GOTO 1090 1070 Z=FNSpara : GOTO 1090 1080 Z=FNH{mta 1090 WIDTH Wid : Crt$=Crt2$ : IF Abc=806 THEN POKE Atra,F1 : Z=CALL(VARPTR(K$),1) 1100 Niv}=0 1110 RETURN 1 1120 RETURN 2 1130 FNEND 1140 ! 1150 DEF FNDump LOCAL T,T3,Attr1,Attr2 1160 ON ERROR GOTO 1640 1170 IF NOT Prop THEN OPEN Prk$(15) AS FILE 10 : Prop=-1 1180 Z=FNLine25(5) : PUT #10 Prk$(11) 1190 IF Abc=806 THEN 1420 1200 ! 1210 ! DUMP ABC 802 1220 FOR I=30720 TO 32600 STEP 80 1230 Grafik$="" : Text$="" : Grafik=0 : Grfinns=0 1240 Attr1=7 : Attr2=1 AND Wid<=40 : Attr$="" 1250 FOR J=I TO I+79 STEP 80/Wid 1260 T=PEEK(J) AND 127 : IF T>=32 THEN 1330 1270 IF T<8 THEN Grafik=0 : Attr1=(Attr1 AND 56) OR (T AND 7) : GOTO 1320 1280 IF T>=16 AND T<=23 THEN Grafik=-1 : Attr1=(Attr1 AND 56) OR (T AND 7) : GOTO 1320 1290 IF T=24 THEN Attr1=(Attr1 AND 56) OR (Attr1 AND 56)/8 : GOTO 1320 1300 IF T=27 THEN Attr1=Attr1 AND 7 : GOTO 1320 1310 IF T=28 THEN Attr1=(Attr1 AND 7) OR (Attr1 AND 7)*8 : GOTO 1320 1320 T=32 : IF NOT Prbak THEN 1340 1330 IF Grafik AND (T AND 96)<>64 OR (T=32 AND Prbak) OR T=127 THEN Text$=Text$+" " : Grafik$=Grafik$+CHR$(T-32) : Grfinns=-1 : GOTO 1350 1340 Text$=Text$+CHR$(T) : Grafik$=Grafik$+CHR$(255) 1350 Attr$=Attr$+CHR$(Attr1,Attr2) 1360 NEXT J 1370 Z=FNSkrivrad 1380 IF SYS(5) THEN GET A$ : IF A$=CHR$(Kstop) THEN I=32600 1390 NEXT I 1400 GOTO 1600 1410 ! 1420 ! DUMP ABC 806 1430 FOR I=30720 TO 32600 STEP 80 1440 Grafik$="" : Text$="" : Grfinns=0 : Attr1=7 : Attr2=0 : Attr$="" 1450 FOR J=I TO I+79 1460 T=PEEK(J) : T3=INP(53) 1470 IF (T3 AND 192)=192 IF (T3 AND 56)/8=(T3 AND 7) THEN Attr2=MOD(INSTR(1,CHR$(219,201,210,210,255,237,246),CHR$(T3)),4) 1480 IF Attr2 OR Wid=40 THEN J=J+1 : T3=PEEK(J) : T3=INP(53) 1490 IF T3>0 THEN Attr1=T3 AND 63 1500 Attr$=Attr$+CHR$(Attr1,Attr2) 1510 IF (T AND 96)=0 OR T=127 THEN 1550 1520 IF Attr2=3 THEN T=0 : GOTO 1550 1530 IF Prbak IF T=32 AND Attr1 AND 56 THEN T=0 : GOTO 1550 1540 Text$=Text$+CHR$(T AND 127) : Grafik$=Grafik$+CHR$(255) : GOTO 1560 1550 Grafik$=Grafik$+CHR$(T) : Text$=Text$+" " : Grfinns=-1 1560 NEXT J 1570 Z=FNSkrivrad 1580 IF SYS(5) THEN GET A$ : IF A$=CHR$(Kstop) THEN I=32600 1590 NEXT I 1600 IF Prk$(13)<>"" THEN PUT #10 Prk$(13)+MID$(Prk$(12),8,1) 1610 ; #10 Prk$(5)+SPACE$(Vmarg)+Prk$(Tres)+STRING$(Wid,ASCII("-")) 1620 ; #10 1630 RETURN 0 1640 Z=FNFel(10) : CLOSE 10 : Prop=0 : RESUME 1630 1650 FNEND 1660 ! 1670 DEF FNSpara LOCAL T,T3,P.,P2.,Attr1,A1,Attr2,A2,W 1680 W=PEEK(SYS(10)+84) 1690 ; FNHuvud$("Spara sida") 1700 IF Sparf$=Spars$ AND LEN(Sparf$) THEN 1750 1710 Z=FNLine25(4) 1720 Text$="" : IF LEN(Sparf$) THEN Text$=" (RET="+Sparf$+")" 1730 ; CUR(4,0) CYA "Vad ska lagrings-filen heta" Text$ " ? "; 1740 Z=FNGet(16,VAROOT(Sparf$),Sparf$,1) : IF Z<>1 THEN 2130 1750 Sparf$=FNExt$(Sparf$) 1760 IF Sparf$=Spars$ THEN 1850 1770 ON ERROR GOTO 1860 : OPEN Sparf$ AS FILE 11 1780 Z=FNFel(4) 1790 Z=FNJanej(CYA+CUR(6,0)+"Ska den nya bilden ers{tta den/de gamla (svara J) eller l{ggas sist (N)") 1800 IF Z=2 THEN CLOSE 11 : GOTO 1870 1810 IF Z<>3 THEN 1710 1820 GET #11 A$ : WHILE A$=CHR$(40) OR A$=CHR$(80) 1830 POSIT #11,POSIT(11)+4+ASCII(A$)*24 : GET #11 A$ 1840 WEND 1850 POSIT #11,POSIT(11)-1 : GOTO 1890 1860 IF ERRCODE<>21 THEN 2090 ELSE RESUME 1870 1870 ON ERROR GOTO 2090 : PREPARE Sparf$ AS FILE 11 1880 ! 1890 WIDTH W : Z=FNLine25(7) : Crt$=Crt2$ : IF Abc=806 THEN Z=CALL(VARPTR(K$),1) 1900 ON ERROR GOTO 2090 1910 PUT #11 CHR$(Wid,0,0,0,0) 1920 IF Abc=806 THEN 2000 1930 FOR I=32560 TO 30720 STEP -80 1940 FOR J=I TO I+79 STEP 80/Wid 1950 PUT #11 CHR$(PEEK(J) OR 128 AND PEEK(J)<32) 1960 NEXT J 1970 NEXT I 1980 GOTO 2050 1990 ! 2000 POKE VARPTR(K4$),VARPTR(Text$),SWAP%(VARPTR(Text$)),VARPTR(Grafik$),SWAP%(VARPTR(Grafik$)) 2010 FOR I=32560 TO 30720 STEP -80 2020 Text$=STRING$(Wid,0) 2030 Z=CALL(VARPTR(K4$)+8,I) : PUT #11 Text$ 2040 NEXT I 2050 PUT #11 CHR$(0) 2060 Spars$=Sparf$ 2070 RETURN 0 2080 ! 2090 RESUME 2100 2100 ; FNHuvud$("Spara sida") 2110 IF ERRCODE=21 THEN Text$=Sparf$ : Z=FNFel(5) : GOTO 1710 2120 Z=FNFel(6) : RETURN 1 2130 WIDTH W : RETURN 0 2140 FNEND 2150 ! 2160 DEF FNH{mta LOCAL Fil$=16,W,R,F,P.,H,G,S,A$=1 2170 W=PEEK(SYS(10)+84) : S=SYS(10)+82 2180 Text$="" : Fil$=Spars$ 2190 ; FNHuvud$("Visa sparade sidor") 2200 IF LEN(Text$) THEN ; CUR(20,0) YEL "'" Fil$ "' {r slut." 2210 Z=FNLine25(4) : Text$="" : IF LEN(Fil$) THEN Text$=" (RET="+Fil$+")" 2220 ; CUR(4,0) CYA "Vad heter lagrings-filen" Text$ " ? "; 2230 Z=FNGet(16,VAROOT(Fil$),Fil$,1) : IF Z<>1 THEN 2490 2240 Fil$=FNExt$(Fil$) : ON ERROR GOTO 2430 2250 F=12 : IF Fil$=Spars$ THEN F=11 : P.=POSIT(11) : POSIT #F,0. : GOTO 2270 2260 OPEN Fil$ AS FILE F 2270 GET #F A$ : WHILE A$=CHR$(40) OR A$=CHR$(80) 2280 H=6 2290 WIDTH ASCII(A$) : ; CHR$(12); : IF Abc=806 THEN POKE Atra,0 2300 GET #F Text$ COUNT 4 2310 R=23 : WHILE R>=0 2320 GET #F Text$ COUNT ASCII(A$) : ; CUR(0,0) : ; CUR(R,0) Text$; 2330 R=R-1 : WEND : GET #F A$ : ; 2340 Z=FNLine25(H) : ; CUR(0,0); : GET Text$ : R=ASCII(Text$) 2350 IF R=63 THEN H=H XOR 7 : GOTO 2340 2360 IF R=13 THEN POSIT #F,0 : GET #F A$ : GOTO 2390 2370 IF R=Kh{mta THEN ; CHR$(7); : GOTO 2340 2380 IF R<>9 AND R<>32 THEN ON FNPf GOTO 2340,2410 2390 WEND 2400 GOTO 2190 2410 Text$="" : GOTO 2190 2420 ! 2430 RESUME 2440 2440 ; FNHuvud$("Visa sparade sidor") 2450 IF ERRCODE=21 THEN Text$=Fil$ : Z=FNFel(5) : GOTO 2210 2460 Z=FNFel(7) 2470 GOTO 2210 2480 ! 2490 IF F<>11 THEN CLOSE 12 ELSE POSIT #11,P. 2500 WIDTH W : RETURN 0 2510 FNEND 2520 ! 2530 DEF FNExt$(Fil$)=Fil$+LEFT$(".VTX",4 AND INSTR(1,Fil$,".")=0) 2540 ! 2550 DEF FNDvvis(T0$) LOCAL R,S,T$=1 2560 S=SYS(10)+83 2570 IF Esc THEN T$=CHR$(ASCII(T0$) AND 31 OR 128) : GOTO 2590 ELSE T$=T0$ 2580 ON INSTR(1,CHR$(10,11,12,27,30),T$)+1 GOTO 2590,2670,2690,2710,2720,2730 2590 IF PEEK(S-1)<40 THEN 2610 2600 IF PEEK(S)>=23 THEN ; CUR(0,0); ELSE ; CHR$(13,10); 2610 IF ASCII(T$)=9 THEN POKE S-1,PEEK(S-1)+1 ELSE ; T$; 2620 Esc=0 : IF Abc<>806 THEN RETURN 0 2630 R=30720+PEEK(S)*80+2*PEEK(S-1) : Z=PEEK(R) : Z=INP(53) 2640 IF Z=246 OR Z=255 THEN POKE S+7,PEEK(S+7) AND 249 OR 2*(Z=246)+4 2650 Z=PEEK(R+1) : IF INP(53)<>0 THEN POKE S+6,INP(53) 2660 RETURN 0 2670 R=PEEK(S)+1 : IF R>23 THEN R=0 2680 GOTO 2700 2690 R=PEEK(S)-1 : IF R<0 THEN R=23 2700 POKE S,R : RETURN 0 2710 ; CHR$(12); : Z=FNLine25(5) : ; CUR(0,0); : RETURN 0 2720 Esc=-1 : RETURN 0 2730 ; CUR(0,0); : RETURN 0 2740 FNEND 2750 ! 2760 DEF FNV{lj(R,K,D,S,Antal,Start,P$) LOCAL Galt,Alt,Gt$=1,Fr 2770 Z=FNLine25(2) 2780 Fr=R+D*Antal-(D=1) 2790 ; CUR(Fr,K) CYA CUR(Fr,K) "Vilket alternativ ?"; 2800 Alt=Start-1 2810 ; CUR(R+D*Galt,K-LEN(P$)) SPACE$(LEN(P$)); 2820 ; CUR(R+D*Alt,K-LEN(P$)) P$ CUR(Fr,K+19);Alt+1 AND (Alt<>Antal-1 OR S); 2830 Galt=Alt 2840 GET Gt$ : IF Gt$<"1" OR Gt$>"9" THEN 2880 2850 IF Antal<10 IF Gt$<=NUM$(Antal) THEN Alt=VAL(Gt$)-1 : GOTO 2810 ELSE 2810 2860 Alt=Alt+1 : Z=SYS(6)+FNInp(1,Antal,VARPTR(Alt),Fr,K+18) : Alt=Alt-1 2870 IF O{ndr THEN Z=SYS(6) ELSE 2810 2880 ON INSTR(1,CHR$(48,8,9,196,198,Kstop,13),Gt$)+1 GOTO 2840,2890,2900,2910,2900,2910,2920,2930 2890 Alt=Antal-1 : GOTO 2810 2900 IF Alt>0 THEN Alt=Alt-1 : GOTO 2810 ELSE Alt=Antal-1 : GOTO 2810 2910 IF Alt=1 AND I<=15 2990 I=I+FNParm(I) 3000 WEND : WIDTH W : IF Abc=806 THEN POKE Atra,A 3010 RETURN FNSkalinit 3020 FNEND 3030 ! 3040 DEF FNParm(Nr) LOCAL X 3050 IF O{ndr THEN 3190 3060 IF LEN(F{rg$)<9 THEN F{rg$=STRING$(9,0) 3070 ; FNHuvud$("St{ll parametrar") YEL 3080 ; "Utskriftsskala 1/2/3 (" NUM$(Skala) ")" 3090 ; "V{nstermarginal (" NUM$(Vmarg) ")" 3100 ; "Utskrift av bakgrund J/N (" MID$("JN",Prbak+2,1) ")" 3110 ; "Sv{rta 1/2 (" NUM$(Sv{rta) ")" 3120 DATA Svart grafik,R|d,Gr|n,Gul,Bl},Magenta,Cyan,Vit,Svart text 3130 ; : RESTORE 3120 : X=1 : WHILE X<10 3140 READ A$ : ; A$ TAB(14) "0-7 (" NUM$(INSTR(1,Prk$(12),MID$(F{rg$,X,1))-1) ")" 3150 X=X+1 : WEND 3160 ; : ; "Byt skrivare J/N (N)" : ; "Skrivare = " Printer$ 3170 ; : ; "Sparfil='" Sparf$ "'" 3180 Z=FNLine25(3) : ; CUR(22,79) CYA 3190 IF Nr>13 THEN ON Nr-13 GOTO 3280,3300 3200 IF Nr<5 THEN ON Nr GOTO 3210,3220,3230,3250 ELSE 3260 3210 RETURN FNInp(1,3,VARPTR(Skala),3,29) 3220 RETURN FNInp(0,999,VARPTR(Vmarg),4,29) 3230 X=FNJanej(CUR(5,29)) 3240 IF X>1 THEN Prbak=X-3 : O{ndr=0 : RETURN 1 ELSE RETURN X 3250 RETURN FNInp(1,2,VARPTR(Sv{rta),6,29) 3260 Z=FNInp(0,LEN(Prk$(12))-1,VARPTR(X),Nr+3,24) : IF O{ndr THEN RETURN Z 3270 MID$(F{rg$,Nr-4,1)=MID$(Prk$(12),X+1,1) : RETURN 1 3280 X=FNJanej(CUR(18,24)) 3290 IF X<>2 THEN RETURN X ELSE RETURN FNInitpr(1) 3300 ; CUR(21,28) "? "; : RETURN FNGet(16,VAROOT(Sparf$),Sparf$,1) 3310 FNEND 3320 ! 3330 DEF FNInp(Min,Max,Adr,Rad,Kol) LOCAL X,X$=6 3340 ; CUR(Rad,Kol) "? "; 3350 X=FNGet(LEN(NUM$(Max)),VAROOT(X$),NUM$(PEEK2(Adr)),2) 3360 IF X$="" OR O{ndr THEN RETURN X ELSE X=VAL(X$) 3370 IF XMax THEN ; CHR$(7); : GOTO 3340 3380 POKE Adr,X,SWAP%(X) : RETURN 0 3390 FNEND 3400 ! 3410 ! Typ: 0=alla koder, 1=alfanumeriskt, 2=numeriskt 3420 DEF FNGet(Max,Adr,Deflt$,Typ) LOCAL X,P,X$=320,Gt$=1,R,K 3430 X$=Deflt$ : X=0 : O{ndr=-1 : K=PEEK(SYS(10)+82) : R=PEEK(SYS(10)+83) 3440 ; CUR(R,K) SPACE$(Max); 3450 WHILE X=0 3460 ; CUR(R,K) LEFT$(X$,P) CHR$(32,8); 3470 GET Gt$ : X=INSTR(1,CHR$(13,196,198,Kstop,192,8,9),Gt$) 3480 IF X=6 AND P>0 THEN P=P-1 : X$=LEFT$(X$,P)+RIGHT$(X$,P+2) : X=0 : GOTO 3540 3490 IF X=7 THEN P=P+1+(P>=LEN(X$) OR P>=Max) : X=0 : GOTO 3540 3500 IF X<>0 THEN 3540 3510 IF Gt$=CHR$(24) THEN WHILE PEEK(SYS(10)+83)>R OR PEEK(SYS(10)+82)>K : ; CHR$(8,32,8); : WEND : X$=RIGHT$(X$,P+1) : P=0 : GOTO 3540 3520 IF Gt$>CHR$(127) OR (Typ=1 AND Gt$<" ") OR (Typ=2 AND (Gt$<"0" OR Gt$>"9")) THEN ; CHR$(7); : GOTO 3540 3530 IF P1 THEN RETURN X 3680 X=INSTR(1,"JjNn",X$) : IF X=0 THEN ; CHR$(7,8); : GOTO 3660 3690 RETURN (X-1)/2+2 3700 FNEND 3710 ! 3720 DEF FNHuvud$(Text$) 3730 WIDTH 80 : IF Abc=806 THEN POKE Atra,5 3740 RETURN GRN+CHR$(12)+"Videotex 800 Ver 1.2 - "+Text$+CHR$(10,13)+STRING$(PEEK(SYS(10)+84),ASCII("=")) 3750 FNEND 3760 ! 3770 DEF FNLine25(Nr) LOCAL I,N,A,S,F1,M,A$=30,B$=30 3780 DATA 6,0,1,St,2,V{rden,3,FF,4,Visa,CS6,Spara,CS8,Skriv 3790 DATA 5,1,PF1," Tillbaka ",PF5 / <--," Upp ",PF7 / -->," Ned ",RET," Verkst{ll ",Tal," Snabbval " 3800 DATA 3,1,PF1," Tillbaka ",PF5 / <--," Upp ",PF7 / -->," Ned " 3810 DATA 3820 DATA 1,1,PF1,Avbryt 3830 DATA 4,1,PF1,Avbryt,RET,sida 1,-->,N{sta,?,Mer 3840 DATA 1,0,,Lagring p}g}r 3850 ON Nr RESTORE 3780,3790,3800,3810,3820,3830,3840 3860 ! 3870 IF Abc=806 THEN F1=PEEK(Atra) : POKE Atra,1 : GOTO 3890 ! ATTR 1 3880 S=80/PEEK(SYS(10)+84) : OUT 56,6,57,25 : A=32640 3890 FOR J=32640 TO 32720 : POKE J,32 : NEXT J 3900 ; CUR(24,0) BLBG GRN; : READ N,M : WHILE I") : IF Alt=0 THEN 4430 4200 ! 4210 IF Fil THEN 4300 4220 RESTORE 240 : J=1 : WHILE J<=Alt : READ Printer$ : J=J+1 : WEND 4230 ON Alt RESTORE 260,380 4240 I=0 : WHILE I<=14 : Prk$(I)="" 4250 READ J : IF J>-1 THEN Prk$(I)=Prk$(I)+CHR$(J) : GOTO 4250 4260 I=I+1 : WEND 4270 IF Prk$(12)<>"" THEN F{rg$=Prk$(12)+RIGHT$(Prk$(12),LEN(Prk$(12))) 4280 READ Prk$(15),Vmarg,Skala,Sv{rta,J : GOTO 4390 4290 ! 4300 POSIT #3,Alt*30-26 : GET #3 Printer$ COUNT 30 4310 POSIT #3,4+Ant*30 4320 J=1 : WHILE J"" 4400 K2$=K22$ : IF J THEN POKE Prgr+63,0,0,0,0,0,0,0,0,0 ! Ej v{ndbyte 4410 Printer=Alt 4420 ! 4430 IF Fil THEN CLOSE 3 4440 RETURN 0 4450 RESUME 4460 4460 CLOSE 3 4470 Z=FNFel(8) : GOTO 4080 4480 FNEND 4490 DEF FNFinp LOCAL X$=2 4500 GET #3 X$ COUNT 2 : RETURN CVT$%(X$) 4510 FNEND 4520 ! ____ 4530 DEF FNSkrivrad 4540 Attr$=Attr$+CHR$(255) 4550 IF Grfinns THEN Z=FNPrgrafdel(Grafik$,Attr$,0) 4560 PUT #10 Prk$(0) : IF NOT Z THEN Z=FNPrtext(Text$,Attr$) 4570 IF Grfinns=0 OR Z THEN PUT #10 Prk$(2) : GOTO 4600 4580 PUT #10 Prk$(1) : Z=FNPrgrafdel(Grafik$,Attr$,1) 4590 PUT #10 Prk$(4) ! Ny rad 4600 PUT #10 Prk$(3) : RETURN 0 ! Norm radavst 4610 FNEND 4620 ! 4630 DEF FNPrgrafdel(Rad$,Attr$,Del) LOCAL L,D1,D2,Mask,Div 4640 D1=ASCII(MID$(Prk$(14),Skala*2-1,1)) : D2=ASCII(MID$(Prk$(14),Skala*2,1)) 4650 IF Skala>1 AND Sv{rta=2 THEN D1=D1*2 : D2=D2*2 4660 POKE Prgr+23,D1 : POKE Prgr+29,D2 : POKE Prgr+10,D1+D2 4670 POKE Prgr+33,Del 4680 L=LEN(Rad$) 4690 IF L>4 IF MID$(Rad$,L-4,5)=STRING$(5,255) THEN L=L-5 : GOTO 4690 4700 IF L<1 THEN RETURN 0 ELSE IF MID$(Rad$,L,1)=CHR$(255) THEN L=L-1 : GOTO 4700 4710 Z=FNPrgrund(Rad$,Attr$,L,D1+D2,0) 4720 IF Prbak THEN PUT #10 CHR$(13) : Z=FNPrgrund(Rad$,Attr$,L,D1+D2,254-Del*240) 4730 RETURN PEEK(65507)=Kstop 4740 FNEND 4750 DEF FNPrgrund(Rad$,Attr$,L,D,Grund) LOCAL P0,P,F,B,A,Fm,Fd 4760 POKE Prgr+62,Grund 4770 Fm=7 : Fd=1 : IF Grund THEN Fm=56 : Fd=8 4780 A=VARPTR(K3$) : POKE A+9,Fm : POKE A+19,Fm 4790 PUT #10 Prk$(5)+SPACE$(Vmarg) 4800 P0=1 : WHILE P0<=L 4810 F=ASCII(MID$(Attr$,P0*2-1,1)) AND Fm 4820 IF Prk$(13)="" THEN P=L+1 : GOTO 4840 4830 PUT #10 Prk$(13)+MID$(F{rg$,F/Fd+1,1) : P=CALL(A,P0) 4840 B=(P-P0)*D 4850 PUT #10 LEFT$(Prk$(Res),LEN(Prk$(Res))-1) : Z=ASCII(RIGHT$(Prk$(Res),LEN(Prk$(Res)))) 4860 IF Z>128 THEN PUT #10 STRING$(Z-128-LEN(NUM$(B)),48)+NUM$(B) ELSE PUT #10 CVT%$(B) 4870 FOR J=P0 TO P-1 : Z=CALL(Prgr,ASCII(MID$(Rad$,J,1))) : NEXT J 4880 P0=P : WEND 4890 RETURN 0 4900 FNEND 4910 ! 4920 DEF FNPrtext(Rad$,Attr$) LOCAL P0,P,F,L,A 4930 IF Rad$=SPACE$(LEN(Rad$)) THEN 5010 4940 PUT #10 Prk$(5)+SPACE$(Vmarg)+Prk$(Tres) 4950 IF Prk$(13)="" THEN PUT #10 Rad$ : GOTO 5010 4960 A=VARPTR(K3$) : POKE A+9,7 : POKE A+19,7 4970 L=LEN(Rad$) : P0=1 : WHILE P0<=L 4980 F=ASCII(MID$(Attr$,P0*2-1,1)) AND 7 : P=CALL(A,P0) 4990 PUT #10 Prk$(13)+MID$(F{rg$,F+1 OR 8 AND F=0,1)+MID$(Rad$,P0,P-P0) 5000 P0=P : WEND 5010 RETURN PEEK(65507)=Kstop 5020 FNEND 5030 ! 5040 DEF FNSkalinit 5050 Res=9 ! Grafikkod till skrivaren 5060 IF Skala=1 OR Sv{rta=2 THEN Res=10 5070 Tres=Skala+5 5080 RETURN 0 5090 FNEND 5100 ! 5110 DEF FNFel(N) LOCAL A$=1 5120 ; CUR(21,0) CHR$(7) RED NWBG YEL "> "; 5130 ON N GOTO 5140,5150,5160,5170,5180,5190,5190,5200,5210 5140 ; "Starta med VIDEOTX !"; : GOTO 5270 5150 ; "Fel" ERRCODE "vid anrop av '" Chain$ "'"; : GOTO 5270 5160 ; "S{tt tillbaks disketten med VIDEOTEX-programmet i driven"; : GOTO 5230 5170 ; "'" Sparf$ "' finns redan"; : GOTO 5260 5180 ; "Hittar inte filen '" Text$ "' (eller otill}tet namn)"; : GOTO 5260 5190 ; "Fel" ERRCODE "n{r sidan skulle " MID$("sparasl{sas ",N*6-35,6); : GOTO 5230 5200 ; "Fel" ERRCODE "vid l{sning av skrivardata fr}n 'VIDEOTEX.PR'"; : GOTO 5230 5210 ; "Fel" ERRCODE "fr}n modemet"; : GOTO 5230 5220 ; "Fel" ERRCODE "fr}n skrivaren"; : GOTO 5230 5230 ; " < " BLBG " " : ; RED "Tryck p} CE..."; 5240 WHILE A$<>CHR$(24) : GET A$ : WEND 5250 RETURN 0 5260 ; " < " BLBG " " : RETURN 0 5270 ; " < " BLBG " " : STOP 5280 FNEND