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