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