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 P31 THEN 1430 1350 IF T=13 Scur(Screen)=Scur(Screen)+80-MOD(Scur(Screen),80) : GOTO 1460 1360 IF T=8 THEN Scur(Screen)=Scur(Screen)-1 : GOTO 1500 1370 IF T=9 THEN Scur(Screen)=Scur(Screen)+1 : GOTO 1460 1380 IF T=10 THEN Scur(Screen)=Scur(Screen)+80 : GOTO 1460 1390 IF T=11 AND Scur(Screen)>79 Scur(Screen)=Scur(Screen)-80 : GOTO 1500 1400 IF T=7 THEN ; CHR$(7); : GOTO 1500 1410 GOTO 1500 1420 ! 1430 MID$(Screen$(Screen),Scur(Screen)+1,1)=CHR$(T) 1440 Scur(Screen)=Scur(Screen)+1 1450 ! 1460 IF Scur(Screen)"" THEN 1730 1680 WHILE T127 THEN GET I$ ELSE RETURN "" 1940 IF ASCII(I$)<128 THEN RETURN I$ 1950 IF ASCII(I$)=192 THEN Slut=-1 : RETURN "" 1960 IF ASCII(I$)=196 THEN RETURN CHR$(11) 1970 IF ASCII(I$)=198 THEN RETURN CHR$(10) 1980 RETURN "" 1990 FNEND 2000 ! 2010 DEF FNChmod(Dv,Fil$,Stat) LOCAL K$=22,K,F$=12,T,S 2020 REM ASSEMBLERING AV LFD:DOSOPEN.ASM. 1985-02-05 19.43.59 2030 K$=CHR$(14,4,6,0,205,24,96,17,255,255,212,42,96,212,45,96,33,0,0,208,111,201) 2040 F$=Fil$ 2050 MID$(K$,2,1)=CHR$(Dv) 2060 K=CALL(VARPTR(K$),VARPTR(F$)) : IF K<>0 THEN 2150 ! RIB -> Dosbuf0 2070 S=PEEK(62720+255) 2080 S=(S AND 128) OR Stat 2090 K=1 : WHILE T<4 AND K<>0 2100 K=FNTalknet(14,11,0,3,0,S) 2110 T=T+1 : WEND 2120 IF K<>0 THEN RETURN K-93 2130 K$=CHR$(6,0,205,33,96,33,0,0,208,111,201) 2140 K=CALL(VARPTR(K$)) : IF K=0 THEN RETURN 0 ! St{ng fil 2150 RETURN K 2160 FNEND 2170 ! 2180 DEF FNTalknet(Fc,Sfc,B,C,D,E) LOCAL Z 2190 POKE 64798,255 2200 POKE 64961,Fc,Sfc,C,B,E,D 2210 Z=CALL(24672) 2220 RETURN PEEK(64962) 2230 FNEND