1 REM Ins{nd av Kristoffer Eriksson <5357> 1988-12-12 21.57.52 (KERMIT) 10 ! save VIDEOTXA, 1985-03-28 15.18 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 LET Chain$=Dv$+"VIDEOTXA.BAC" 70 DIM Defv24$=16 : Defv24$="V24:WEA10K24.40" 80 Kstop=192 ! PF1 90 Atra=PEEK2(116)+6 100 ! 110 IF Abc<>0 AND Skala<>0 AND Sv{rta<>0 THEN 820 120 IF PEEK2(38)=1025 THEN Abc=806 ELSE Abc=802 130 Z=FNTermopt("NOCOMMON") 140 Fwid=PEEK2(SYS(10)+84) 150 ! 160 ! Rutin f|r att spara / l{gga tillbaks attributminnet: 170 REM ATTRSAV.ASM 1984-08-17 16.49.19 180 K$=CHR$(123,167,8,33,0,120,1,128,7,17,0,0,8,126,32,5,219,53,18,24,6,245,26,211,53,241,119,8,35,19,11,120,177,32,233,201) 190 ! 200 ! Rutin f|r att skriva ut ett semigrafiskt tecken p} skrivare: 210 ! Anv{nds i olika form f|r olika skrivare, K22$ h}ller grundversionen 220 K2$=STRING$(93,0) : Prgr=VARPTR(K2$) 230 REM PRBLGRAF.ASM 1984-08-21 16.34.22 240 A=Prgr 250 POKE 0+A,213,62,10,205,43,0,209,123,60,38,0,40,59,61,254,32,56,3,246,32,95,213,38,0,205,A+32,SWAP%(A+32),209,38,0,203,27,62,0,167,32,17,175 260 POKE 38+A,203,27,48,2,246,224,203,27,203,27,48,11,246,30,24,7,175,203,99,40,2,246,14,238,0,111,175,6,8,203,29,23,16,251,50,A+92,SWAP%(A+92) 270 POKE 75+A,68,197,33,A+92,SWAP%(A+92),1,1,0,62,6,205,90,0,193,16,241,201,0 280 K22$=K2$ 290 ! 300 ! Rutin f|r att leta upp f|rsta tecken med {ndrade attribut: 310 REM ATTRCOMP.ASM 1984-08-21 18.19.31 320 K3$=CHR$(1,0,0,235,43,41,9,126,230,0,95,35,35,126,254,255,40,5,230,0,187,40,240,167,237,66,203,61,203,28,35,201) 330 ! 340 ! Bildminne -> printbar text 350 K4$=SPACE$(320) : A=VARPTR(K4$) 360 REM BILDSPAR.ASM 1984-11-14 19.54.09 370 POKE 0+A,0,0,0,0,0,7,0,0,253,126,84,254,41,62,3,56,1,175,50,A+6,SWAP%(A+6),175,50,A+7,SWAP%(A+7),50,A+4,SWAP%(A+4),42,A+0,SWAP%(A+0),62,7 380 POKE 33+A,50,A+5,SWAP%(A+5),217,42,A+2,SWAP%(A+2),6,1,14,81,13,248,217,229,42,A+5,SWAP%(A+5),26,19,71,219,53,79,254,192,56,19,121,15,15,15 390 POKE 65+A,169,230,7,32,10,121,38,0,254,228,40,15,230,3,103,124,167,40,8,217,13,217,26,19,219,53,79,121,167,58,A+5,SWAP%(A+5),40,23,121,254 400 POKE 101+A,128,56,19,15,15,15,169,230,7,32,11,121,230,127,79,58,A+5,SWAP%(A+5),230,128,177,79,58,A+6,SWAP%(A+6),111,124,50,A+6,SWAP%(A+6),254 410 POKE 132+A,1,32,7,6,32,42,A+6,SWAP%(A+6),24,51,189,40,10,46,140,167,40,1,61,133,205,A+314,SWAP%(A+314),42,A+6,SWAP%(A+6),120,230,223,32,4,6 420 POKE 164+A,32,24,26,120,230,96,120,40,7,230,127,71,38,0,24,13,230,63,111,120,31,230,64,246,32,181,71,38,16,58,A+5,SWAP%(A+5),169,111,230,7,32 430 POKE 201+A,6,58,A+7,SWAP%(A+7),188,40,9,121,230,7,180,246,128,205,A+314,SWAP%(A+314),125,230,128,40,9,121,7,62,137,222,0,205,A+314,SWAP%(A+314) 440 POKE 231+A,125,230,56,40,12,121,230,56,40,2,62,1,198,156,71,24,13,125,230,64,40,8,121,7,7,62,139,222,0,71,121,50,A+5,SWAP%(A+5),124,50,A+7,SWAP%(A+7) 450 POKE 269+A,58,A+4,SWAP%(A+4),79,12,120,254,32,121,40,24,225,229,13,40,11,217,5,40,8,43,126,217,43,119,24,242,217,42,A+2,SWAP%(A+2),6,1,217,175 460 POKE 304+A,50,A+4,SWAP%(A+4),225,112,35,217,195,A+44,SWAP%(A+44),217,119,35,4,217,201 470 ! 480 ! 0=Mata 1 lin, 1=mata 2, 2=mata 9, 3=norm radavs, 4=mata 7, 5=margstil 490 ! 6-8=stil 1-3, 9=grafik 1 & sv{rta 2, 10=grafik 2 & 3, 11=init, 12=f{rger 500 ! 13=V{lj f{rg, 14=Pixels v{nster,h|ger halva, stil 1-3 510 ! 520 ! Nedan: Standardpr, antal pr, deras namn, pr-data 530 DATA 1,2 540 DATA EPSON,C.ITOH M-1550 S/SC 550 ! 560 DATA 27,65,1,13,10,-1 570 DATA 27,65,1,13,10,-1 580 DATA 27,65,9,13,10,-1 590 DATA 27,65,12,-1 600 DATA 27,65,7,13,10,-1 610 DATA 15,-1, 15,-1, 18,-1, 18,14,-1 620 DATA 27,42,0,128,-1, 27,42,1,128,-1 630 DATA 27,64,-1, -1, -1, 3,4,3,3,6,6,-1 640 DATA PR:VSA70A72.55 650 DATA 5,2,1,-1 660 ! 670 ! C.ITOH M-1550 S/SC 680 DATA 27,84,48,50,13,10,-1 690 DATA 27,84,48,52,13,10,-1 700 DATA 27,84,49,56,13,10,-1 710 DATA 27,84,50,52,-1 720 DATA 27,84,49,53,13,10,-1 730 DATA 27,78,15,-1, 27,81,15,-1, 27,78,15,-1, 27,78,14,-1 740 DATA 27,78,15,27,83,132,-1, 27,81,15,27,83,132,-1 750 DATA 27,61,48,27,67,80,48,49,50,51,52,53,54,55,-1 760 DATA 48,50,53,49,54,51,52,55,-1, 27,67,-1, 4,4,4,4,8,8,-1 770 DATA PR:VSA70A72.55 780 DATA 5,2,1,0 790 ! 800 Z=FNInitnr+FNInitpr(0) ! Bara f|rsta g}ngen 810 ! 820 DIM Grafik$=80,Text$=80 830 Z=FNHuvmen 840 ON ERROR GOTO 850 : CHAIN "XS0" 850 CHAIN "NUL:" 860 ! 870 DEF FNHuvmen LOCAL F$=8 880 IF Alth=0 OR Nrh=0 THEN Alth=1 : Nrh=1 890 Wid=80 900 ; FNHuvud$("Huvudmeny") CUR(0,46) "Telenr / login :"; 910 ; CUR(23,0) "Kristoffer Eriksson." YEL; 920 ; CUR(5,4) "1. Automatisk uppringning / login" 930 ; " 2. Manuell login" 940 ; " 3. Visa lagrade sidor" 950 ; " 4. [ndra telenr / login" 960 ; " 5. Spara telenr / login" 970 ; " 6. St{ll utskriftsparametrar" 980 ; " 7. Installera skrivare" 990 ; " 0. Avsluta" 1000 FOR I=0 TO 19 : ; USING "&## &" CUR(2+I,45) I+1 Namn$(I,0); : NEXT I 1010 Alth=FNV{lj(5,4,1,0,8,Alth,"-->") : ; 1020 IF Alth=1 OR Alth=4 THEN Z=FNV{lj(2,44,1,-1,20,Nrh,"-->") : IF Z=0 THEN 900 ELSE Nrh=Z 1030 ON Alth GOTO 1050,1080,1150,1180,1190,1200,1210,1230 1040 ! _Auto login__ 1050 IF Namn$(Nrh-1,1)="" THEN Namn$(Nrh-1,1)=Defv24$ 1060 V24$=Namn$(Nrh-1,1) : Login$=Tele$(Nrh-1) : GOTO 1090 1070 ! _Man login__ 1080 V24$=Defv24$ : Login$="" 1090 F$="VIDEOTXB" 1100 ON ERROR GOTO 1110 : CHAIN Dv$+F$ 1110 RESUME 1120 1120 ON ERROR GOTO 1130 : CHAIN F$ 1130 A$=Dv$+F$ : Z=FNFel(2-(ERRCODE=21)) 1140 RESUME 890 1150 ! _Lagrade__ 1160 V24$="" : GOTO 1090 1170 ! ___ 1180 Z=FNNytele(Nrh-1) : GOTO 890 ! [ndra 1190 Z=FNLagratele : GOTO 890 ! Spara 1200 Z=FNSt{llparm : GOTO 890 ! Utskrparm 1210 F$="VTEXDEF" : GOTO 1100 1220 ! _Slut__ 1230 IF PEEK(65507)<>13 THEN 890 1240 IF Abc=802 THEN OUT 56,6,57,24 ELSE ; CUR(24,0) SPACE$(80) CUR(13,0) 1250 WIDTH Fwid : RETURN 0 1260 FNEND 1270 ! 1280 DEF FNNytele(Nr) LOCAL X,X$=160,Alt 1290 ; FNHuvud$("[ndra telefonnummer / loginf|rfarande nr "+NUM$(Nr+1)) YEL 1300 IF Namn$(Nr,1)="" THEN Namn$(Nr,1)=Defv24$ 1310 ; CUR(2,4) "1. Namn:" : ; Namn$(Nr,0) 1320 ; CUR(6,4) "2. Kommunikationsparametrar:" : ; Namn$(Nr,1) 1330 ; CUR(10,4) "3. Inloggning, ev. telefonnummer om modemet har automatisk uppringning:" : ; FNSpecpr$(Tele$(Nr)) 1340 ; CUR(14,4) "0. ]ter till huvudmenyn" 1350 Alt=FNV{lj(2,4,4,0,4,Alt+1,"-->") 1360 ON Alt GOTO 1370,1370,1390,1430 1370 ; CUR(18,0) "Nytt: "; : X$=Namn$(Nr,Alt-1) : X=FNGet(20,VAROOT(X$),X$,1) 1380 Namn$(Nr,Alt-1)=X$ : GOTO 1290 1390 ; CUR(17,0) "Ny startsekvens: "; 1400 X$=Tele$(Nr) : IF X$="" THEN X$=CHR$(84,71,67,193,67,48,48,48,193,215) 1410 X=FNGet(160,VAROOT(X$),X$,0) : IF NOT O{ndr THEN Tele$(Nr)=X$ 1420 GOTO 1290 1430 RETURN 0 1440 FNEND 1450 ! 1460 DEF FNV{lj(R,K,D,S,Antal,Start,P$) LOCAL Galt,Alt,Gt$=1,Fr 1470 Z=FNLine25(2) 1480 Fr=R+D*Antal-(D=1) 1490 ; CUR(Fr,K) CYA CUR(Fr,K) "Vilket alternativ ?"; 1500 Alt=Start-1 1510 ; CUR(R+D*Galt,K-LEN(P$)) SPACE$(LEN(P$)); 1520 ; CUR(R+D*Alt,K-LEN(P$)) P$ CUR(Fr,K+19);Alt+1 AND (Alt<>Antal-1 OR S); 1530 Galt=Alt 1540 GET Gt$ : IF Gt$<"1" OR Gt$>"9" THEN 1580 1550 IF Antal<10 IF Gt$<=NUM$(Antal) THEN Alt=VAL(Gt$)-1 : GOTO 1510 ELSE 1510 1560 Alt=Alt+1 : Z=SYS(6)+FNInp(1,Antal,VARPTR(Alt),Fr,K+18) : Alt=Alt-1 1570 IF O{ndr THEN Z=SYS(6) ELSE 1510 1580 ON INSTR(1,CHR$(48,8,9,196,198,192,Kstop,13),Gt$)+1 GOTO 1540,1590,1600,1610,1600,1610,1620,1620,1630 1590 Alt=Antal-1 : GOTO 1510 1600 IF Alt>0 THEN Alt=Alt-1 : GOTO 1510 ELSE Alt=Antal-1 : GOTO 1510 1610 IF Alt=1 AND I<=15 1690 I=I+FNParm(I) 1700 WEND : WIDTH W : IF Abc=806 THEN POKE Atra,A 1710 RETURN 0 1720 FNEND 1730 ! 1740 DEF FNParm(Nr) LOCAL X 1750 IF O{ndr THEN 1890 1760 IF LEN(F{rg$)<9 THEN F{rg$=STRING$(9,0) 1770 ; FNHuvud$("St{ll parametrar") YEL 1780 ; "Utskriftsskala 1/2/3 (" NUM$(Skala) ")" 1790 ; "V{nstermarginal (" NUM$(Vmarg) ")" 1800 ; "Utskrift av bakgrund J/N (" MID$("JN",Prbak+2,1) ")" 1810 ; "Sv{rta 1/2 (" NUM$(Sv{rta) ")" 1820 DATA Svart grafik,R|d,Gr|n,Gul,Bl},Magenta,Cyan,Vit,Svart text 1830 ; : RESTORE 1820 : X=1 : WHILE X<10 1840 READ A$ : ; A$ TAB(14) "0-7 (" NUM$(INSTR(1,Prk$(12),MID$(F{rg$,X,1))-1) ")" 1850 X=X+1 : WEND 1860 ; : ; "Byt skrivare J/N (N)" : ; "Skrivare = " Printer$ 1870 ; : ; "Sparfil='" Sparf$ "'" 1880 Z=FNLine25(3) : ; CUR(22,79) CYA 1890 IF Nr>13 THEN ON Nr-13 GOTO 1980,2000 1900 IF Nr<5 THEN ON Nr GOTO 1910,1920,1930,1950 ELSE 1960 1910 RETURN FNInp(1,3,VARPTR(Skala),3,29) 1920 RETURN FNInp(0,999,VARPTR(Vmarg),4,29) 1930 X=FNJanej(CUR(5,29)) 1940 IF X>1 THEN Prbak=X-3 : O{ndr=0 : RETURN 1 ELSE RETURN X 1950 RETURN FNInp(1,2,VARPTR(Sv{rta),6,29) 1960 Z=FNInp(0,LEN(Prk$(12))-1,VARPTR(X),Nr+3,24) : IF O{ndr THEN RETURN Z 1970 MID$(F{rg$,Nr-4,1)=MID$(Prk$(12),X+1,1) : RETURN 1 1980 X=FNJanej(CUR(18,24)) 1990 IF X<>2 THEN RETURN X ELSE RETURN FNInitpr(1) 2000 ; CUR(21,28) "? "; : RETURN FNGet(16,VAROOT(Sparf$),Sparf$,1) 2010 FNEND 2020 ! 2030 DEF FNInp(Min,Max,Adr,Rad,Kol) LOCAL X,X$=6 2040 ; CUR(Rad,Kol) "? "; 2050 X=FNGet(LEN(NUM$(Max)),VAROOT(X$),NUM$(PEEK2(Adr)),2) 2060 IF X$="" OR O{ndr THEN RETURN X ELSE X=VAL(X$) 2070 IF XMax THEN ; CHR$(7); : GOTO 2040 2080 POKE Adr,X,SWAP%(X) : RETURN 0 2090 FNEND 2100 ! 2110 ! Typ: 0=alla koder, 1=alfanumeriskt, 2=numeriskt 2120 DEF FNGet(Max,Adr,Deflt$,Typ) LOCAL X,P,X$=320,Gt$=1,R,K 2130 X$=Deflt$ : X=0 : O{ndr=-1 : K=PEEK(SYS(10)+82) : R=PEEK(SYS(10)+83) 2140 ; CUR(R,K) SPACE$(Max); : IF Typ=0 THEN Z=FNLine25(4) : ; CUR(R,K) CYA; 2150 WHILE X=0 2160 ; CUR(R,K) FNSpecpr$(LEFT$(X$,P)) CHR$(32,8); 2170 IF Typ=0 THEN ; SPACE$(5) STRING$(5,8); 2180 GET Gt$ : X=INSTR(1,CHR$(13,196,198,Kstop,192,8,9),Gt$) 2190 IF X=6 AND P>0 THEN P=P-1 : X$=LEFT$(X$,P)+RIGHT$(X$,P+2) : X=0 : GOTO 2260 2200 IF X=7 THEN P=P+1+(P>=LEN(X$) OR P>=Max) : X=0 : GOTO 2260 2210 IF X<>0 THEN 2260 2220 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 2260 2230 IF Typ=0 AND INSTR(1,CHR$(193,195,197,199,209,213,215),Gt$) THEN 2250 2240 IF Gt$>CHR$(127) OR (Typ=1 AND Gt$<" ") OR (Typ=2 AND (Gt$<"0" OR Gt$>"9")) THEN ; CHR$(7); : GOTO 2260 2250 IF P1 THEN RETURN X 2400 X=INSTR(1,"JjNn",X$) : IF X=0 THEN ; CHR$(7,8); : GOTO 2380 2410 RETURN (X-1)/2+2 2420 FNEND 2430 ! 2440 DEF FNSpecpr$(T$) LOCAL P,T 2450 P=1 : WHILE P<=LEN(T$) 2460 T=ASCII(MID$(T$,P,1)) : IF T>31 THEN IF T<128 THEN ; CHR$(T); : GOTO 2500 ELSE 2480 2470 ; "<" MID$("NULSOHSTXETXEOTENQACKBELBS HT LF VT FF RETSO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ",T*3+1,3) ">"; : GOTO 2500 2480 T=INSTR(1,CHR$(193,195,197,199,209,213,215),MID$(T$,P,1)) 2490 IF T>0 THEN ; "<" MID$("RETCE < > ETXgetinp",T*3-2,3) ">"; 2500 P=P+1 : WEND : RETURN "" 2510 FNEND 2520 ! 2530 DEF FNHuvud$(Text$) 2540 WIDTH 80 : IF Abc=806 THEN POKE Atra,5 2550 RETURN GRN+CHR$(12)+"Videotex 800 Ver 1.2 - "+Text$+CHR$(10,13)+STRING$(PEEK(SYS(10)+84),ASCII("=")) 2560 FNEND 2570 ! 2580 DEF FNLine25(Nr) LOCAL I,N,A,S,F1,A$=30,B$=30 2590 DATA 2600 DATA 5,PF1," Tillbaka ",PF5 / <--," Upp ",PF7 / -->," Ned ",RET," Verkst{ll ",Tal," Snabbval " 2610 DATA 3,PF1," Tillbaka ",PF5 / <--," Upp ",PF7 / -->," Ned " 2620 DATA 7,Special-PF: 2,RETURN,4," CE ",6,<--,8,-->,SH2,CTRL-C,SH6,get,SH8,inp 2630 DATA 1,PF1,Avbryt 2640 ON Nr RESTORE 2590,2600,2610,2620,2630 2650 ! 2660 IF Abc=806 THEN F1=PEEK(Atra) : POKE Atra,1 : GOTO 2680 ! ATTR 1 2670 S=80/Wid : OUT 56,6,57,25 : A=32640 2680 FOR J=32640 TO 32720 : POKE J,32 : NEXT J 2690 ; CUR(24,0) LEFT$(BLBG+GRN,2 AND Abc=806); : READ N : WHILE I") : IF Alt=0 THEN 3340 3110 ! 3120 IF Fil THEN 3210 3130 RESTORE 540 : J=1 : WHILE J<=Alt : READ Printer$ : J=J+1 : WEND 3140 ON Alt RESTORE 560,680 3150 I=0 : WHILE I<=14 : Prk$(I)="" 3160 READ J : IF J>-1 THEN Prk$(I)=Prk$(I)+CHR$(J) : GOTO 3160 3170 I=I+1 : WEND 3180 IF Prk$(12)<>"" THEN F{rg$=Prk$(12)+RIGHT$(Prk$(12),LEN(Prk$(12))) 3190 READ Prk$(15),Vmarg,Skala,Sv{rta,J : GOTO 3300 3200 ! 3210 POSIT #3,Alt*30-26 : GET #3 Printer$ COUNT 30 3220 POSIT #3,4+Ant*30 3230 J=1 : WHILE J"" 3310 K2$=K22$ : IF J THEN POKE Prgr+63,0,0,0,0,0,0,0,0,0 ! Ej v{ndbyte 3320 Printer=Alt 3330 ! 3340 IF Fil THEN CLOSE 3 3350 RETURN 0 3360 RESUME 3370 3370 CLOSE 3 3380 Z=FNFel(8) : GOTO 2990 3390 FNEND 3400 DEF FNFinp LOCAL X$=2 3410 GET #3 X$ COUNT 2 : RETURN CVT$%(X$) 3420 FNEND 3430 ! 3440 DEF FNInitnr LOCAL A$=160 3450 ON ERROR GOTO 3510 : OPEN "VIDEOTEX.TNR" AS FILE 2 3460 FOR I=0 TO 19 3470 GET #2 A$ : GET #2 Namn$(I,0) COUNT ASCII(A$) 3480 GET #2 A$ : GET #2 Namn$(I,1) COUNT ASCII(A$) 3490 GET #2 A$ : GET #2 Tele$(I) COUNT ASCII(A$) 3500 NEXT I : CLOSE : RETURN 0 3510 RESUME 3520 3520 ON ERROR GOTO 3530 Z=FNFel(5-(ERRCODE<>21)) : RETURN -1 3540 FNEND 3550 ! 3560 DEF FNTermopt(Chain$) LOCAL I 3570 IF Abc<>806 THEN RETURN 0 3580 IF PEEK(PEEK2(116)+3)<>195 THEN 3600 3590 IF PEEK2(PEEK2(116)+4)<>0 THEN RETURN 0 3600 I=1 : WHILE I<=LEN(Chain$)+1 3610 POKE 64512+I,ASCII(MID$(Chain$+CHR$(255),I,1)) 3620 I=I+1 : WEND 3630 ON ERROR GOTO 3640 : CHAIN "TERMOPT" 3640 ; "Kan inte hitta programmet TERMOPT.BAC" 3650 STOP 3660 FNEND 3670 ! 3680 DEF FNFel(N) LOCAL I$=1 3690 ; CUR(21,0) CHR$(7) RED NWBG YEL "> "; 3700 ON N GOTO 3710,3720,3730,3740,3750,3760,3760,3770 3710 STOP 3720 ; "Fel" ERRCODE "vid anrop av '" A$ "'"; : GOTO 3780 3730 ; "Hittar inte programmet '" A$ "'"; : GOTO 3780 3740 STOP 3750 ; "Hittar inga telefonnummer (filen 'VIDEOTEX.TNR')"; : GOTO 3780 3760 ; "Fel" ERRCODE "vid " MID$(" l{sskriv",N*5-29,5) "ning av 'VIDEOTEX.TNR'"; : GOTO 3780 3770 ; "Fel" ERRCODE "vid l{sning av skrivardata fr}n 'VIDEOTEX.PR'"; : GOTO 3780 3780 ; " < " BLBG " " : ; RED "Tryck p} CE..."; 3790 WHILE I$<>CHR$(24) : GET I$ : WEND 3800 RETURN 0 3810 FNEND