10 REM . SAVE SETUP .BAC 11 REM 84-10-12 12 REM DAVID ANDERSSON 13 REM 14 REM S[TT INITIALV[RDEN P] 15 REM PARAMETRAR I TERM100 16 REM VERSION 1.4 17 REM 18 REM Klarar 40 tecken och TKN80 19 REM 100 REM INIT 110 DIM A%(88%),A0%(88%) 111 GOSUB 800 : ; : ; : REM INIT SCREEN 120 ; 'L{ser in aktuell inst{llning.' : ; 130 GOSUB 1000 140 FOR A%=0% TO 88% : A0%(A%)=A%(A%) : NEXT A% 200 REM MAIN 210 H$='' 220 GOSUB 800 : REM INIT SCREEN 230 REM 240 ; CUR(2%,0%); 250 ; ' St{ll in f|rvalsf{rden f|r' 260 ; ' inst{llningar i TERM100.' 270 ; 280 ; 290 ; ' Typ av inst{llning Tryck' 300 ; ' ------------------ -----' 310 ; 320 ; ' KOMMUNIKATIONS-DATA . . . . . . . R' 330 ; 340 ; ' TERMINAL-KARAKT[RISTIK . . . . . . T' 350 ; 360 ; ' FILHANTERING . . . . . . . . . . . Y' 370 ; 380 ; ' ANV[NDAR-DEFINIERADE TANGENTER . . U' 390 ; 400 ; ' VISA DENNA MENY . . . . MELLANSLAG' 410 ; 420 ; ' GE HJ[LPINFORMATION . . . . . . . ?' 430 ; 440 ; ' KLAR (spara inst{llning) . . CTRL-@' 450 REM 460 GOSUB 6800 : REM GET 470 REM 480 IF A$=' ' GOTO 200 490 IF A$='R' OR A$='r' OR A$=CHR$(18%) THEN GOSUB 2000 : GOTO 470 500 IF A$='T' OR A$='t' OR A$=CHR$(20%) THEN GOSUB 3000 : GOTO 470 510 IF A$='Y' OR A$='y' OR A$=CHR$(25%) THEN GOSUB 4000 : GOTO 470 520 IF A$='U' OR A$='u' OR A$=CHR$(21%) THEN GOSUB 5000 : GOTO 470 521 IF A$='I' OR A$='i' THEN GOSUB 5500 : GOTO 470 530 IF A$='?' OR A$='+' THEN GOSUB 7000 : GOTO 470 540 IF A$=CHR$(0%) OR A$=CHR$(17%) OR A$=CHR$(28%) GOTO 600 550 ; CHR$(7%); : GOTO 450 600 REM AVSLUTA 610 GOSUB 800 : ; : REM INITSCREEN 620 IF B% FOR A%=0% TO 88% : IF A%(A%)=A0%(A%) NEXT A% : ; 'Ingen {ndring' : END 630 ; 'Ska ny inst{llning sparas (N/J) ?'; 640 GOSUB 6900 : REM J/N 641 IF R%<1% ; 'Nej' : END 660 ; 'Ja' : ; : ; 'Nya data sparas p} fil' : ; 670 GOSUB 1500 680 END 800 REM INIT SCREEN 805 L%=PEEK(590%) 810 ; CHR$(12%); 820 ; STRING$(L%/2%-8%,61%)' SETUP TERM100 'STRING$(L%/2%-7%,61%) 831 RETURN 850 REM FOTNOT 860 ; CUR(23%,0%)'(MELLANSLAG = g} till huvudmeny)'; 870 ; CUR(22%,0%); 880 RETURN 900 REM  910 IF INSTR(1%,' RTYUIrtyui?+',A$) R%=1% : RETURN 920 IF INSTR(1%,'RTYU@Q\',CHR$(ASC(A$)+64%)) R%=1% : RETURN 930 R%=0% : RETURN 1000 REM  L[S FIL 1010 B%=1% : ONERRORGOTO 1200 1020 OPEN 'VTINIDAT.ITH' ASFILE 1% 1030 H$='0123456789ABCDEF' 1040 REM 1050 INPUTLINE #1%,A$ : IF LEN(A$)=2% GOTO 1050 ELSE IF LEFT$(A$,7%)=":000000" GOTO 1140 1060 P%=2% : GOSUB 1120 : A1%=X%-1% 1070 GOSUB 1120 : A3%=X%*256% : GOSUB 1120 : A3%=A3%+X% : P%=P%+2% : IF A0%=0% A0%=A3% 1080 FOR A%=A3%-A0% TO A%+A1% 1090 GOSUB 1120 : IF A%<0% OR A%>88% OR X%<0% OR X%>255% 1180 1100 A%(A%)=X% : NEXT A% 1110 GOTO 1040 1120 REM 1130 X%=INSTR(1%,H$,MID$(A$,P%,1%))*16%+INSTR(1%,H$,MID$(A$,P%+1%,1%))-17% : P%=P%+2% : RETURN 1140 REM 1150 CLOSE 1% : ONERRORGOTO 0 1160 RETURN 1170 REM 1180 ; 'Internt formatfel i filen VTINIDAT.ITH' 1190 END 1200 REM 1210 B%=0% 1220 IF ERRCODE<>21% ; 'Error'ERRCODE : END 1230 ; 'Hittar ej filen VTINIDAT.ITH' : ; 1240 ; 'Ska en ny fil skapas ? (J/N)'; 1250 GOSUB 6900 : REM J/N 1260 IF R%<0% ; 'Nej' : END 1270 ; 'Ja' 1280 REM INIT TABLE 1290 A0%=52911% : REM INIT DATA AREA 1300 FOR A%=0% TO 88% : A%(A%)=0% : NEXT A% 1310 A%(0%)=2% : A%(1%)=0% : A%(2%)=1% : A%(3%)=1% : A%(4%)=32% : A%(7%)=6% : A%(8%)=6% : A%(10%)=8% 1320 RETURN 1500 REM  SKRIV FIL 1510 H$='0123456789ABCDEF' 1520 ONERRORGOTO 1700 1530 PREPARE 'VTINIDAT.ITH' ASFILE 1% 1540 ; #1% 1560 C%=0% : A$='' 1580 FOR A%=0% TO 88% 1581 IF A$='' X%=SWAP%(A0%+A%) : GOSUB 1660 : X%=A0%+A% : GOSUB 1660 : X%=0% : GOSUB 1660 1590 X%=A%(A%) : GOSUB 1660 : IF LEN(A$)>=40% GOSUB 1683 1600 NEXT A% 1610 IF LEN(A$) GOSUB 1683 1630 ; #1%':00000001FF' 1640 CLOSE 1% : ONERRORGOTO 0 1650 RETURN 1660 REM PUT HEX 1670 A$=A$+MID$(H$,(X% AND 240%)/16%+1%,1%)+MID$(H$,(X% AND 15%)+1%,1%) 1680 C%=C%+X% 1682 RETURN 1683 REM 1685 X%=-C% : GOSUB 1660 : X$=A$ 1686 X%=LEN(A$)/2%-4% : A$='' : GOSUB 1660 : ; #1%':'A$X$ : C%=0% : A$='' 1690 RETURN 1700 REM ERROR 1710 ; 'ERROR'ERRCODE : ; 'Filen blev inte korrekt uppdaterad.' 1720 CLOSE 1% 1730 RETURN 2000 REM  SETUP R 2010 H$='R' 2020 GOSUB 800 2030 REM 2040 ; CUR(2%,0%); 2050 ; ' F|rvals inst{lln. KOMMUNIKATIONS DATA' 2060 ; 2070 ; ' R1 R2 R3 R4 R5 R6 R7' 2080 ; 'T-SP R-SP PARI PROT DUPL DISP' 2090 X%=A%(8%) : GOSUB 6000 2100 X%=A%(7%) : GOSUB 6000 2110 X%=A%(9%) : GOSUB 6100 2120 X%=A%(6%) AND 1% : GOSUB 6200 2130 IF A%(5%) ; 'HALF '; ELSE ; 'FULL '; 2140 IF A%(4%) AND 128% ; ' ALL '; ELSE ; 'NORM '; 2150 ; 2160 ; ' ! ! ! ! ! !' 2170 ; ' ! ! ! ! ! Visa alla tkn' 2180 ; ' ! ! ! ! ! transparent' 2190 ; ' ! ! ! ! !' 2200 ; ' ! ! ! ! Half / full duplex' 2210 ; ' ! ! ! !' 2220 ; ' ! ! ! Fl|desstyrning med' 2230 ; ' ! ! ! XON/XOFF anv{nds' 2240 ; ' ! ! !' 2250 ; ' ! ! 8-nde bitens funktion' 2260 ; ' ! ! (7BIT= ingen 8-nde bit)' 2270 ; ' ! !' 2280 ; ' ! Mottagnings hastighet (bit/s)' 2290 ; ' !' 2300 ; ' S{ndhastighet (bit/s)' 2310 GOSUB 850 2320 REM 2330 GOSUB 6800 : REM GET 2340 GOSUB 900 : IF R% RETURN 2350 IF A$='1' THEN A%(8%)=A%(8%)+1% : IF A%(8%)<12% GOTO 2030 ELSE A%(8%)=0% : GOTO 2030 2360 IF A$='2' THEN A%(7%)=A%(7%)+1% : IF A%(7%)<12% GOTO 2030 ELSE A%(7%)=0% : GOTO 2030 2370 IF A$='3' THEN A%(9%)=A%(9%)+1% : IF A%(9%)>4% A%(9%)=0% : GOTO 2030 ELSE 2030 2380 IF A$='4' THEN A%(6%)=A%(6%) XOR 1% : GOTO 2030 2390 IF A$='5' THEN A%(5%)=A%(5%) XOR 1% : GOTO 2030 2400 IF A$='6' THEN A%(4%)=A%(4%) XOR 128% : GOTO 2030 2410 ; CHR$(7%); : GOTO 2320 3000 REM  SETUP T 3010 H$='T' 3020 GOSUB 800 3030 REM 3040 ; CUR(2%,0%); 3050 ; ' F|rval av TERMINAL KARAKT[RISTIK' 3060 ; 3070 ; ' T1 T2 T3 T4 T5 T6 T7' 3080 ; 'VTXX WRAP NEWL LOCA WIND CTL< REPT' 3090 IF A%(4%) AND 4% ; ' 52 '; ELSE ; ' 100 '; 3100 X%=A%(4%) AND 16% : GOSUB 6200 3110 X%=A%(4%) AND 1% : GOSUB 6200 3120 X%=A%(1%) AND 1% : GOSUB 6200 3130 X%=A%(0%) AND 1% : GOSUB 6300 3140 IF A%(3%) ; ' BS '; ELSE ; ' DEL '; 3150 X%=A%(4%) AND 32% : GOSUB 6200 3160 ; 3170 ; ' ! ! ! ! ! ! !' 3180 ; ' ! ! ! ! ! ! Repeter.' 3190 ; ' ! ! ! ! ! ! tangenter' 3200 ; ' ! ! ! ! ! Betydelsen av' 3210 ; ' ! ! ! ! ! ctrl-<> och <=' 3220 ; ' ! ! ! ! !' 3230 ; ' ! ! ! ! Vad ska visas' 3240 ; ' ! ! ! !' 3250 ; ' ! ! ! Lokal mod eller on-line' 3260 ; ' ! ! !' 3270 ; ' ! ! RETURN genererar CR+LF' 3280 ; ' ! !' 3290 ; ' ! B|rja p} ny rad d} mark|ren n}r' 3300 ; ' ! h|ger kant' 3310 ; ' VT100 (ANSI) eller VT52 mod' 3320 GOSUB 850 3330 REM 3340 GOSUB 6800 : REM GET 3350 GOSUB 900 : IF R% RETURN 3360 IF A$='1' THEN A%(4%)=A%(4%) XOR 4% : GOTO 3030 3370 IF A$='2' THEN A%(4%)=A%(4%) XOR 16% : GOTO 3030 3380 IF A$='3' THEN A%(4%)=A%(4%) XOR 1% : GOTO 3030 3390 IF A$='4' THEN A%(1%)=A%(1%) XOR 1% : GOTO 3030 3400 IF A$='5' GOSUB 6400 : GOTO 3000 3410 IF A$='6' THEN A%(3%)=A%(3%) XOR 1% : GOTO 3030 3420 IF A$='7' THEN A%(4%)=A%(4%) XOR 32% : GOTO 3030 3430 ; CHR$(7%); : GOTO 3330 4000 REM  SETUP Y 4010 H$='Y' 4020 GOSUB 800 4030 REM 4040 ; CUR(2%,0%); 4050 ; ' F|rvals inst{llning av FIL MODE.' 4060 ; 4070 ; ' Y1 Y2 Y3 Y4 Y5 Y6 Y7' 4080 ; 'REC SEND DUMP STOP MODE' 4090 ; ' '; 4100 IF A%(10%) AND 8% ; 'TEXT '; ELSE ; 'DATA '; 4110 ; 4120 ; ' !' 4130 ; ' !' 4140 ; ' !' 4150 ; ' hantera filer i' 4160 ; ' text-format eller' 4170 ; ' i special-format' 4180 GOSUB 850 4190 REM 4200 GOSUB 6800 : REM GET 4210 GOSUB 900 : IF R% RETURN 4220 IF A$='6' THEN A%(10%)=A%(10%) XOR 8% : GOTO 4030 4230 ; CHR$(7%); : GOTO 4190 5000 REM  SETUP U 5010 H$='U' : U1%=0% 5020 GOSUB 800 5030 REM 5040 ; CUR(2%,0%); 5050 ; ' F|rval av DEFINIERBARA TANGENTER.' 5060 ; 5070 ; ' U1 U2 U3 U4 U5 U6 U7' 5080 ; 'EXIT RSET MSG KEY& KEY/' 5090 IF U1% GOSUB 6500 ELSE 5180 5100 ; 5110 ; '+----------------------------------+' 5120 ; '! Skriv in textstr{ng !' 5130 ; '! Bak}tpil tar bort tecken !' 5140 ; '! Fram}tpil ger mellanslag !' 5150 ; '! Understrykning ger CTRL-tecken !' 5160 ; '+----------------------------------+' 5170 GOTO 5300 5180 ; TAB(39%) 5190 ; ' ! ! !' 5200 ; ' ! ! Definiera' 5210 ; ' ! ! Keypad-/' 5220 ; ' ! ! (Shift-7)' 5230 ; ' ! !' 5240 ; ' ! Definiera' 5250 ; ' ! Keypad-&' 5260 ; ' ! (Shift-6)' 5270 ; ' !' 5280 ; ' Definiera namn-' 5290 ; ' givar str{ngen' 5300 GOSUB 850 5310 REM 5320 IF U1% ; CUR(U5%,U6%); 5330 GOSUB 6800 : REM GET 5340 REM IF A$=' ' OR INSTR(1%,'@Q\RTY',CHR$(ASC(A$)+64%)) RETURN 5341 GOSUB 900 : IF A$<=' ' AND R% RETURN 5350 IF U1% GOSUB 6600 : GOTO 5030 5360 GOSUB 900 : IF R% RETURN 5370 IF A$='5' THEN U1%=5% : U2%=11% : U4%=0% : GOTO 5020 5380 IF A$='6' THEN U1%=6% : U2%=37% : U4%=0% : GOTO 5020 5390 IF A$='7' THEN U1%=7% : U2%=63% : U4%=0% : GOTO 5020 5400 IF A$='1' THEN A$=CHR$(0%) : RETURN 5410 ; CHR$(7%); : GOTO 5330 5500 REM  5510 H$='I' : U1%=0% 5520 GOSUB 800 5530 REM 5540 ; CUR(2%,0%); 5550 ; ' Inst{llning av KEY KLICK.' 5560 ; 5570 ; ' 1' 5580 ; 'Keyclick' 5590 X%=A%(2%) AND 1% : GOSUB 6200 : ; 5600 ; ' !' 5610 ; ' !' 5620 ; ' Ett klick h|rs i h|gtalaren' 5630 ; ' vid varje tangent nedtryckning' 5640 ; 5650 ; 5660 ; ' (Detta {r ej en TERM100 setup mode)' 5670 GOSUB 850 5680 REM 5690 GOSUB 6800 : REM GET 5700 GOSUB 900 : IF R% RETURN 5710 IF A$='1' A%(2%)=A%(2%) XOR 1% : GOTO 5530 5720 ; CHR$(7%); : GOTO 5330 6000 REM SPEED 6010 RESTORE 6000 6020 FOR X1%=0% TO X% : READ A$ : NEXT X1% 6030 A$=SPACE$(4%-LEN(A$))+A$ 6040 ; A$' '; 6050 RETURN 6060 DATA 50,75,110,134,150,200,300,600,1200,1800,2000,2400 6100 REM PARITET 6110 RESTORE 6100 6120 FOR X1%=0% TO X% : READ A$ : NEXT X1% 6130 ; A$' '; 6140 RETURN 6150 DATA " 0"," 1"," ODD","EVEN","7BIT" 6200 REM YES/NO 6210 IF X% ; ' YES '; ELSE ; ' NO '; 6220 RETURN 6300 REM  6310 IF X% ; ' 12L '; ELSE IF PEEK(590%)=80% ; ' 80T '; ELSE ; ' 24L '; 6320 RETURN 6400 REM CHANGE WIND (12L) 6410 IF PEEK(590%)=80% X%=INP(3%) : A%(0%)=A%(0%) AND 254% : RETURN 6420 IF A%(0%) AND 1% X%=INP(4%) : A%(0%)=A%(0%) XOR 1% : RETURN 6430 A%(0%)=A%(0%) OR 1% 6440 RETURN 6500 REM DEF STRING 6510 IF U1%=5% ; 'MSG :'; ELSE IF U1%=6% ; 'KEY&:'; ELSE ; 'KEY/:'; 6520 FOR U%=U2%+1% TO U2%+A%(U2%) 6530 IF A%(U%)>=32% ; CHR$(A%(U%)); ELSE IF A%(U%)=31% ; '_'; ELSE ; '_'CHR$(A%(U%)+64%); 6540 IF A%(U%)=ASC('_') ; '_'; 6550 NEXT U% 6560 IF U4% ; '_'; 6570 U5%=PEEK(65011%) : U6%=PEEK(65012%) : ; TAB(39%) 6580 RETURN 6600 REM ENTER STRING 6610 IF ASC(A$)=9% OR ASC(A$)=19% A$=' ' 6620 IF ASC(A$)=8% IF U4% 6710 ELSE IF A%(U2%) A%(U2%)=A%(U2%)-1% : RETURN ELSE RETURN 6630 IF ASC(A$)=24% U1%=0% : RETURN 6640 IF ASC(A$)=13% U1%=0% : RETURN 6650 IF ASC(A$)<32% ; CHR$(7%); : RETURN 6660 IF A%(U2%)>=25% ; CHR$(7%); : RETURN 6670 IF U4% IF A$>='@' AND A$<>'_' A$=CHR$(ASC(A$) AND 31%) 6680 IF U4%=0% IF A$='_' U4%=1% : RETURN 6690 A%(U2%)=A%(U2%)+1% 6700 A%(U2%+A%(U2%))=ASC(A$) 6710 U4%=0% 6720 RETURN 6800 REM GET A$ 6810 IF (A%(4%) AND 32%)=0% POKE 65014%,255%,255% 6820 GET A$ 6830 IF A%(2%) AND 1% OUT 6%,0%,6%,121% 6840 RETURN 6900 REM svara J/N 6910 X%=PEEK(65011%) : Y%=PEEK(65012%) 6920 GOSUB 6800 6930 ; CUR(23%,1%)TAB(39%)CUR(X%,Y%); 6940 IF A$='j' OR A$='J' R%=1% : RETURN 6950 IF A$='n' OR A$='N' R%=-1% : RETURN 6960 IF A$=CHR$(13%) R%=0% : RETURN 6970 IF A$<>'?' GOTO 6920 6980 ; CUR(23%,1%)'Svara genom att trycka p} J eller N'; 6990 ; CUR(X%,Y%); : GOTO 6920 7000 REM HELP 7010 GOSUB 800 : X%=3% : REM INITSCREEN 7020 IF PEEK(24576%)<>195% ; 'Hj{lp text finns ej' : GOTO 7160 : REM CASSETT 7030 REM 7040 ONERRORGOTO 7210 7050 OPEN 'TRMHLP'+H$+'.TXT' ASFILE 2% 7060 INPUTLINE #2%,A$ : REM L[S DUMMY RAD 7070 ONERRORGOTO 7130 7080 REM 7090 INPUTLINE #2%,A$ 7100 ; TAB(L%/2%-20%)A$; : X%=X%+1% 7110 IF X%>23% GOSUB 6800 ELSE A$=' ' 7120 IF ASC(A$)<>13% GOTO 7080 7130 REM 7140 CLOSE 2% 7150 IF ERRCODE<>34% ; 'ERROR'ERRCODE 7160 REM 7170 GOSUB 850 : REM FOTNOT 7180 GOSUB 6800 : REM GET 7190 GOSUB 900 : IF R%=0% GOTO 7180 7200 RETURN 7210 REM ERROR 7220 IF H$<>'' THEN H$='' : GOTO 7030 7230 ; 'ERROR'ERRCODE 7240 IF ERRCODE=21% ; 'Hj{lpfilen finns ej tillg{nglig' 7250 GOTO 7160