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