10 REM LOGAIN generellt program f|r terminal-kommunikation ABC-80 och DEC-10
15 REM Program av Gunnar Tidner 1981-01-30
16 REM Modifierad N-G Westermark 1981-02-20 TILL[GG AV PRINTER-RUTIN
20 Z$="/*" : C9$=CHR$(13,10) : REM Filslutm{rke resp
30 P8$="123,456"
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"
163 ; " 9 Exit"
165 ; " U Utskrift av 24 rader a' 80 tecken"
175 ONERRORGOTO 10
180 ; CUR(20,0) : GET S$ : IF S$='U' OR S$='u' THEN S$='10'
181 S%=VAL(S$)
185 IF S%>10 OR S%<1 THEN 10
190 ON S% GOTO 200,220,910,940,970,1030,860,830,820,1300
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 : GET \$ : 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
425 FOR T=1 TO 100 : NEXT T
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$
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
1300 REM *** Utskrift av sk{rmen ***
1305 ; CHR$(12);CUR(8,0)' Utskrift p}g}r '
1306 ; CUR(15,0)' . - Avbryta'
1310 REM *** Enhet SKR : ***
1320 OPEN "PR:" ASFILE 3
1330 OPEN "SKR:" ASFILE 4
1335 DIM A$(24)=82
1340 FOR I%=1 TO 24
1345 IF INP(56)=46 OR INP(56)=174 THEN 1380
1350 INPUTLINE #4,A$(I%) : A$(I%)=LEFT$(A$(I%),LEN(A$(I%))-2)
1355 ; CUR(10,2)I%-1% : ; SPACE$(5)
1356 FOR I8%=80% TO 1% STEP -1% : IF ASC(MID$(A$(I%),I8%,1%))=32% OR ASC(MID$(A$(I%),I8%,1%))=128% NEXT I8%
1357 IF I8%<1% ; #3 : GOTO 1370
1360 ; #3,MID$(A$(I%),1%,I8%)
1370 NEXT I%
1380 CLOSE 3 : CLOSE 4
1385 IF INP(56)=46 OR INP(56)=174 THEN GET S$
1390 GOTO 10