1 REM Ins{nd av Tommy Kellgren <733> 1985-03-19 20.45.05
10 REM ****************************
20 REM TERMINAL PROGRAM F\R ABC80
30 REM MED MODEMKORT 5124.TOMMY K.(733)
40 REM 300 A/B ,75/1200 , 1200/75
50 REM ****************************
60 REM
70 REM * S[TT PARAMETRAR
80 REM * LAGRA 10 TEL.NR. *
90 ONERRORGOTO 240 : FOR I%=0% TO 10% : READ B$(I%),C$(I%),E%(I%) : NEXT I%
100 REM * BAUDRATE *
110 REM * 64=300A * 65=300B *
120 REM * 66=1200/75 * 102=75/1200 *
130 REM * NAMN * TEL.NUMMER * BAUDRATE *
140 DATA 'ABC-KLUBBEN','801523',64
150 DATA 'ABC-KLUBBEN','801526',64
160 DATA 'ABC-KLUBBEN','801725',64
170 DATA 'QZ 300','238660',64
180 DATA 'QZ 75/1200','228130',102
190 REM DATA 'NAMN','NUMMER',BAUDRATE
200 REM DATA 'NAMN','NUMMER',BAUDRATE
210 REM DATA 'NAMN','NUMMER',BAUDRATE
220 REM DATA 'NAMN','NUMMER',BAUDRATE
230 REM DATA 'NAMN','NUMMER',BAUDRATE
240 B%=I%-1% : ONERRORGOTO 0
250 REM
260 DIM N$=119,A$=119 : REM TR,REC STR[NG
270 C%=10% : REM KANAL NUMMER
280 C1%=64% : REM DEFAULT 300 BAUD
290 C3%=27% : REM RESET, 8 BIT,NOPARITY, 1 STOP BIT (CTRL-Q,S FUNKTION)
300 T$(1%)='BAUDRATE (SEND/REC)'
310 T$(2%)='PARITY (Y/N)'
320 T$(3%)='PARITET TYPE (ODD/EVEN)'
330 T$(4%)='STOPPBITS (1,2)'
340 T$(5%)='DATABITS (5/6/7/8)'
350 P%=0% : REM KOMMUNIKATION SKRIVS EJ P] PRINTER,* 0=AV 1=P] *
360 REM * INT. HANTERING *
370 POKE 63796,56,249,148,5,245,229,219,56,33,128,255,119,225,241,237,77
380 REM * [NDRA I-REG *
390 POKE 65408,0,245,62,249,237,71,241,201
400 REM *******************************
410 REM
420 ; CHR$(12%) : OUT 1%,C%,4%,C3%
430 REM * CTRL-C ON *
440 POKE 65411%,0% : A=CALL(65409%)
450 ; '***************************************'
460 ; : ; '*** MIKROTEKNIK DATABOARDMODEM 5124 ***' : ;
470 ; '*** BOX 306, 175 25 J[RF[LLA, 0758-12525'
480 ; '*** TERMINALRUTIN F\R ABC80 ***'
490 ; CUR(9%,5%)'C => CALL'
500 ; TAB(5%)'H => HELP'
510 ; TAB(5%)'D => DISPLAY PARAMETERS'
520 ; TAB(5%)'M => MODIFY PARAMETERS'
530 ; TAB(5%)'P => PRINTER UNDER KOMMUNIKATION'
540 ; TAB(5%)'B => SE "BILDX.TXT"'
550 ; TAB(5%)'F => SE VALD FIL'
560 ; TAB(5%)'E => END'
570 ; : ; TAB(5%); : GET A$ : ; CHR$(12%)
580 IF A$='C' GOSUB 1510
590 IF A$='H' GOSUB 690
600 IF A$='D' GOSUB 1130
610 IF A$='M' GOSUB 1320
620 IF A$='P' GOSUB 790
630 IF A$='B' GOSUB 860
640 IF A$='F' GOSUB 1030
650 IF A$='E' END
660 GOTO 420
670 REM
680 REM **********************
690 ; : ; '******** HELP INFO: ***********'
700 ; : ; 'F\R ATT AVBRYTA IMPULSERING,'
710 ; 'TRYCK P] EN TANGENT'
720 ; : ; ' * CTRL TECKEN UNDER COMMUNICATION *' : ;
730 ; 'CTRL A = AVBRYTER MODEMCOMMUNIKATION'
740 ; 'CTRL O = COPY BILDMINNET => DR:'
750 ; ' SPARAS UNDER "BILDX.TXT"'
760 ; ' X = L[GSTA LEDIGA BILDNUMMER'
770 GET \$ : RETURN
780 REM
790 REM ***** PRINTER MOD ********
800 ONERRORGOTO 840
810 ; 'VILL DU HA UTSKRIFT P] PRINTER UNDER' : ; : ; 'MODEM KOMMUNIKATION (J/N) '; : INPUT \$
820 IF \$='J' THEN P%=1% : OPEN 'PR:' ASFILE 1 ELSE P%=0% : CLOSE 1
830 RETURN
840 ONERRORGOTO 0 : P%=0% : ; 'PRINTER FEL !';CHR$(7%) : GET \$ : RETURN
850 REM
860 REM ***** SE "BILD.TXT" ******
870 ONERRORGOTO 1000
880 FOR T=1 TO 100
890 F1$='BILD'+NUM$(T)+'.TXT'
900 OPEN F1$ ASFILE 2
910 FOR I=1 TO 24
920 INPUTLINE #2,N$ : N$=LEFT$(N$,LEN(N$)-2%)
930 FOR J=1 TO 40
940 \$=MID$(N$,J,1)
950 A%=ASC(\$)
960 IF A%<>7% THEN ; \$; : GOTO 980
970 ; CHR$(135%);
980 IF I=24 AND J=39 THEN 990 : NEXT J : NEXT I
990 CLOSE 2 : GET \$ : ; CHR$(12%) : NEXT T
1000 ONERRORGOTO 0 : RETURN
1010 REM
1020 REM ***** SE VALD FIL ******
1030 ; 'FILNAMN:'; : INPUT F1$
1040 ONERRORGOTO 1090
1050 OPEN F1$ ASFILE 2
1060 ONERRORGOTO 1100
1070 INPUTLINE #2,A$
1080 ; A$; : GET \$ : IF \$='S' THEN 1100 ELSE 1070
1090 ; 'FIL FINNS EJ!'
1100 CLOSE 2 : GET \$ : ONERRORGOTO 0 : RETURN
1110 REM
1120 REM *********************
1130 REM * DISPLAY PARAMETERS
1140 ; TAB(5%)'CURRENT PARAMETERS:' : ;
1150 IF (C1% AND 63%)=0% THEN P$(1%)='300'
1160 IF (C1% AND 63%)=2% THEN P$(1%)='1200/75'
1170 IF (C1% AND 63%)=2%+4%+32% THEN P$(1%)='75/1200'
1180 IF (C3% AND 16%)/16%=1% THEN P$(2%)='NO' ELSE P$(2%)='YES'
1190 IF (C3% AND 8%)/8%=1% THEN P$(3%)='EVEN' ELSE P$(3%)='ODD'
1200 IF (C3% AND 4%)/4%=1% THEN P$(4%)='2' ELSE P$(4%)='1'
1210 P$(5%)=NUM$((C3% AND 3%)+5%)
1220 P$(5%)=RIGHT$(P$(5%),2%)
1230 FOR I%=1% TO 5%
1240 ; T$(I%);TAB(25%);P$(I%)
1250 NEXT I%
1260 ; 'PRINTER KOMMUNIKATION';TAB(25%);
1270 IF P%=1% ; 'ON' ELSE ; 'OFF'
1280 GET \$
1290 RETURN
1300 REM
1310 REM *********************
1320 REM * MODIFY PARAMETERS
1330 ; TAB(5%)'[NDRA PARAMETRAR:'
1340 FOR I%=1% TO 5%
1350 ; T$(I%);TAB(25%); : INPUTLINE A$ : ;
1360 P$(I%)=LEFT$(A$,1%)
1370 NEXT I%
1380 C1%=0% : C3%=0%
1390 IF P$(1%)='3' THEN C1%=64%
1400 IF P$(1%)='1' THEN C1%=64%+2%
1410 IF P$(1%)='7' THEN C1%=64%+32%+4%+2%
1420 IF P$(2%)='N' THEN C3%=16%
1430 IF P$(3%)='E' THEN C3%=C3%+8%
1440 IF P$(4%)='2' THEN C3%=C3%+4%
1450 IF P$(5%)='6' THEN C3%=C3%+1%
1460 IF P$(5%)='7' THEN C3%=C3%+2%
1470 IF P$(5%)='8' THEN C3%=C3%+3%
1480 IF C3%=0% OR C1%=0% THEN 1330
1490 RETURN
1500 REM
1510 ; ' ********** CALL ***********' : ;
1520 FOR I%=0% TO B%
1530 ; TAB(5%)I%;' = ';B$(I%);TAB(27%);'(';C$(I%);')'
1540 NEXT I%
1550 ; : ; TAB(5%)'V[LJ (0-';B%;') ELLER EGET NUMMER:'
1560 ; TAB(5%)'RETURN = G] UR' : ;
1570 ; TAB(5%)'CALL :'; : INPUT N$
1580 IF N$='' RETURN
1590 REM EN SIFFRA INMATAD =DIREKTVAL
1600 IF LEN(N$)<>1% THEN 1630
1610 \%=VAL(LEFT$(N$,1%))
1620 N$=C$(\%) : C1%=E%(\%)
1630 Q%=INP(7%) : REM I/O RESET
1640 C2%=128% : REM LINJE REL[ 3
1650 OUT 1%,C%,4%,C3% : REM RESET AV MODEMKORTTET,S[TT STOPPBITS mm
1660 OUT 2%,C1% : REM REL[ 300 ohm + MODEM PARAMETRAR
1670 OUT 3%,C2% : REM DTR OCH LYFT P] LUREN
1680 T%=0% : ; : ; TAB(5%)'V[NTAR P] KOPPLINGSTON'
1690 FOR I=1 TO 6000 : REM V[NT KOPP.TON
1700 IF PEEK(65013%)>=128% RETURN
1710 IF (INP(1%) AND 32%)=32% THEN T%=0% ELSE T%=T%+1%
1720 IF T%>=1000% THEN 1750
1730 NEXT I
1740 ; TAB(5%)'INGEN LINJE' : GET \$ : RETURN
1750 FOR I=0 TO 1000 : NEXT I
1760 REM
1770 REM **** IMPULSERA ****
1780 ; : ; TAB(5%); : FOR I%=1% TO LEN(N$)
1790 IF PEEK(65013%)>=128% RETURN
1800 \$=MID$(N$,I%,1%) : IF \$<'0' OR \$>'9' 1950
1810 A%=VAL(\$) : ; \$;
1820 C5%=C1% OR 64% OR 128%
1830 C6%=-((C1% AND 64%)/64%=1%)*(C1% XOR 64%) OR 128%
1840 OUT 2%,C5%
1850 FOR I=1 TO 1000 : NEXT I
1860 FOR J%=1% TO A%+1%
1870 OUT 2%,C6%
1880 FOR I=1 TO 60 : NEXT I
1890 OUT 2%,C5%
1900 FOR I=1 TO 40 : NEXT I
1910 NEXT J%
1920 FOR I=1 TO 60 : NEXT I
1930 OUT 2%,C1%
1940 FOR I=1 TO 500 : NEXT I
1950 NEXT I% : ;
1960 REM
1970 REM ***** V[NTA P] DCD ******
1980 D%=0% : U%=0% : U1%=0% : U2%=0% : T%=0% : ; : ; TAB(5%)'V[NTAR P] B[RV]G'
1990 FOR I=1 TO 4000
2000 T%=INP(1%)
2010 IF PEEK(65013%)>=128% RETURN
2020 IF (T% AND 16%)=0% THEN D%=D%+1% ELSE D%=0%
2030 IF (T% AND 32%)=0% THEN U%=1%
2040 IF U%=1% GOTO 2100
2050 IF D%>=800% THEN 2140
2060 NEXT I
2070 ; : ; TAB(5%)'INGEN B[RV]G'
2080 GET \$ : RETURN
2090 REM
2100 IF (T% AND 32%)=0% THEN U1%=U1%+1% ELSE U2%=U2%+1%
2110 IF U1%+U2%<700 THEN 2050
2120 IF U1%>300% AND U2%>250% THEN ; : ; TAB(5%)'UPPTAGET' : GOTO 2080
2130 U%=0% : U1%=0% : U2%=0% : GOTO 2050
2140 REM
2150 REM * CTRL-C OFF *
2160 POKE 65411%,249% : A=CALL(65409%)
2170 C2%=C2%+32% : REM DTR OCH RTS AKTIVA
2180 OUT 3%,C2%
2190 REM ******** KOMMUNIKATION *******
2200 U%=0% : ; CHR$(12%)' *** KOMUNIKATION ***'
2210 IF (INP(1%) AND 16%)=0% THEN D2%=0% ELSE 2340
2220 IF PEEK(65408%)<>0 THEN 2380
2230 IF (INP(1%) AND 128%)=0% THEN 2460
2240 IF U%<10% THEN U%=U%+1% : GOTO 2210
2250 U%=0%
2260 R%=PEEK(65011%) : K%=PEEK(65012%)
2270 IF (R%=23% AND K%=39%) OR A%=13% THEN 2210
2280 REM * CURSOR T[NDS/SL[CKS *
2290 ; CHR$(127%); : POKE 65011%,R%,K%
2300 ; ' '; : POKE 65011%,R%,K%
2310 GOTO 2210
2320 REM
2330 REM ** DCD SAKNAS **
2340 D2%=D2%+1% : IF D2%<1500% THEN 2220
2350 ; '*** DCD SAKNAS ***'
2360 IF PEEK(65408%)<>0% RETURN ELSE 2360
2370 REM ** ABC S[NDER **
2380 A%=PEEK(65408%) AND 127% : POKE 65408%,0%
2390 REM * CTRL A *
2400 IF A%=1% RETURN : REM AVBRYT KOMM
2410 REM * CTRL O *
2420 IF A%=15% GOTO 2500 : REM SPARA BILD
2430 OUT O%,A%
2440 GOTO 2230
2450 REM * TECKEN FR]N LINJEN FINNS I MODEMKORTET *
2460 A%=INP(0%) AND 127%
2470 IF A%=2% THEN 2640
2480 ; #P%,CHR$(A%);
2490 U%=0% : GOTO 2220
2500 REM ****** SPARA BILDMINNET ******
2510 ONERRORGOTO 2550
2520 FOR T=1 TO 100 : F1$='BILD'+NUM$(T)+'.TXT'
2530 OPEN F1$ ASFILE 2
2540 CLOSE 2 : NEXT T
2550 ONERRORGOTO 0 : PREPARE F1$ ASFILE 2
2560 FOR I=884 TO 930 STEP 2
2570 A=PEEK(I)+256*PEEK(I+1)
2580 N$='' : FOR J=A TO A+39
2590 N$=N$+CHR$(PEEK(J))
2600 NEXT J
2610 ; #2,N$ : NEXT I
2620 ; : ; '* KLAR *' : CLOSE 2 : GOTO 2230
2630 REM ******************************
2640 REM S[ND o MOTTAG FIL (ABC-KLUBBEN)
2650 REM * CTRL-C ON *
2660 POKE 65411%,0% : A=CALL(65409%)
2670 ONERRORGOTO 2730
2680 GOSUB 3330
2690 IF N$='SYNK' THEN 2770
2700 IF N$='SENDFIL' THEN 3050
2710 ; N$
2720 REM * CTRL-C OFF *
2730 POKE 65411%,249% : A=CALL(65409%)
2740 ONERRORGOTO 0 : GOTO 2220
2750 REM
2760 REM **********************
2770 REM ** SYNK = RECIV FIL **
2780 ; ' *** Motaga fil ***'
2790 ; 'FILNAMN VID MONITORN:'; : INPUT F1$
2800 ; 'FILNAMN H[R:'; : INPUT F2$
2810 N$='Hejsan' : GOSUB 3440
2820 GOSUB 3330
2830 IF N$<>'SYNK' THEN 2730
2840 FOR T=1 TO 100 : NEXT T
2850 N$='SYNKSVAR' : GOSUB 3440
2860 FOR T=1 TO 100 : NEXT T
2870 N$=F1$ : GOSUB 3440
2880 GOSUB 3330
2890 IF N$<>'OPENED' THEN ; X$ : FOR T=1 TO 2000 : NEXT T : GOTO 2730
2900 PREPARE F2$ ASFILE 2
2910 FOR J%=1 TO 10000
2920 FOR T=1 TO 100 : NEXT T
2930 N$='>' : GOSUB 3440
2940 GOSUB 3330
2950 IF N$='/*' THEN 3000
2960 A$=N$
2970 ; #2,A$
2980 ; J%
2990 NEXT J%
3000 CLOSE 2
3010 ; 'ANTAL RADER =';J%-1%
3020 N$='Tack!' : GOSUB 3440
3030 GOTO 2730
3040 REM
3050 REM ** SENDFIL = TRANSMITT FIL **
3060 ; ' *** S{nda fil ***'
3070 ; 'FILNAMN H[R:'; : INPUT F2$
3080 ; 'LAGRAS VID MONITORN'
3090 ; 'UNDER FILNAMN:'; : INPUT F1$
3100 OPEN F2$ ASFILE 2
3110 N$='Hejsan' : GOSUB 3440
3120 GOSUB 3330
3130 IF N$<>'SENDFIL' THEN 2730
3140 FOR T=1 TO 100 : NEXT T
3150 N$='SYNKSVAR' : GOSUB 3440
3160 FOR T=1 TO 100 : NEXT T
3170 N$=F1$ : GOSUB 3440
3180 ONERRORGOTO 3260
3190 FOR J%=1 TO 10000
3200 GOSUB 3330
3210 INPUTLINE #2,N$ : N$=LEFT$(N$,LEN(N$)-2%)
3220 ; J%
3230 FOR T=1 TO 100 : NEXT T
3240 GOSUB 3440
3250 NEXT J%
3260 N$='/*' : GOSUB 3440
3270 CLOSE 2
3280 ; 'ANTAL RADER=';J%-1%
3290 FOR T=1 TO 3000 : NEXT T
3300 N$='Tack!' : GOSUB 3440
3310 GOTO 2730
3320 REM
3330 REM ** MOTAG EN STR[NG **
3340 N$=''
3350 IF (INP(1%) AND 128%)=128% THEN 3350
3360 A%=INP(0%) AND 127%
3370 REM