1 REM Ins{nd av Kristoffer Eriksson <5357> 1986-07-19 00.06.40 20 ! +-----------------------------------------------------+ 30 ! ! FJ[RRNOD, FJ[RR X.00 - Fj{rrstyrning av LUX-NET-nod.! 40 ! ! F|r ABC800-familjen (utom 800C) + LUX-NET. ! 50 ! ! Av Kristoffer Eriksson <5357> ABC-klubben. ! 60 ! ! F}r kopieras fritt endast i ickekommersiella syften ! 70 ! ! 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 Ver$="FJ[RRNOD, Ver X.00 av Kristoffer Eriksson" 140 ! 150 ! Ett ganska roligt program som till}ter en LUX-NET-nod att fj{rrstyra 160 ! Basicen i en annan. FJ[RRNOD {r ett terminalprogram som man k|r p} den 170 ! styrande noden, medan FJ[RR {r kontrollprogrammet f|r den styrda noden. 180 ! FJ[RR best}r av maskinkod och kan inte listas. FJ[RRNOD {r n{ra besl{ktat 190 ! med PRATA. 200 ! 210 ! Endast en fj{rrstyrning kan p}g} i ett n{t samtidigt, eftersom all 220 ! kommunikation sk|ts genom den enda filen "FJ[RR.TMP". 230 ! 240 ! Det g}r inte att k|ra vilka program som hellst p} det h{r s{ttet. Meny0 250 ! blir t ex inte r{tt |verf|rd till bildsk{rmen p} terminalnoden eftersom 260 ! den inte placerar mark|ren med CUR(). Grafik |verf|rs inte heller. Vid 270 ! reset eller XS0, laddas FJ[RR-programmet ur. 280 ! 290 ! Avsluta med PF1. SHIFT-CTRL-PF1 skickar PF1, SHIFT-CTRL-PF3 skickar CTRL-C 300 ! 310 ! 320 ! 330 ; CHR$(12) Ver$ 340 Z=FNInit 350 ! 360 WHILE Pratfil<20 370 Pratfil$="MFD:FJ[RR.TMP" 380 ON ERROR GOTO 440 : OPEN Pratfil$ AS FILE 1 390 Wsec=2 : Rsec=0 400 IF NOT FNUpptagen THEN 490 410 CLOSE 420 ; CUR(23,0) WHT "Upptaget" CHR$(7) 430 GOTO 640 440 FOR I=1 TO 1500 : NEXT I 450 Pratfil=Pratfil+1 460 WEND 470 ; CUR(23,0) WHT "Hittar ingen mottagare" CHR$(7) 480 GOTO 640 490 ! 500 ; CHR$(12); 510 ON ERROR GOTO 600 520 Z=FNMain 530 ! 540 POSIT #1 Wsec*253 550 PUT #1 CHR$(0) 560 CLOSE 570 IF Slut2 THEN ON ERROR GOTO 600 : KILL Pratfil$ 580 GOTO 640 590 ! 600 ; CUR(23,0) SPACE$(79); 610 ; CUR(23,0) WHT "Felkod" ERRCODE "p} " Pratfil$ CHR$(7); 620 CLOSE 630 ON ERROR GOTO 640 : KILL Pratfil$ 640 IF Abc=806 THEN ; CUR(24,0) SPACE$(79); ELSE OUT 56,6,57,24 ! Visa 24 rad 650 ; CUR(23,0) WHT 660 END 670 ! 680 DEF FNInit 690 Abc=800 : IF PEEK(39)=4 THEN Abc=806 ELSE IF PEEK(39)=3 THEN Abc=802 700 IF PEEK(39)=4 THEN POKE PEEK2(116)+6,PEEK(PEEK2(116)+6) OR 5 ! ATTR 5 710 DIM C0$=1,C1$=1,C2$=1,C3$=1,Pratfil$=16,Opek$=4,L25$=0 720 POKE VAROOT(L25$),80,0,24*80,SWAP%(30720+24*80),80,0 730 L25$=SPACE$(80) 740 OUT 56,6,57,25 ! Visa 25 rader 750 Rpek=0 : Wpek=0 ! Egna pekare 760 Wpek2=0 : Rpek2=0 ! Den andres pekare 770 Slut=0 : Slut2=0 780 Pratfil=1 790 Intervall1=150 ! Minsta tid mellan disk-access 800 Intervall2=450 810 Intervall=Intervall1 820 IF Abc<>806 THEN 870 830 C0$=YEL ! Mottaget 840 C1$=CYA ! S{nt 850 C2$=GGRN ! Mittlinje 860 C3$=YEL ! Statusinfo 870 RETURN 0 880 FNEND 890 ! 900 DEF FNUpptagen LOCAL I$=1 910 POSIT #1 Wsec*253 920 GET #1 I$ 930 RETURN ASCII(I$)<>0 940 FNEND 950 ! 960 DEF FNL{s$ LOCAL I$=253 970 IF Wpek2=Rpek OR Slut2 THEN RETURN "" 980 POSIT #1 Rsec*253+253 990 GET #1 I$ COUNT 253 1000 IF Wpek2>Rpek THEN I$=MID$(I$,Rpek+1,Wpek2-Rpek) : GOTO 1020 1010 I$=RIGHT$(I$,Rpek+1)+LEFT$(I$,Wpek2) 1020 Rpek=Wpek2 1030 RETURN I$ 1040 FNEND 1050 ! 1060 DEF FNL{spek LOCAL I$=4 1070 IF Slut2 THEN RETURN 0 1080 POSIT #1 Rsec*253 1090 GET #1 I$ COUNT 4 1100 Wpek2=ASCII(RIGHT$(I$,2)) 1110 Rpek2=ASCII(RIGHT$(I$,3)) 1120 Slut2=ASCII(RIGHT$(I$,4)) 1130 IF NOT Kontakt IF ASCII(I$) THEN Kontakt=-1 : Z=FNR24("Kontakt",2) 1140 IF Slut2 THEN Z=FNR24("F|rbindelsen bruten",2) 1150 RETURN 0 1160 FNEND 1170 ! 1180 ! OBS: Max 1 tkn i S$ 1190 DEF FNSkriv(S$) LOCAL I$=253 1200 IF S$="" THEN RETURN 0 1210 IF Wpek+1=Rpek2 OR (Rpek2=0 AND Wpek=252) THEN RETURN -1 ! Fullt 1220 POSIT #1,Wsec*253+253+Wpek 1230 PUT #1 S$ 1240 Wpek=MOD(Wpek+1,253) 1250 RETURN 0 1260 FNEND 1270 ! 1280 DEF FNSkrivpek LOCAL Npek$=4 1290 POSIT #1 Wsec*253 1300 Npek$=CHR$(255,Wpek,Rpek,Slut) 1310 IF Npek$=Opek$ THEN GET #1 Npek$ : RETURN 0 ! Filpek m}ste {nd} flyttas 1320 PUT #1 Npek$ 1330 Opek$=Npek$ 1340 RETURN 0 1350 FNEND 1360 ! 1370 DEF FNP(S$) 1380 ; S$; 1390 RETURN 0 1400 FNEND 1410 ! 1420 DEF FNMain LOCAL R$=253,W$=1,T 1430 WHILE Slut=0 1440 IF W$="" THEN W$=FNGet$ 1450 Z=FNL{spek 1460 R$=FNL{s$ : IF LEN(R$) THEN 1490 1470 IF Intervall"" THEN 1600 1550 WHILE T127 THEN GET I$ ELSE RETURN "" 1800 IF ASCII(I$)<128 THEN RETURN I$ 1810 IF ASCII(I$)=192 THEN Slut=-1 : RETURN "" 1820 IF ASCII(I$)=242 THEN RETURN CHR$(3) ! SH-CTRL-PF3 -> CTRL-C 1830 IF ASCII(I$)=240 THEN RETURN CHR$(192) ! SH-CTRL-PF1 -> PF1 1840 RETURN I$ 1850 FNEND 1860 ! 1870 DEF FNR24(T$,K) LOCAL C,F,A,W 1880 IF Abc<>806 THEN MID$(L25$,K+1,LEN(T$))=T$ : RETURN 0 1890 C=PEEK2(SYS(10)+82) 1900 F=PEEK2(SYS(10)+89) 1910 W=PEEK(SYS(10)+84) : POKE SYS(10)+84,80 1920 A=INP(53) 1930 ; CUR(24,K) NRML C3$ T$; 1940 POKE SYS(10)+82,C,SWAP%(C),W 1950 POKE SYS(10)+89,F,SWAP%(F) 1960 OUT 53,A 1970 RETURN 0 1980 FNEND