10 REM +++++++++++++++++++++++++++++++++
11 REM ! Program .... ABCTRANS
12 REM ! Utg}va 2 800915
13 REM ! av (c) Gunnar Tidner
14 REM ! {ndrat av Ola Hedlin och
15 REM ! Samy Ramdani 810427
16 REM ! Minne 16 Kbytes
17 REM ! Ins{nt av ????
18 REM +++++++++++++++++++++++++++++++++
19 REM Generellt program f|r terminal-
20 REM kommunikation med ABC80
21 Z$="/*" : C9$=CHR$(13%,10%) : REM Filslutm{rke resp
22 DIM B$=119%
23 ; CHR$(12%)TAB(13%)"* Lokal Mode *"
24 POKE 32296%,160%
25 ; CUR(5%,5%)"Vad |nskas..." : ;
26 ; " 1 Half Duplex terminal"
27 ; " 2 Full Duplex terminal"
28 ; " 3 System Time "
29 ; " 4 Telefon-nummer"
30 ; " 5 Exit"
31 IF T1$<>"" ; CUR(22%,12%)"K|rtid: "T1$
32 GOSUB 118 : ; CUR(2%,16%)T$ : IF INP(56%)<128% 32
33 S1%=INP(56%) AND 127% : IF S1%<49% OR S1%>53% 32 : S1%=S1%-48% : POKE 65013%,0%
34 POKE 32296%,32%
35 ON S1% GOTO 36,38,109,102,101
36 OPEN "V24:KB.1" ASFILE 1 : L%=1 : REM Half Duplex (No Echo)
37 GOTO 39
38 OPEN "V24:KA.1" ASFILE 1 : L%=1 : REM Full Duplex (Echo)
39 INPUT #L%,A$
40 IF A$="SYNK" THEN 45
41 IF A$="SENDFIL" THEN 71
42 IF A$="SIGNAL" THEN OUT 6,7 : GET \$ : GOTO 39
43 ; A$ : IF LEN(A$)<>0 THEN 39
44 CLOSE 1 : Q=Z : GOSUB 118 : Z=Z-Q : GOSUB 124 : T1$=T$ : GOTO 23
45 ; : ; " *** Mottaga fil ***" : ;
46 F1$=' ' : F2$=' ' : POKE 65013,0
47 ; "Filnamn vid MONITORN:"; : INPUT F1$
48 ; "RETURN GER SAMMA NAMN"
49 ; "Filnamn h{r:"; : INPUT F2$ : IF LEN(F2$)=0 THEN F2$=F1$ : ; F2$
50 ; #L%,"Hejsan";C9$;
51 INPUT #L%,B$
52 IF B$<>"SYNK" THEN 50
53 FOR T=1 TO 100 : NEXT T
54 ; #L%,"SYNKSVAR";C9$;
55 FOR T=1 TO 100 : NEXT T : REM Synkroniserad
56 ; #L%,F1$;C9$;
57 INPUTLINE #L%,B$ : B$=LEFT$(B$,LEN(B$)-2%)
58 IF B$<>"OPENED" THEN ; B$ : FOR T=1 TO 2000 : NEXT T : GOTO 39
59 PREPARE F2$ ASFILE 2
60 FOR I%=1 TO 10000
61 ; #L%,'>';C9$;
62 INPUTLINE #L%,B$
63 IF LEFT$(B$,2%)=Z$ THEN 67
64 ; #2,B$;
65 ; B$;
66 NEXT I%
67 CLOSE 2
68 ; CHR$(7%)"Antal rader=";I%-1%
69 FOR F=0 TO 1000 : NEXT F : ; #L%' '
70 GOTO 39
71 ; : ; " *** S{nda fil ***" : ;
72 F1$=' ' : F2$=' ' : POKE 65013,0
73 ; "Filnamn h{r:"; : INPUT F2$
74 ; "RETURN GER SAMMA NAMN"
75 ; "Lagras vid MONITORN"
76 ; "under filnamn:"; : INPUT F1$ : IF LEN(F1$)=0 THEN F1$=F2$ : ; F1$
77 ONERRORGOTO 127
78 OPEN F2$ ASFILE 2
79 ; #L%,"Hejsan";C9$;
80 INPUT #L%,B$
81 IF B$<>"SENDFIL" THEN 79
82 FOR T=1 TO 100 : NEXT T
83 ; #L%,"SYNKSVAR";C9$;
84 FOR T=1 TO 100 : NEXT T
85 ; #L%,F1$;C9$;
86 ONERRORGOTO 94
87 FOR I%=1 TO 10000
88 INPUT #L%,A$
89 INPUTLINE #2,B$ : B$=LEFT$(B$,LEN(B$)-2%)
90 ; B$
91 FOR T=1 TO 100 : NEXT T
92 ; #L%,B$;C9$;
93 NEXT I%
94 ; #L%Z$;C9$;
95 CLOSE 2
96 ; "Antal rader=";I%-1%
97 ; #L%,Z$;C9$
98 FOR T=1 TO 3000 : NEXT T
99 ; CHR$(7%) : ; #L%' '
100 GOTO 39
101 ; CUR(12%,0%); : END
102 ; CHR$(12%)TAB(2%)"* Telefon-nummer till monitor vid: *"
103 ; CUR(5%,0%)"ABC-KLUBBEN: 08-80 15 23"
104 ; : ; "ELFA: 08-730 07 06"
105 ; : ; "DEC-10: 08-23 86 60"
106 ; : ; "G\TEBORG: 031-13 95 56"
107 ; : ; "KRISTINEHAMN: 0550-141 66" : ; "SVENNES DATA CENTER"
108 GET A9$ : GOTO 23
109 REM <<< KLOCKAN >>>
110 ONERRORGOTO 23 : ; CUR(2%,16%)SPACE$(10%);
111 ; CUR(18%,0%)"ST[LL KLOCKAN (HH,MM,SS)"; : INPUT H%,M%,S%
112 Z=H%*3600+M%*60+S%
113 Z1%=Z*50/256
114 Z%= NOT (50*(Z-Z1%/50*256))
115 Z1%= NOT Z1%
116 POKE 65008%,Z%,Z1%,SWAP%(Z1%)
117 GOTO 23
118 IF (PEEK(65008%) AND 4%)=0% 118
119 Z%(0%)=PEEK(65008%) XOR 255%
120 Z%(1%)=PEEK(65009%) XOR 255%
121 Z%(2%)=PEEK(65010%) XOR 255%
122 Z=((Z%(2%)*256)+Z%(1%))*5.12+Z%(0%)/50
123 IF Z>86400 Z=Z-86400 : GOTO 123
124 H%=ABS(Z/3600) : Z=ABS(Z-3600*H%) : M%=ABS(Z/60) : S%=ABS(Z-60*M%)
125 T$=RIGHT$(NUM$(100%+H%),3%)+' '+RIGHT$(NUM$(100%+M%),3%)+' '+RIGHT$(NUM$(100%+S%),3%)
126 RETURN
127 ; "FILEN SAKNAS" : GOTO 71