10 ! ------------------------------------------------
20 ! MSGHMT.800   (c) Gunnar Faith-Ell 1986-01-26
30 ! Programmet loggar in och dumpar alla inl{gg till en fil varefter det
40 ! skriver ut filen p} disk 
50 ! 
60 Ver$='version 1,b 1986-02-02'
70 ! 
80 ! F|ruts{ttningar:
90 ! Modemet ska koppla ner n{r terminalrutinen avslutas
100 ! 
110 ! S{kerhetssp{rr finns s} att nedkoppling sker om ingenting mottages
120 ! under c:a 75 sekunder. Om MSG st{ller sig och v{ntar p} 
130 ! s} skickar programmet det. OBS! Varning m} utf{rdas f|r anv{ndning
140 ! i samband med kraftigt st|rda telelinjer.
150 ! ------------------------------------------------
160 EXTEND : INTEGER 
170 P=PEEK2(65500)+6
180 Dump$='TEXT.TXT'
190 N$='*2733' !  Default medlemsnummer.
200 Term$='VSA70C72.40'
210 DIM Buffert$=10000
220 POKE PEEK2(65500)+2,VAROOT(Buffert$),SWAP%(VAROOT(Buffert$))
230 ; CHR$(12);
240 ; 'MSGHMT - (c) Gunnar Faith-Ell 1986-01-26 - ' Ver$
250 ; CUR(5,0) 'Programmet loggar in p} ABC-klubbens monitor och h{mtar alla'
260 ; 'nya inl{gg samt loggar ut igen. Goda telef|rbindelser f|ruts{tts.'
270 ; 'Programmet kopplar automatiskt ner om systemet "fastnar".'
280 ; : ; 
290 ; 'Medlemsnummer: <' N$ '> '; : INPUT ''Namn$;
300 IF Namn$='' Namn$=N$ : ; N$ ELSE ; 
310 IF ASCII(Namn$)<>42 Namn$='*'+Namn$
320 ; 'Pasword: '; : Pswd$=FNPswd$ : ; 
330 ; 'Fil som texten ska dumpas p} <' Dump$ '>';
340 Fil$=FNGet$
350 IF Fil$='' Fil$=Dump$
360 ON ERROR GOTO 880
370 PREPARE Fil$ AS FILE 2
380 OPEN 'v24:'+Term$ AS FILE 1
390 ; : ; 
400 INPUT 'Tryck  n{r linjen {r klar och du har f}tt b{rv}g 'A$
410 ; : ; 'PF8 avbryter.' : ; : ; 
420 FOR I=0 TO 2500 : T$=FNT$ : NEXT I 
430 FOR N=0 TO 1
440   T$='' : ; #1,''
450   FOR I=0 TO 2000 : T$=FNT$ : NEXT I 
460   K=K+1 : IF K>25 GOTO 910
470   IF T$='' 440
480 K=0 : NEXT N 
490 T$=''
500 FOR I=0 TO 3000 : T$=FNT$ : NEXT I 
510 K=K+1 : IF K>15 GOTO 910
520 IF T$<>'' 490
530 ; #1,Namn$ : ; #1,Pswd$
540 Pswd$=''
550 FOR I=0 TO 1000 : NEXT I 
560 WHILE -1
570   IF SYS(5)=128 GOTO 670
580   IF PEEK2(P) T$=FNT$ ELSE G.=G.+1 : IF G.>60000. GOTO 910 ELSE 570
590   G.=0
600   IF T$=CHR$(13) T$=FNT$ : Rad$='' : GOTO 580
610   Rad$=Rad$+T$
620   IF INSTR(1,Rad$,'V{lkommen, ') 700
630 WEND 
640 ! 
650 ! Kommando fr}n tangentbordet
660 ! 
670 GET T$
680 IF T$=CHR$(199) ; : ; 'Avbryt!' : ; #1,CHR$(15,15) 'log' : GOTO 800
690 GOTO 580
700 ; : ; 'Dump b|rjar:' CHR$(7) : ; 
710 ; #1,'alla' : Kom$='alla'
720 WHILE -1
730   IF PEEK2(P) T$=FNT$ ELSE G.=G.+1 : IF G.>65000. GOTO 910 ELSE 730
740   IF T$=CHR$(13) T$=FNT$ : ; #2,Rad$ : Rad$='' : T$=FNT$ : IF T$=CHR$(10) ; #2,'' : T$=''
750   Rad$=Rad$+T$
760   IF INSTR(1,Rad$,'(Se) tiden.') ; #1,'log' : Kom$='log' : GOTO 800
770   IF INSTR(1,Rad$,'Tryck RETURN') Rad$='' : ; #1,'' : Q$=FNT$
780   IF INSTR(1,Rad$,'Kommandot existerar inte') ; #1,CHR$(15,15) Kom$ : Kom=Kom+1 : IF Kom>7 GOTO 910
790 WEND 
800 ; : ; : ; 'Slut p} dump, loggar ut.' CHR$(7)
810 WHILE -1
820   IF PEEK2(P) T$=FNT$ ELSE G.=G.+1 : IF G.>30000. GOTO 890 ELSE 820
830   IF T$=CHR$(13) T$=FNT$ : Rad$='' : T$=FNT$ : IF T$=CHR$(10) T$=''
840   Rad$=Rad$+T$
850   IF INSTR(1,Rad$,'(L{sa) n{sta brev. -') ; 'Brev - }ter till dump' CHR$(7) : GOTO 720
860   IF INSTR(1,Rad$,'Logout ') 890
870 WEND 
880 ; 'Du fick ERROR ' ERRCODE
890 CLOSE 
900 END 
910 ; : ; CHR$(7) 'Fel har uppst}tt - loggar ut.'
920 ; #1,CHR$(15,15) 'log' : GOTO 890
930 DEF FNGet$ LOCAL Rad$=17,J,I,K
940   WHILE -1
950     GET T$
960     IF T$>CHR$(127) RETURN CHR$(127)
970     IF LEN(Rad$)=0 AND T$>'/' AND T$<':' 950
980     IF LEN(Rad$)=0 AND (T$=':' OR T$='.') 950
990     IF T$=CHR$(7) ; CHR$(7);
1000     IF T$=CHR$(8) OR T$=CHR$(127) IF LEN(Rad$) Rad$=LEFT$(Rad$,LEN(Rad$)-1) : ; CHR$(8,32,8); : IF I I=I-1 : IF I=0 K=0
1010     IF T$=CHR$(13) 1140
1020     IF T$=CHR$(24) 1150
1030     IF T$<' ' OR T$>=CHR$(127) 950
1040     IF T$>'`' T$=CHR$(ASCII(T$)-32)
1050     IF T$<'.' OR T$='_' OR T$='/' OR (T$<'@' AND T$>':') 950
1060     IF LEN(Rad$)=17 GOTO 950
1070     IF I=4 GOTO 950
1080     IF K=1 AND T$='.' 950
1090     IF T$<>'.' IF LEN(Rad$)=8+INSTR(1,Rad$,':') AND K=0 Rad$=Rad$+'.' : ; '.'; : K=1 : I=1
1100     IF T$='.' K=1
1110     IF K I=I+1
1120     Rad$=Rad$+T$ : ; T$;
1130   WEND 
1140   RETURN Rad$
1150   WHILE J=' ' ; '*'; : P$=P$+T$
1260     IF T$=CHR$(8) ; CHR$(8,32,8);
1270     IF T$=CHR$(13) 1290
1280   WEND 
1290   RETURN P$
1300 FNEND 
1310 DEF FNT$
1320   IF PEEK2(P)=0 RETURN ''
1330   GET #1,T$
1340   T$=CHR$(ASCII(T$) AND 127)
1350   ; T$;
1360   RETURN T$
1370 FNEND