1 REM Ins{nd av Kristoffer Eriksson <5357>    1986-07-15 02.01.42
20 ! +--------------------------------------------------+
30 ! ! PRATA.BAC - Samtal mellan tv} LUX-NET-noder.     !
40 ! ! F|r ABC800-familjen (utom 800C) + LUX-NET.       !
50 ! ! Av Kristoffer Eriksson <5357> ABC-klubben.       !
60 ! ! F}r kopieras fritt endast i ickekommersiella     !
70 ! ! syften, och raderna 1-150 M]STE bevaras.         !
80 ! +--------------------------------------------------+
90 INTEGER : EXTEND : ! NO RESUME
100 ! 
110 ! Ver--/-Datum----/-Sign-/-Kommentar-------------------
120 ! X.00 / 85-04-04 / SKE <5357> Kristoffer Eriksson
130 ! 1.00 / 85-04-09 / SKE  / Skriv ej ut o{ndrade pekare
140 Ver$="PRATA, Ver 1.00 av Kristoffer Eriksson, 1985"
150 ! 
160 ! Ett ganska roligt program f|r samtal mellan LUX-NET-noder. Fr}gan {r bara
170 ! vad det {r f|r nytta med det.
180 ! Kan f|rb{ttras. F.n. ansluts de tv} f|rsta som startar detta program till
190 ! varandra, de tv} n{sta till varandra osv. Det finns inget s{tt att v{lja
200 ! vem man vill prata med. I bland f}r man lov att ta bort PRATA*.TMP-filer.
210 ! Avsluta med PF1. Mark|rstyrning med pilarna och PF5, PF7.
220 ! 
230 ! 
240 ; CHR$(12) Ver$
250 Z=FNInit
260 ! 
270 WHILE Pratfil<20
280   Pratfil$="MFD:PRATA"+NUM$(Pratfil)+".TMP"
290   ON ERROR GOTO 380 : OPEN Pratfil$ AS FILE 1
300   Wsec=2 : Rsec=0
310   IF NOT FNUpptagen THEN 450
320   CLOSE 
330   Pratfil=Pratfil+1
340 WEND 
350 ; CUR(23,0) WHT "Det finns f|r m}nga pratfiler redan" CHR$(7)
360 GOTO 600
370 ! 
380 IF ERRCODE<>21 THEN 560
390 ON ERROR GOTO 560 : PREPARE Pratfil$ AS FILE 1
400 FILESTAT #1,4+32
410 PUT #1 STRING$(4*253,0)
420 FILESTAT #1,0
430 Z=FNChmod(28,"PRATA"+NUM$(Pratfil)+SPACE$(3-LEN(NUM$(Pratfil)))+"TMP",0)
440 Wsec=0 : Rsec=2
450 ! 
460 ; CHR$(12);
470 ; CUR(11,0) C2$;
480 IF Abc=806 THEN ; STRING$(80,ASCII(",")) ELSE ; STRING$(80,ASCII("-"))
490 ON ERROR GOTO 560
500 Z=FNMain
510 ! 
520 CLOSE 
530 IF Slut2 THEN ON ERROR GOTO 560 : KILL Pratfil$
540 GOTO 600
550 ! 
560 ; CUR(23,0) SPACE$(79);
570 ; CUR(23,0) WHT "Felkod" ERRCODE "p} " Pratfil$ CHR$(7);
580 CLOSE 
590 ON ERROR GOTO 600 : KILL Pratfil$
600 ; CUR(23,0) WHT
610 END 
620 ! 
630 DEF FNInit
640   Abc=800 : IF PEEK(39)=4 THEN Abc=806 ELSE IF PEEK(39)=3 THEN Abc=802
650   IF PEEK(39)=4 THEN POKE PEEK2(116)+6,PEEK(PEEK2(116)+6) OR 5 ! ATTR 5
660   DIM Screen$(0:1)=880,Scur(0:1),C0$=1,C1$=1,C2$=1,C3$=1,Pratfil$=16,Opek$=4
670   Screen$(0)=SPACE$(880) : Screen$(1)=Screen$(0)
680   Rpek=0 : Wpek=0 ! Egna pekare
690   Wpek2=0 : Rpek2=0 ! Den andres pekare
700   Slut=0 : Slut2=0
710   Pratfil=1
720   Intervall1=150 ! Minsta tid mellan disk-access
730   Intervall2=450
740   Intervall=Intervall1
750   IF Abc<>806 THEN 800
760   C0$=YEL ! Mottaget
770   C1$=CYA ! S{nt
780   C2$=GGRN ! Mittlinje
790   C3$=YEL ! Statusinfo
800   RETURN 0
810 FNEND 
820 ! 
830 DEF FNUpptagen LOCAL I$=1
840   POSIT #1 Wsec*253
850   GET #1 I$
860   RETURN ASCII(I$)<>0
870 FNEND 
880 ! 
890 DEF FNL{s$ LOCAL I$=253
900   IF Wpek2=Rpek OR Slut2 THEN RETURN ""
910   POSIT #1 Rsec*253+253
920   GET #1 I$ COUNT 253
930   IF Wpek2>Rpek THEN I$=MID$(I$,Rpek+1,Wpek2-Rpek) : GOTO 950
940   I$=RIGHT$(I$,Rpek+1)+LEFT$(I$,Wpek2)
950   Rpek=Wpek2
960   RETURN I$
970 FNEND 
980 ! 
990 DEF FNL{spek LOCAL I$=4
1000   IF Slut2 THEN RETURN 0
1010   POSIT #1 Rsec*253
1020   GET #1 I$ COUNT 4
1030   Wpek2=ASCII(RIGHT$(I$,2))
1040   Rpek2=ASCII(RIGHT$(I$,3))
1050   Slut2=ASCII(RIGHT$(I$,4))
1060   IF NOT Kontakt IF ASCII(I$) THEN Kontakt=-1 : ; CUR(23,2) C3$ "Kontakt";
1070   IF Slut2 THEN ; CUR(23,2) C3$ "F|rbindelsen bruten";
1080   RETURN 0
1090 FNEND 
1100 ! 
1110 ! OBS: Max 1 tkn i S$
1120 DEF FNSkriv(S$) LOCAL I$=253
1130   IF S$="" THEN RETURN 0
1140   IF Wpek+1=Rpek2 OR (Rpek2=0 AND Wpek=252) THEN RETURN -1 ! Fullt
1150   POSIT #1,Wsec*253+253+Wpek
1160   PUT #1 S$
1170   Wpek=MOD(Wpek+1,253)
1180   RETURN 0
1190 FNEND 
1200 ! 
1210 DEF FNSkrivpek LOCAL Npek$=4
1220   POSIT #1 Wsec*253
1230   Npek$=CHR$(255,Wpek,Rpek,Slut)
1240   IF Npek$=Opek$ THEN GET #1 Npek$ : RETURN 0 ! Filpek m}ste {nd} flyttas
1250   PUT #1 Npek$
1260   Opek$=Npek$
1270   RETURN 0
1280 FNEND 
1290 ! 
1300 DEF FNP(S$,Screen) LOCAL P,Maxc,T
1310   Maxc=LEN(Screen$(Screen))
1320   WHILE P