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