10 REM ++++++++++++++++++++++++++++++++
11 REM ! Program .... ABCTRAN4
12 REM ! Utg}va 1.4 1981-08-20
13 REM ! av (c) Gunnar Tidner
14 REM ! {ndrat av Se nedan
15 REM ! Minne 16 Kbytes f|r flexskiva
16 REM ! Ins{nt av <1198>
17 REM ++++++++++++++++++++++++++++++++
18 REM
19 REM Screened by )TCP(
20 REM
21 OUT 58,0
22 REM Generellt program f|r terminal-
23 REM kommunikation med ABC80
24 REM
25 REM Program av Gunnar Tidner 800915
26 REM Modifierat av :
27 REM Ola Hedlin & Samy Ramdani 810427
28 REM Modifierat av :
29 REM Mats Knuts
30 REM Lindahl&Rothoff AB 810729
31 REM Modifierat av :
32 REM * B J S * 810820
33 REM ********************************
34 Z$="/*" : C9$=CHR$(13%,10%) : REM Filslutm{rke resp
35 DIM B$=119%
36 ; CHR$(12%)TAB(13%)"* Lokal Mode *"
37 POKE 32552%,160%
38 ; CUR(4%,5%)"Vad |nskas..." : ;
39 ; " 1 Half Duplex terminal"
40 ; " 2 Full Duplex terminal"
41 ; " 3 System Time "
42 ; " 4 Telefon-nummer"
43 ; " 5 Dumpa bildminnet"
44 ; " 6 Full Duplex paritet space "
45 ; " 7 Exit"
46 IF T1$<>"" ; CUR(22%,12%)"K|rtid: "T1$
47 GOSUB 176 : ; CUR(2%,16%)T$ : IF INP(56%)<128% 47
48 S1%=INP(56%) AND 127% : IF S1%<49% OR S1%>55% 47 : S1%=S1%-48% : POKE 65013%,0%
49 POKE 32552%,32%
50 ; CHR$(12%)
51 ON S1% GOTO 54,56,167,124,186,52,123
52 OPEN "V24:HA.1" ASFILE 1 : L%=1% : REM Full Duplex (Echo) f|r DATATRONICS info tr{d
53 GOTO 57
54 OPEN "V24:KB.1" ASFILE 1 : L%=1% : REM Half duplex (No Echo)
55 GOTO 57
56 OPEN "V24:KA.1" ASFILE 1 : L%=1 : REM Full Duplex (Echo)
57 INPUT #L%,A$
58 IF A$="SYNK" THEN 63
59 IF A$="SENDFIL" THEN 91
60 IF A$="SIGNAL" THEN OUT 6,7 : GET \$ : GOTO 57
61 ; A$ : IF LEN(A$)<>0 THEN 57
62 CLOSE 1 : Q=Z : GOSUB 161 : Z=Z-Q : GOSUB 167 : T1$=T$ : GOTO 36
63 ; : ; " *** Mottaga fil ***" : ;
64 F1$=' ' : F2$=' ' : POKE 65013,0
65 ; "Om extension utel{mnas antas BAS"
66 ; "Filnamn vid MONITORN:"; : INPUT F1$
67 IF INSTR(1,F1$,'.')=0 THEN F1$=F1$+'.BAS'
68 ; "RETURN GER SAMMA NAMN"
69 ; "Filnamn h{r:"; : INPUT F2$ : IF LEN(F2$)=0 THEN F2$=F1$ : ; F2$
70 ; #L%,"Hejsan";C9$;
71 INPUT #L%,B$
72 IF B$<>"SYNK" THEN 70
73 FOR T=1 TO 100 : NEXT T
74 ; #L%,"SYNKSVAR";C9$;
75 FOR T=1 TO 100 : NEXT T : REM Synkroniserad
76 ; #L%,F1$;C9$;
77 INPUTLINE #L%,B$ : B$=LEFT$(B$,LEN(B$)-2%)
78 IF B$<>"OPENED" THEN ; B$ : FOR T=1 TO 2000 : NEXT T : GOTO 57
79 PREPARE F2$ ASFILE 2
80 FOR I%=1 TO 10000
81 ; #L%,'>';C9$;
82 INPUTLINE #L%,B$
83 IF LEFT$(B$,2%)=Z$ THEN 87
84 ; #2,B$;
85 ; B$;
86 NEXT I%
87 CLOSE 2
88 ; CHR$(7%)"Antal rader=";I%-1%
89 FOR F=0 TO 1000 : NEXT F : ; #L%' '
90 GOTO 57
91 ; : ; " *** S{nda fil ***" : ;
92 F1$=' ' : F2$=' ' : POKE 65013,0
93 ; "Om extension utel{mnas antas BAS"
94 ; "Filnamn h{r:"; : INPUT F2$
95 IF INSTR(1,F2$,'.')=0 THEN F2$=F2$+'.BAS'
96 ; "RETURN GER SAMMA NAMN"
97 ; "Lagras vid MONITORN"
98 ; "under filnamn:"; : INPUT F1$ : IF LEN(F1$)=0 THEN F1$=F2$ : ; F1$
99 ONERRORGOTO 170
100 OPEN F2$ ASFILE 2
101 ; #L%,"Hejsan";C9$;
102 INPUT #L%,B$
103 IF B$<>"SENDFIL" THEN 101
104 FOR T=1 TO 100 : NEXT T
105 ; #L%,"SYNKSVAR";C9$;
106 FOR T=1 TO 100 : NEXT T
107 ; #L%,F1$;C9$;
108 ONERRORGOTO 116
109 FOR I%=1 TO 10000
110 INPUT #L%,A$
111 INPUTLINE #2,B$ : B$=LEFT$(B$,LEN(B$)-2%)
112 ; B$
113 FOR T=1 TO 100 : NEXT T
114 ; #L%,B$;C9$;
115 NEXT I%
116 ; #L%Z$;C9$;
117 CLOSE 2
118 ; "Antal rader=";I%-1%
119 ; #L%,Z$;C9$
120 FOR T=1 TO 3000 : NEXT T
121 ; CHR$(7%) : ; #L%' '
122 GOTO 57
123 ; CUR(12%,0%); : END
124 ; CHR$(12%)TAB(2%)"* Telefon-nummer till monitor vid: *"
125 ; CUR(3%,0%)" (1) ABC-KLUBBEN: 08-80 15 23"
126 ; : ; " (2) ELFA: ( kv{ll ) 08-730 07 06"
127 ; " (3) (dag/350) 08-730 07 00"
128 ; : ; " (4) DEC-10: 08-23 86 60"
129 ; : ; " (5) G\TEBORG: 031-13 95 56"
130 ; : ; " (6) KRISTINEHAMN: 0550-141 66" : ; " SVENNES DATA CENTER"
131 ; : ; " (7) DATATRONIC 08-19 05 22"
132 ; : ; " (8) *********** 00000 "
133 ; : ; " (9) *********** 00000 "
134 ; CUR(22,8)"Till vem vill du ringa ";
135 INPUT E% : IF E%=0 THEN 36 : ; CUR(22,8)" JAG RINGER TILL "
136 FOR J=32607 TO 32621 : POKE J,PEEK(J) OR 128 : NEXT J
137 ON E% GOTO 138,139,141,143,144,145,147,148,149
138 E$="801523" : FOR J=32134 TO 32145 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
139 E$="7300706" : FOR J=32390 TO 32394 : POKE J,PEEK(J) OR 128 : NEXT J
140 FOR J=32401 TO 32409 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
141 E$="7300700" : FOR J=32390 TO 32394 : POKE J,PEEK(J) OR 128 : NEXT J
142 FOR J=32529 TO 32537 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
143 E$="238660" : FOR J=31790 TO 31796 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
144 E$="031139556" : FOR J=32046 TO 32054 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
145 E$="055014166" : FOR J=32302 TO 32314 : POKE J,PEEK(J) OR 128 : NEXT J
146 FOR J=32430 TO 32448 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
147 E$="190522" : FOR J=32686 TO 32695 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
148 E$="000000" : FOR J=31958 TO 31968 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
149 E$="0000000" : FOR J=32214 TO 32224 : POKE J,PEEK(J) OR 128 : NEXT J : GOTO 151
150 REM NUMMERSLAGNING
151 GOSUB 153 : ; CUR(22,8)" L Y F T P ] L U R E N " : FOR E2=1 TO 5000 : NEXT E2
152 OUT 58,0 : GOTO 36
153 E1%=LEN(E$)
154 OUT 58,32 : FOR E2=0 TO 2000 : NEXT E2
155 FOR G%=1% TO E1%
156 G$=MID$(E$,G%,1%)
157 G1%=VAL(G$)
158 FOR E2=0 TO 300 : NEXT E2
159 FOR E3%=0% TO G1%
160 FOR E2=0 TO 70 : NEXT E2
161 OUT 58,0
162 FOR E2=0 TO 70 : NEXT E2
163 OUT 58,32
164 NEXT E3%
165 NEXT G%
166 RETURN
167 REM <<< KLOCKAN >>>
168 ONERRORGOTO 36 : ; CUR(2%,16%)SPACE$(10%);
169 ; CUR(18%,0%)"ST[LL KLOCKAN (HH,MM,SS)"; : INPUT H%,M%,S%
170 Z=H%*3600+M%*60+S%
171 Z1%=Z*50/256
172 Z%= NOT (50*(Z-Z1%/50*256))
173 Z1%= NOT Z1%
174 POKE 65008%,Z%,Z1%,SWAP%(Z1%)
175 GOTO 36
176 IF (PEEK(65008%) AND 4%)=0% 176
177 Z%(0%)=PEEK(65008%) XOR 255%
178 Z%(1%)=PEEK(65009%) XOR 255%
179 Z%(2%)=PEEK(65010%) XOR 255%
180 Z=((Z%(2%)*256)+Z%(1%))*5.12+Z%(0%)/50
181 IF Z>86400 Z=Z-86400 : GOTO 181
182 H%=ABS(Z/3600) : Z=ABS(Z-3600*H%) : M%=ABS(Z/60) : S%=ABS(Z-60*M%)
183 T$=RIGHT$(NUM$(100%+H%),3%)+' '+RIGHT$(NUM$(100%+M%),3%)+' '+RIGHT$(NUM$(100%+S%),3%)
184 RETURN
185 ; "FILEN SAKNAS" : GOTO 91
186 OPEN "SKR:" ASFILE 4
187 ; CHR$(12%)'OBS !! Dumpning till printer fungerar endast om denna {r ansluten'
188 ; ' till ABC-bussen tex. via ABC-CEN, ABC-MIO/FIO eller ABC-SIO'
189 ; ' i annat fall m}ste man g} omv{gen via diskett och sedan '
190 ; ' titta p} filen med VISA'
191 ; 'Vad skall dumpningsfilen heta '; : INPUT D5$
192 ; : ; 'Ange radbredd (det vill s{ga hur m}nga av de 80 kolumnerna du vill `a med)'; : INPUT R5%
193 IF R5%>80% OR R5%<1% THEN ; 'Mellan 1 och 80' : GOTO 192
194 PREPARE D5$ ASFILE 5
195 FOR Q%=1% TO 24%
196 INPUTLINE #4,A9$ : A9$=LEFT$(A9$,LEN(A9$)-2%)
197 A9$=LEFT$(A9$,R5%)
198 PRINT #5,A9$
199 NEXT Q%
200 CLOSE 4 : CLOSE 5
201 GOTO 36