1 REM Ins{nd av Kristoffer Eriksson <5357>    1988-12-12 22.04.49 (KERMIT)
10 ! save VIDEOTXP,  1984-11-09 13.00
20 ! St{llning av skrivar/v24-parametrar
30 INTEGER : EXTEND : OPTION BASE 0
40 ! 
50 Par=1 ! 1=skrivare, 2=V24:
60 IF PEEK(39)=4 THEN Abc=806 ELSE Abc=802
70 Atra=PEEK2(116)+6
80 ! 
90 DIM V$(14,9)=35,K$(14,9)=1,Nu(14)
100 DATA Kanal:,0
110 DATA Typ:,3,Normal,V,Centronics,C,SP1,P
120 DATA Typ:,4,Videotex,W,ADM-3A-terminal,T,UART,U,Normal,V
130 DATA Paritet:,4,J{mn,A,Udda,B,Mark,C,Space,D
140 DATA XON/XOFF:,2,Anv{nds,A,Anv{nds ej,I
150 DATA Radl{ngd (tecken/rad):,7,40,1,72,2,80,3,120,4,132,5,158,6,254,7
160 DATA Sidl{ngd (rader/sida) (1-99):,0
170 DATA F|rdr|jning vid radmatning (0-26):,0
180 DATA Radframmatning vid ny sida (0-9):,0
190 DATA Sidframmatning:,2,Simulerad,B,Inbyggd,A
200 DATA Duplex:,2,Halv,E,Full,A
210 DATA Mottagnings-hastighet (baud):,9,75,0,110,1,300,2,600,3,1200,4,2400,5,4800,6,9600,7,19200,8
220 DATA S{ndnings-hastighet (baud):,9,75,0,110,1,300,2,600,3,1200,4,2400,5,4800,6,9600,7,19200,8
230 DATA [r inst{llningen korrekt,3,"Ja    ",,"Nej   ",,Avbryt,""
240 ! 
250 ! Vilket tecken i str{ngen h|r varje v{rde i v$ ihop med,typ:
260 ! (a=Menyval, b=2-siffrigt tal, c=1-siffrigt tal, d=bokstav A-Z, e=kanal)
270 DATA 0,e,1,a,1,a,2,D,2,I,4,a,7,b,3,d,5,c,6,B,6,E,10,a,11,a
280 ! 
290 RESTORE 
300 FOR I=1 TO 14
310   READ V$(I,0),K$(I,0)
320   IF LEN(V$(I,0))<35 THEN V$(I,0)=V$(I,0)+SPACE$(35-LEN(V$(I,0)))
330   FOR J=1 TO VAL(K$(I,0))
340     READ V$(I,J),K$(I,J)
350     ! IF LEN(V$(I,J))<5 THEN V$(I,J)=V$(I,J)+SPACE$(5-LEN(V$(I,J)))
360   NEXT J 
370 NEXT I 
380 ! 
390 Parm$=FNKomparm$("PR:VSA56C72.55")
400 ; CUR(20,0) Parm$
410 ! _____
420 DEF FNHuvud$(Text$)
430   WIDTH 80 : IF Abc=806 THEN POKE Atra,5
440   RETURN GRN+CHR$(12)+"Videotex 800 Ver 1.1 - "+Text$+CHR$(10,13)+STRING$(PEEK2(SYS(10)+84)-1,ASCII("="))
450 FNEND 
460 ! 
470 DEF FNInv$(T$) LOCAL I
480   IF Abc=806 THEN ; NWBG BLK T$ HIDE BLBG; : RETURN ""
490   I=1 : WHILE I<=LEN(T$)
500     PUT CHR$(ASCII(MID$(T$,I,1)) OR 128)
510   I=I+1 : WEND 
520   RETURN ""
530 FNEND 
540 ! 
550 DEF FNParmvis$(Nr) LOCAL I,J,Rad,Kol
560   Rad=Nr+3+(Nr>Par+1 AND Nr<14)
570   ; CUR(Rad,0) V$(Nr,0); : Kol=LEN(V$(Nr,0))
580   IF Nr=1 THEN ; Kanal$ "    "; : GOTO 660
590   IF VAL(K$(Nr,0))<=0 THEN ; NUM$(Nu(Nr)) " "; : GOTO 660
600   J=1 : WHILE J<=VAL(K$(Nr,0))
610     IF Nu(Nr)=J THEN 630
620     ; V$(Nr,J) " "; : GOTO 640
630     Kol=PEEK(SYS(10)+82) : ; FNInv$(V$(Nr,J)+" ");
640   J=J+1 : WEND 
650   ; " ";
660   RETURN CUR(Rad,Kol)
670 FNEND 
680 ! 
690 DEF FNPosval(Nr) LOCAL Gt$=1,I
700   WHILE 1
710     GET Gt$
720     I=INSTR(1,CHR$(8,9,13,196,192,198),Gt$)
730     ON I+1 GOTO 740,750,760,790,800,800,800
740     ; CHR$(7); : GOTO 780
750     Nu(Nr)=Nu(Nr)+(Nu(Nr)>1) : GOTO 770
760     Nu(Nr)=Nu(Nr)-(Nu(Nr)"0" THEN Nu(Nr)=FNPosval(Nr) : GOTO 1030
960     IF Nr=7 THEN Nu(Nr)=FNInp(1,99,Nu(Nr)) : GOTO 1030
970     IF Nr=8 THEN Nu(Nr)=FNInp(0,27,Nu(Nr)) : GOTO 1030
980     IF Nr=9 THEN Nu(Nr)=FNInp(0,9,Nu(Nr)) : GOTO 1030
990     X$=FNGet$(4,Kanal$,1)
1000     IF INSTR(1,X$,":")=0 THEN X$=X$+":"
1010     IF X$=":" OR LEN(X$)>4 OR INSTR(1,X$,":")<>LEN(X$) THEN ; CHR$(7); : GOTO 990
1020     Kanal$=X$
1030     ; YEL FNParmvis$(Nr)
1040     Nr=MOD(Nr-1+Op,13)+1
1050     IF Nr=(Par XOR 3)+1 THEN 1040
1060   WEND 
1070   ! 
1080   Nu(14)=1 : ; CYA FNParmvis$(14);
1090   ON FNPosval(14) GOTO 1100,1110,1120
1100   IF Op>0 THEN RETURN FNS{ttihop$
1110   ; CHR$(13) SPACE$(80); : GOTO 920
1120   RETURN Deflt$
1130 FNEND 
1140 ! 
1150 DEF FNDelaupp(Parm0$) LOCAL A,B,C,Typ$=1,Mask,P,Parm$=16
1160   Parm$=Parm0$
1170   P=INSTR(1,Parm$,":")
1180   MID$(Parm$,P+2,1)=CHR$(64+INSTR(1,"ABCDTUVWEOMSFGHI",MID$(Parm$,P+2,1)))
1190   RESTORE 270
1200   A=1 : WHILE A<=13
1210     READ B,Typ$
1220     IF Typ$="e" THEN Kanal$=LEFT$(Parm$,P) : GOTO 1300
1230     IF Typ$="d" THEN Nu(A)=ASCII(MID$(Parm$,P+B,1))-65 : GOTO 1300
1240     IF Typ$="c" THEN Nu(A)=VAL(MID$(Parm$,P+B,1)) : GOTO 1300
1250     IF Typ$="b" THEN Nu(A)=VAL(MID$(Parm$,P+B,2)) : GOTO 1300
1260     IF Typ$="a" THEN Mask=127 ELSE Mask=ASCII(Typ$)-1
1270     C=1 : WHILE C<=VAL(K$(A,0))
1280       IF CHR$((Mask AND ASCII(MID$(Parm$,P+B,1))-1)+1)=K$(A,C) THEN Nu(A)=C
1290     C=C+1 : WEND 
1300   A=A+1 : WEND 
1310   RETURN 0
1320 FNEND 
1330 ! 
1340 DEF FNS{ttihop$ LOCAL Parm$=16,A,B,C
1350   Parm$=STRING$(8,1)+"."+CHR$(1,1,1)
1360   RESTORE 270
1370   A=1 : WHILE A<=13
1380     READ B,Typ$
1390     IF A=(Par XOR 3)+1 THEN 1450
1400     IF Typ$="e" THEN 1450
1410     IF Typ$="d" THEN MID$(Parm$,B,1)=CHR$(Nu(A)+65) : GOTO 1450
1420     IF Typ$="c" THEN MID$(Parm$,B,1)=CHR$(Nu(A)+48) : GOTO 1450
1430     IF Typ$="b" THEN MID$(Parm$,B,2)=STRING$(-(Nu(A)<10),48)+NUM$(Nu(A)) : GOTO 1450
1440     MID$(Parm$,B,1)=CHR$((ASCII(MID$(Parm$,B,1))-1 OR ASCII(K$(A,Nu(A)))-1)+1)
1450   A=A+1 : WEND 
1460   MID$(Parm$,2,1)=MID$("ABCDTUVWEOMSFGHI",ASCII(MID$(Parm$,2,1))-64,1)
1470   Parm$=Kanal$+Parm$
1480   WHILE RIGHT$(Parm$,LEN(Parm$))=" " : Parm$=LEFT$(Parm$,LEN(Parm$)-1) : WEND 
1490   RETURN Parm$
1500 FNEND 
1510 ! 
1520 DEF FNInp(Min,Max,Deflt) LOCAL X,X$=6
1530   X$=FNGet$(LEN(NUM$(Max)),NUM$(Deflt),2)
1540   IF X$="" OR O{ndr THEN RETURN Deflt ELSE X=VAL(X$)
1550   IF XMax THEN ; CHR$(7); : GOTO 1530
1560   RETURN X
1570 FNEND 
1580 ! 
1590 ! Typ: 0=alla koder, 1=alfanumeriskt, 2=numeriskt
1600 DEF FNGet$(Max,Deflt$,Typ) LOCAL X,P,X$=320,Gt$=1,R,K
1610   X$=Deflt$ : X=0 : O{ndr=-1 : K=PEEK(SYS(10)+82) : R=PEEK(SYS(10)+83)
1620   ; CYA;
1630   WHILE X=0
1640     ; CUR(R,K) LEFT$(X$+STRING$(Max,95),Max) CUR(R,K+P);
1650     GET Gt$ : X=INSTR(1,CHR$(13,196,198,Kstop,192,8,9,24,199),Gt$)
1660     ON X+1 GOTO 1720,1750,1750,1750,1750,1750,1670,1680,1690,1700
1670     IF Max>1 THEN P=P+(P>0) : GOTO 1740 ELSE 1750
1680     P=P-(PR OR PEEK(SYS(10)+82)>K : ; CHR$(8,95,8); : WEND : X$=RIGHT$(X$,P+1) : P=0 : GOTO 1740
1700     IF LEN(X$) THEN P=P+(P>=LEN(X$)) ELSE 1740
1710     X$=LEFT$(X$,P)+RIGHT$(X$,P+2) : P=P+(P>LEN(X$)) : GOTO 1740
1720     IF Gt$>CHR$(127) OR (Typ=1 AND Gt$<" ") OR (Typ=2 AND (Gt$<"0" OR Gt$>"9")) THEN ; CHR$(7); : GOTO 1740
1730     IF PMax THEN X$=LEFT$(X$,Max)
1810   IF Deflt$<>X$ THEN O{ndr=0
1820   Op=1 : RETURN X$
1830 FNEND