1 REM Ins{nd av Kristoffer Eriksson <5357> 1988-12-12 21.54.27 (KERMIT) 10 ! save MF0:VTEXDEF, 1984-11-08 14.09 20 EXTEND : INTEGER : OPTION BASE 0 30 Kstop=192 ! PF1 40 Km=1 50 ! 60 IF PEEK2(38)=1025 THEN Abc=806 ELSE Abc=802 70 Atra=PEEK2(116)+6 80 Fwid=PEEK2(SYS(10)+84) 90 DIM Prk$(19,15)=15,Printer$(19)=30,Printer(19,3),F{rg$(19) 100 ! 110 ! 0=Mata 1 lin, 1=mata 2, 2=mata 9, 3=norm radavs, 4=mata 7, 5=margstil 120 ! 6-8=stil 1-3, 9=grafik 1 & sv{rta 2, 10=grafik 2 & 3, 11=init, 12=f{rger 130 ! 13=V{lj f{rg, 14=Pixels v{nster,h|ger halva, stil 1-3 140 ! 150 ! Nedan: Standardpr, antal pr, deras namn, pr-data 160 DATA 1,2 170 DATA EPSON,C.ITOH M-1550 S/SC 180 ! 190 DATA 27,65,1,13,10,-1 200 DATA 27,65,1,13,10,-1 210 DATA 27,65,9,13,10,-1 220 DATA 27,65,12,-1 230 DATA 27,65,7,13,10,-1 240 DATA 15,-1, 15,-1, 18,-1, 18,14,-1 250 DATA 27,42,0,128,-1, 27,42,1,128,-1 260 DATA 27,64,-1, -1, -1, 3,4,3,3,6,6,-1 270 DATA PR:VSA70A72.55 280 DATA 5,2,1,-1 290 ! 300 ! C.ITOH M-1550 S/SC 310 DATA 27,84,48,50,13,10,-1 320 DATA 27,84,48,52,13,10,-1 330 DATA 27,84,49,56,13,10,-1 340 DATA 27,84,50,52,-1 350 DATA 27,84,49,53,13,10,-1 360 DATA 27,78,15,-1, 27,81,15,-1, 27,78,15,-1, 27,78,14,-1 370 DATA 27,78,15,27,83,132,-1, 27,81,15,27,83,132,-1 380 DATA 27,61,48,27,67,80,48,49,50,51,52,53,54,55,-1 390 DATA 48,50,53,49,54,51,52,55,-1, 27,67,-1, 4,4,4,4,8,8,-1 400 DATA PR:VSA70A72.55 410 DATA 5,2,1,0 420 ! 430 Z=FNInitpr+FNHuvmen 440 ON ERROR GOTO 450 : CHAIN "XSMENU0" 450 END 460 ! 470 DEF FNHuvmen LOCAL Alt,Skrv 480 Alt=1 : Skrv=1 490 WIDTH 80 500 IF Abc=806 THEN POKE Atra,5 ! ATTRIBUTE 5 510 ; FNHuvud$("Huvudmeny") : ; CUR(0,49) "Skrivare:" YEL 520 ; CUR(23,0) "Kristoffer Eriksson."; 530 ; CUR(5,4) "1. [ndra skrivarkoder" 540 ; " 2. [ndra standard-utskriftsparametrar" 550 ; " 3. St{ll standardskrivare" 560 ; " 4. Spara inst{llningarna" 570 ; " 5. Gl|m alla osparade {ndringar" 580 ; " 6. Avsluta" 590 ; " 0. Huvudmenyn" 600 FOR I=0 TO Antpr+(Antpr=20) 610 ; USING "&## & &" CUR(2+I,44) I+1 MID$("* ",(I=Stdpr-1)+2,1) Printer$(I); 620 NEXT I 630 Alt=FNV{lj(5,4,1,0,7,Alt,"-->") 640 IF Alt>3 THEN 670 650 Z=FNV{lj(2,44,1,-1,Antpr-(Antpr<20),Skrv,"-->") : IF Z=0 THEN 510 660 Skrv=Z 670 ON Alt GOTO 690,710,730,750,770,790,850 680 ! _Skrvkoder__ 690 Z=FNSt{llprkod(Skrv-1) : GOTO 490 700 ! _Utskrpar__ 710 Z=FNSt{llparm(Skrv-1) : GOTO 490 720 ! _Stdprint__ 730 Stdpr=Skrv : GOTO 490 740 ! _Spara__ 750 Z=FNLagrapr : GOTO 490 760 ! _Gl|m__ 770 Z=FNInitpr : Alt=1 : GOTO 490 780 ! _Slut__ 790 Z=FNJanej(CUR(15,0)+"Har du sparat dina {ndringar") 800 IF Z<>2 AND Z<>1 THEN Alt=4 : GOTO 490 810 ; CUR(23,0) SPACE$(60) CUR(14,0) SPACE$(40) CUR(13,0) 820 IF Abc=802 THEN OUT 56,6,57,24 ELSE ; CUR(24,0) SPACE$(80) CUR(13,0) 830 WIDTH Fwid : RETURN 0 840 ! _Huvprog__ 850 IF PEEK(65507)<>13 THEN 490 860 Z=FNJanej(CUR(15,0)+"Har du sparat dina {ndringar") 870 IF Z<>2 AND Z<>1 THEN Alt=4 : GOTO 490 880 Dv$="RAM:" : F$="VIDEOTXA" 890 ON ERROR GOTO 900 : CHAIN Dv$+F$ 900 RESUME 910 910 ON ERROR GOTO 920 : CHAIN F$ 920 ; CUR(20,0) RED CHR$(7); 930 ; "S{tt i programdisketten med '" F$ "'." 940 ; RED "Tryck p} RETURN !" 950 A$="" : WHILE A$<>CHR$(13) : GET A$ : WEND 960 RESUME 490 970 FNEND 980 ! 990 DEF FNV{lj(R,K,D,S,Antal,Start,P$) LOCAL Galt,Alt,Gt$=1,Fr 1000 Z=FNLine25(2) 1010 Fr=R+D*Antal-(D=1) 1020 ; CUR(Fr,K) CYA CUR(Fr,K) "Vilket alternativ ?"; 1030 Alt=Start-1 1040 ; CUR(R+D*Galt,K-LEN(P$)) SPACE$(LEN(P$)); 1050 ; CUR(R+D*Alt,K-LEN(P$)) P$ CUR(Fr,K+19);Alt+1 AND (Alt<>Antal-1 OR S); 1060 Galt=Alt 1070 GET Gt$ : IF Gt$<"1" OR Gt$>"9" THEN 1110 1080 IF Antal<10 IF Gt$<=NUM$(Antal) THEN Alt=VAL(Gt$)-1 : GOTO 1040 ELSE 1040 1090 Alt=Alt+1 : Z=SYS(6)+FNInp(1,Antal,VARPTR(Alt),Fr,K+18) : Alt=Alt-1 1100 IF O{ndr THEN Z=SYS(6) ELSE 1040 1110 ON INSTR(1,CHR$(48,8,9,196,198,Kstop,13),Gt$)+1 GOTO 1070,1120,1130,1140,1130,1140,1150,1160 1120 Alt=Antal-1 : GOTO 1040 1130 IF Alt>0 THEN Alt=Alt-1 : GOTO 1040 ELSE Alt=Antal-1 : GOTO 1040 1140 IF Alt=1 AND I<=12 1210 I=I+FNParm(I,Skrv) 1220 WEND : RETURN 0 1230 FNEND 1240 ! 1250 DEF FNParm(Nr,Skrv) LOCAL X 1260 IF O{ndr THEN 1380 1270 IF LEN(F{rg$(Skrv))<9 THEN F{rg$(Skrv)=STRING$(9,0) 1280 ; FNHuvud$("St{ll parametrar") 1290 ; YEL : ; "Skrivare" Skrv+1 "= " Printer$(Skrv) 1300 ; : ; "Utskriftsskala 1/2/3 (" NUM$(Printer(Skrv,1)) ")" 1310 ; "V{nstermarginal (" NUM$(Printer(Skrv,0)) ")" 1320 ; "Sv{rta 1/2 (" NUM$(Printer(Skrv,2)) ")" 1330 DATA Svart grafik,R|d,Gr|n,Gul,Bl},Magenta,Cyan,Vit,Svart text 1340 ; : RESTORE 1330 : X=1 : WHILE X<10 1350 READ A$ : ; A$ TAB(14) "0-7 (" NUM$(INSTR(1,Prk$(Skrv,12),MID$(F{rg$(Skrv),X,1))-1) ")" 1360 X=X+1 : WEND 1370 Z=FNLine25(3) 1380 IF Nr<4 THEN ON Nr GOTO 1390,1400,1410 ELSE 1420 1390 RETURN FNInp(1,3,VARPTR(Printer(Skrv,1)),6,29) 1400 RETURN FNInp(0,999,VARPTR(Printer(Skrv,0)),7,29) 1410 RETURN FNInp(1,2,VARPTR(Printer(Skrv,2)),8,29) 1420 X=INSTR(1,Prk$(Skrv,12),MID$(F{rg$(Skrv),Nr-3,1))-1 1430 Z=FNInp(0,7,VARPTR(X),Nr+6,24) : IF O{ndr THEN RETURN Z 1440 MID$(F{rg$(Skrv),Nr-3,1)=MID$(Prk$(Skrv,12)+STRING$(12,0),X+1,1) : RETURN 1 1450 FNEND 1460 ! 1470 DEF FNSt{llprkod(Skrv) LOCAL I,X,X$=40,Alt 1480 ; FNHuvud$("[ndra skrivarkoder f|r skrivare "+NUM$(Skrv+1)) 1490 DATA 0,Mata upp 1 linje,1,Mata upp 2 linjer,4,Mata upp 7 linjer 1500 DATA 2,Mata upp 9 linjer,3,St{ll normalt radavst}nd 1510 DATA 5,Start av marginalstil,6,Start av smal stil,7,Start av normal stil 1520 DATA 8,Start av bred stil,9,Start av t{t grafik,10,Start av gles grafik 1530 DATA 11,Nollst{llning av skrivaren,12,Kodnr f|r alla f{rger 1540 DATA 13,Stomme f|r f{rgval,15,Kommunikationsparametrar 1550 ; YEL CUR(2,4) "1 Skrivarens namn: " Printer$(Skrv) 1560 RESTORE 1490 : I=0 : WHILE I<15 1570 READ X,X$ : ; USING "&## &: &" CUR(I+3,3) I+2 X$ FNSpecpr$(Prk$(Skrv,X),Km); 1580 I=I+1 : WEND 1590 ; CUR(18,3) "17 Bit 0 |verst i grafik: " MID$("JN",Printer(Skrv,3)+2,1) 1600 ; " 18 Grafiktecknens bredd: " FNSpecpr$(Prk$(Skrv,14),2) 1610 ! 1620 Alt=FNV{lj(2,3,1,-1,18,(Alt AND (Alt<>18))+1,"-->") 1630 ; CUR(20,0) SPACE$(240) CUR(20,0); 1640 IF Alt=0 THEN RETURN 0 1650 IF Alt=1 THEN 1730 1660 IF Alt=17 THEN 1780 1670 IF Alt=18 THEN Z=FNSt{llbrd(Skrv) : GOTO 1480 1680 RESTORE 1490 : I=1 : WHILE I"" THEN Antpr=Antpr+1 1760 IF Skrv+1=Antpr AND X$="" THEN Antpr=Antpr-1 : IF Stdpr>Antpr THEN Stdpr=Antpr 1770 GOTO 1480 1780 ; CYA : Z=FNJanej("[r bit 0 |verst i grafiken J/N ") 1790 IF Z=2 OR Z=3 THEN Printer(Skrv,3)=Z-3 1800 GOTO 1480 1810 FNEND 1820 ! 1830 DEF FNSt{llbrd(Skrv) LOCAL I 1840 O{ndr=0 : I=1 : WHILE I>=1 AND I<=6 1850 I=I+FNBrd(I,Skrv) 1860 WEND : RETURN 0 1870 FNEND 1880 DEF FNBrd(Nr,Skrv) LOCAL X,I,Brd$=6 1890 IF O{ndr THEN 1970 1900 IF LEN(Prk$(Skrv,14))<6 THEN Prk$(Skrv,14)=STRING$(6,0) 1910 ; FNHuvud$("Grafiktecknens bredder") YEL 1920 ; : ; "Smal stil / Sv{rta 2" : ; : ; "Normal stil" : ; : ; "Bred stil" 1930 I=1 : WHILE I<7 1940 ; CUR(3+I,25) MID$("H|ger V{nster ",(I AND 1)*8+1,8) ASCII(MID$(Prk$(Skrv,14),I,1)) 1950 I=I+1 : WEND 1960 Z=FNLine25(3) 1970 X=FNInp(0,255,VARPTR(I),Nr+3,38) 1980 IF O{ndr=0 THEN MID$(Prk$(Skrv,14),Nr,1)=CHR$(I) 1990 RETURN X 2000 FNEND 2010 ! 2020 DEF FNInp(Min,Max,Adr,Rad,Kol) LOCAL X,X$=6 2030 ; CUR(Rad,Kol) CYA CUR(Rad,Kol) "? "; 2040 X=FNGet(LEN(NUM$(Max)),VAROOT(X$),NUM$(PEEK2(Adr)),2) 2050 IF X$="" OR O{ndr THEN RETURN X ELSE X=VAL(X$) 2060 IF XMax THEN ; CHR$(7); : GOTO 2030 2070 POKE Adr,X,SWAP%(X) : RETURN 0 2080 FNEND 2090 ! 2100 ! Typ: 0=alla koder, 1=alfanumeriskt, 2=numeriskt 2110 DEF FNGet(Max,Adr,Deflt$,Typ) LOCAL X,P,X$=320,Gt$=1,R,K 2120 X$=Deflt$ : X=0 : O{ndr=-1 : K=PEEK(SYS(10)+82) : R=PEEK(SYS(10)+83) 2130 IF Typ=0 THEN Z=FNLine25(4) 2140 ; CUR(R,K) CYA CUR(R,K) SPACE$(Max); 2150 WHILE X=0 2160 ; CUR(R,K) FNSpecpr$(LEFT$(X$,P),Km) 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,213),Gt$) 2190 IF X=6 AND P>0 THEN P=P-1 : X$=LEFT$(X$,P)+RIGHT$(X$,P+2) : X=0 : GOTO 2290 2200 IF X=7 THEN P=P+1+(P>=LEN(X$) OR P>=Max) : X=0 : GOTO 2290 2210 IF X<>0 THEN 2290 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 2290 2230 IF Typ<>0 THEN 2270 2240 IF Gt$=CHR$(215) THEN ; CHR$(63,8); : GET Gt$ : Gt$=CHR$((ASCII(Gt$) AND 31)+128) : GOTO 2280 2250 X=INSTR(1,CHR$(193,195,197,199,209),Gt$) : IF X=0 THEN 2270 2260 Gt$=MID$(CHR$(13,24,8,9,3),X,1) : X=0 : GOTO 2280 2270 IF Gt$>CHR$(127) OR (Typ=1 AND Gt$<" ") OR (Typ=2 AND (Gt$<"0" OR Gt$>"9")) THEN ; CHR$(7); : GOTO 2290 2280 IF P1 THEN RETURN X 2440 X=INSTR(1,"JjNn",X$) : IF X=0 THEN ; CHR$(7,8); : GOTO 2420 2450 RETURN (X-1)/2+2 2460 FNEND 2470 ! 2480 DEF FNSpecpr$(T$,M) LOCAL P,T 2490 P=1 : WHILE P<=LEN(T$) 2500 T=ASCII(MID$(T$,P,1)) : IF T>192 THEN 2570 2510 IF T>31 AND T<128 THEN ; CHR$(T); : GOTO 2590 2520 ON M-(M=1 AND T>127) GOTO 2560,2530,2540,2550 2530 ; "<" NUM$(T) ">"; : GOTO 2590 2540 ; "<" HEX$(T) ">"; : GOTO 2590 2550 ; "<" OCT$(T) ">"; : GOTO 2590 2560 ; "<" MID$("NULSOHSTXETXEOTENQACKBELBS HT LF VT FF CR SO SI DLEDC1DC2DC3DC4NAKSYNETBCANEM SUBESCFS GS RS US ",T*3+1,3) ">"; : GOTO 2590 2570 T=INSTR(1,CHR$(193,195,197,199,209,213,215),MID$(T$,P,1)) 2580 IF T>0 THEN ; "<" MID$("RETCE < > ETXgetinp",T*3-2,3) ">"; 2590 P=P+1 : WEND : RETURN "" 2600 FNEND 2610 ! 2620 DEF FNHuvud$(Text$)=GRN+CHR$(12)+"Videotex 800 Skrivarkoder Ver 1.0 - "+Text$+CHR$(10,13)+STRING$(PEEK2(SYS(10)+84),ASCII("="))+CHR$(10,13) 2630 ! 2640 DEF FNLine25(Nr) LOCAL I,N,A,F1,S,A$=30,B$=30 2650 DATA 2660 DATA 5,SHPF1," Tillbaka ",PF5 / <--," Upp ",PF7 / -->," Ned ",RET," Verkst{ll ",Tal," Snabbval " 2670 DATA 3,SHPF1," Tillbaka ",PF5 / <--," Upp ",PF7 / -->," Ned " 2680 DATA 6,Special-PF: 2,RETURN,4," CE ",6," <-- ",8," --> ",SH2,CTRL-C,SH6,byt CTRL-visn 2690 ON Nr RESTORE 2650,2660,2670,2680 2700 ! 2710 IF Abc=806 THEN F1=PEEK(Atra) : POKE Atra,1 : GOTO 2730 ! ATTRIBUTE 1 2720 S=80/Wid : OUT 56,6,57,25 : A=32640 2730 FOR J=32640 TO 32720 : POKE J,32 : NEXT J 2740 ; CUR(24,0) BLBG GRN; : READ N : WHILE I-1 THEN Prk$(Skrv,I)=Prk$(Skrv,I)+CHR$(J) : GOTO 2970 2980 I=I+1 : WEND 2990 READ Prk$(Skrv,15) 3000 I=0 : WHILE I<4 : READ Printer(Skrv,I) : I=I+1 : WEND 3010 IF Prk$(Skrv,12)<>"" THEN F{rg$(Skrv)=Prk$(Skrv,12)+RIGHT$(Prk$(Skrv,12),LEN(Prk$(Skrv,12))) 3020 Skrv=Skrv+1 : WEND : GOTO 3130 3030 ! 3040 Skrv=0 : WHILE Skrv