10 REM LOGIN generellt program f|r terminal-kommunikation ABC-80 och DEC-10 15 REM Program av Gunnar Tidner 1980-10-12 20 Z$="/*" : C9$=CHR$(13,10) : REM Filslutm{rke resp 30 P8$="123,4567" 40 P9$="FEJKAT" 50 DIM B$=119 60 ; CHR$(12);"LOKAL MODE!" 70 GOSUB 1140 80 ; CUR(5,5);"Vad vill du g|ra?" : ; 90 ; " 1 Half Duplex terminal" 100 ; " 2 Full Duplex Terminal" 110 ; " 3 PPN ";P8$ 120 ; " 4 Password" 130 ; " 5 Login" 140 ; " 6 System Time ";H%;M%;S% 150 ; " 7 Stopp till DEC (2 CTRL-C+CTRL-S)" 160 ; " 8 Chain till annat program" 170 ; " 9 Exit" 180 GET S$ : IF ASC(S$)<49 OR ASC(S$)>57 THEN 60 : S%=VAL(S$) 190 ON S% GOTO 200,220,910,940,970,1030,860,830,820 200 OPEN "V24:KB.1" ASFILE 1 : L%=1 : REM Half Duplex (No Echo) 210 GOTO 230 220 OPEN "V24:KA.1" ASFILE 1 : L%=1 : REM Full Duplex (Echo) 230 INPUT #L%,A$ 240 IF A$="SYNK" THEN 280 250 IF A$="SENDFIL" THEN 540 260 IF A$="SIGNAL" THEN OUT 6,7 : FOR T=1 TO 3000 : NEXT T : OUT 6,0 : GOTO 230 270 ; A$ : IF LEN(A$)=0 THEN 60 ELSE 230 280 ; "LOKAL MODE Tryck tangent!" : GET C$ 290 ; " *** Mottaga fil ***" 300 ; "Filnamn vid MONITORN:"; : INPUT F1$ 310 ; "Filnamn h{r:"; : INPUT F2$ 320 ; #L%,"Hejsan";C9$; 330 INPUT #L%,B$ 340 IF B$<>"SYNK" THEN 320 350 FOR T=1 TO 100 : NEXT T 360 ; #L%,"SYNKSVAR";C9$; 370 FOR T=1 TO 100 : NEXT T : REM Synkroniserad 380 ; #L%,F1$;C9$; 390 INPUTLINE #L%,B$ : B$=LEFT$(B$,LEN(B$)-2%) 400 IF B$<>"OPENED" THEN ; B$ : FOR T=1 TO 2000 : NEXT T : GOTO 230 410 PREPARE F2$ ASFILE 2 420 FOR I%=1 TO 10000 430 ; #L%,'>';C9$; 440 INPUTLINE #L%,B$ 450 IF LEFT$(B$,2%)=Z$ THEN 490 460 ; #2,B$; 470 ; I% 480 NEXT I% 490 CLOSE 2 500 ; "Antal rader=";I%-1% 510 OUT 6,7 : ; "Tryck ner n}gon tangent" : GET \$ : OUT 6,0 520 ; #L%,"Tack!";C9$; 530 GOTO 230 540 ; "LOKAL MODE Tryck tangent!" : GET C$ 550 ; " *** S{nda fil ***" 560 ; "Filnamn h{r:"; : INPUT F2$ 570 ; "Lagras vid MONITORN" 580 ; "under filnamn:"; : INPUT F1$ 590 OPEN F2$ ASFILE 2 600 ; #L%,"Hejsan";C9$; 610 INPUT #L%,B$ 620 IF B$<>"SENDFIL" THEN 600 630 FOR T=1 TO 100 : NEXT T 640 ; #L%,"SYNKSVAR";C9$; 650 FOR T=1 TO 100 : NEXT T 660 ; #L%,F1$;C9$; 670 ONERRORGOTO 750 680 FOR I%=1 TO 10000 690 INPUT #L%,A$ 700 INPUTLINE #2,B$ : B$=LEFT$(B$,LEN(B$)-2%) 710 ; I% 720 FOR T=1 TO 100 : NEXT T 730 ; #L%,B$;C9$; 740 NEXT I% 750 IF ERRCODE=34 THEN ; #L%,Z$;C9$; ELSE ; "Fel nr";ERRCODE 760 CLOSE 2 770 ; "Antal rader=";I%-1% 780 FOR T=1 TO 3000 : NEXT T 790 OUT 6,7 : ; "Tryck ner n}gon tangent" : GET \$ : OUT 6,0 800 ; #L%,"Tack!";C9$; 810 GOTO 230 820 END 830 ; CHR$(12);CUR(5,5);"CHAIN till annat program" 840 ; CUR(10,0);"Program-namn:"; : INPUT P$ 850 CHAIN P$ 860 OPEN "V24:KA.1" ASFILE 1 870 ; #1,CHR$(3,3) 880 ; #1,"TTY ECHO" 890 ; #1,"TTY NO PAGE" : ; #1,CHR$(19) 900 GOTO 220 910 ; "PPN? <";P8$;'>:'; : INPUTLINE \$ : \$=LEFT$(\$,LEN(\$)-2) 920 IF LEN(\$) THEN P8$=\$ 930 GOTO 60 940 ; "Password? <";P9$;'>:'; : INPUT \$ 950 IF LEN(\$) THEN P9$=\$ 960 GOTO 60 970 ; "LOGIN" 980 FOR T=1 TO 1000 : NEXT T 990 ; #1,"log ";P8$;CHR$(13); 1000 FOR T=1 TO 500 : NEXT T 1010 ; #1,P9$;CHR$(13); 1020 GOTO 230 1030 REM Klockan 1040 ; CHR$(12)CUR(5,5);"St{ll klockan!" 1050 ; CUR(10,5);"H,M,S:"; : INPUT H%,M%,S% 1060 REM Set time to 1070 REM H% Hours, M% Minutes and 1080 REM S% Seconds 1090 Z=1.8E+5*H%+3000*M%+50*S% 1100 Z1=INT(Z/256) : Z1%= NOT Z1 1110 Z%=( NOT (Z-Z1*256)) OR 4% 1120 POKE 65008%,Z%,Z1%,SWAP%(Z1%) 1130 GOTO 60 1140 REM Read System Time 1150 REM D% Contains number of days 1160 REM H% Contains hours. 1170 REM M% minutes and S% seconds 1180 D%=0 1190 IF (PEEK(65008%) AND 4%)=0% THEN 1190 1200 FOR I%=0% TO 2% 1210 Z%(I%)=255% XOR PEEK(65008%+I%) : NEXT I% 1220 Z1$=ADD$(MUL$(NUM$(256%*Z%(2%)+Z%(1%)),'512',0%),NUM$(Z%(0%)*2%),0%) 1230 IF COMP%(Z1$,'8640000')>-1% THEN D%=D%+1% : Z1$=SUB$(Z1$,'8640000',0%) : GOTO 1230 1240 Z=INT(VAL(Z1$)/100) 1250 H%=Z/3600 : Z=Z-3600*H% 1260 M%=Z/60 : S%=Z-60%*M% 1270 RETURN