1 ON ERROR GOTO 358 2 PRINT "PLEASE WAIT" 3 DIM JS%(8):DEFSHR JS%(1),bas10:DEFSHR JS%(2),bas86:DEFSHR JS%(3),bas87 4 DEFSHR JS%(4),bas11:DEFSHR JS%(5),bas85:DEFSHR JS%(6),bas88 5 DEFSHR JS%(7),bas89:DEFSHR JS%(8),s_60b 6 JS%(1)=2:JS%(2)=1:JS%(3)=1:JS%(4)=1:JS%(5)=1:JS%(6)=1:JS%(7)=0:JS%(8)=0 7 DISABLE 8 Time1$=TIME$:PRINT "Test, V2.06 SL":SLEEP 3000:Time2$=TIME$ 9 IF Time1$=Time2$ THEN PRINT "Setting Clock":TIME$="00:00:01":DATE$="01-01-2001" 10 ON ERROR GOTO 16 11 RemoteNode%=1 12 OPEN "RemNode" FOR INPUT AS #0 13 INPUT #0,RemoteNode$ 14 RemoteNode%=VAL(RemoteNode$) 15 CLOSE #0 16 ON ERROR GOTO 358 17 IF RemoteNode%>1 THEN GOTO 23 18 DEFSHR TxDMsg$,J1/CLV01:DEFSHR OMstr$,J1/CLV02 19 DEFSHR OMsrc$,J1/CLV03:DEFSHR OMterm$,J1/CLV04 20 DEFSHR RxDMsg1$,J1/CLV05:DEFSHR RxDMsg2$,J1/CLV06 21 DEFSHR RxDMsg3$,J1/CLV07:DEFSHR RxDMsg4$,J1/CLV08 22 GoTo 46 23 IF RemoteNode%>2 THEN GOTO 28 24 DEFSHR TxDMsg$,J2/CLV01:DEFSHR OMstr$,J2/CLV02:DEFSHR OMsrc$,J2/CLV03 25 DEFSHR OMterm$,J2/CLV04:DEFSHR RxDMsg1$,J2/CLV05:DEFSHR RxDMsg2$,J2/CLV06 26 DEFSHR RxDMsg3$,J2/CLV07:DEFSHR RxDMsg4$,J2/CLV08 27 GoTo 46 28 IF RemoteNode%>3 THEN GOTO 33 29 DEFSHR TxDMsg$,J3/CLV01:DEFSHR OMstr$,J3/CLV02:DEFSHR OMsrc$,J3/CLV03 30 DEFSHR OMterm$,J3/CLV04:DEFSHR RxDMsg1$,J3/CLV05:DEFSHR RxDMsg2$,J3/CLV06 31 DEFSHR RxDMsg3$,J3/CLV07:DEFSHR RxDMsg4$,J3/CLV08 32 GoTo 46 33 IF RemoteNode%>4 THEN GOTO 38 34 DEFSHR TxDMsg$,J4/CLV01:DEFSHR OMstr$,J4/CLV02:DEFSHR OMsrc$,J4/CLV03 35 DEFSHR OMterm$,J4/CLV04:DEFSHR RxDMsg1$,J4/CLV05:DEFSHR RxDMsg2$,J4/CLV06 36 DEFSHR RxDMsg3$,J4/CLV07:DEFSHR RxDMsg4$,J4/CLV08 37 GoTo 46 38 IF RemoteNode%>5 THEN GOTO 43 39 DEFSHR TxDMsg$,J5/CLV01:DEFSHR OMstr$,J5/CLV02:DEFSHR OMsrc$,J5/CLV03 40 DEFSHR OMterm$,J5/CLV04:DEFSHR RxDMsg1$,J5/CLV05:DEFSHR RxDMsg2$,J5/CLV06 41 DEFSHR RxDMsg3$,J5/CLV07:DEFSHR RxDMsg4$,J5/CLV08 42 GoTo 46 43 DEFSHR TxDMsg$,J6/CLV01:DEFSHR OMstr$,J6/CLV02:DEFSHR OMsrc$,J6/CLV03 44 DEFSHR OMterm$,J6/CLV04:DEFSHR RxDMsg1$,J6/CLV05:DEFSHR RxDMsg2$,J6/CLV06 45 DEFSHR RxDMsg3$,J6/CLV07:DEFSHR RxDMsg4$,J6/CLV08 46 DIM SPO%(4) 47 DIM OMS$(5):DIM OMT$(5):DIM OMR%(5) 48 DIM Cfg%(4):DIM SPTerm%(4):DIM SPFilt%(4) 49 DEFSHR MFunc%,Bd091 50 DIM SVC$(4):DIM SVPtr%(4):DIM SVStr$(4) 51 DIM SKT%(256) 52 DIM Cheat%(2):DEFSHR Cheat%(1),bx250:DEFSHR Cheat%(2),bx249 53 NEWLADDER 54 GOSUB 105:GOSUB 111:GOSUB 287 55 GOSUB 132 56 EVENT key:ON EVENT key GOSUB 220 57 ENABLE 58 GOSUB 66:GoSub 286 59 PRINT "MAIN LOOP" 60 NetErrors%=0 61 GOSUB 82 62 GOSUB 300 63 IF browser%>0 THEN GOTO 356 64 GOTO 61 65 END 66 ON ERROR GOTO 72 67 LCDCn%=55:LCDBr%=75 68 OPEN "Settings.LCD" FOR INPUT AS #0 69 INPUT #0,LCDCn$,LCDBr$ 70 LCDCn%=VAL(LCDCn$):LCDBr%=VAL(LCDBr$) 71 CLOSE #0 72 ON ERROR GOTO 358 73 LCDInit$=CHR$(4)+CHR$(20)+CHR$(23)+CHR$(15)+CHR$(LCDCn%)+CHR$(14)+CHR$(LCDBr%) 74 SFLSt$=LCDInit$+CHR$(12)+CHR$(1)+" Slave Display "+" Operational " 75 SFLSt$=SFLSt$+" "+" " 76 IF Cfg%(1)=1 THEN Print #1,SFLSt$; 77 IF Cfg%(2)=1 THEN Print #2,SFLSt$; 78 IF MFunc%<>1 THEN RETURN 79 IF Cfg%(3)=1 THEN Print #3,SFLSt$; 80 IF Cfg%(4)=1 THEN Print #4,SFLSt$; 81 RETURN 82 IF OpGuide%=0 THEN RETURN 83 ON ERROR GOTO 98 84 DspStr$=CHR$(1)+PADR$(RxDMsg1$,20," ") 85 DspStr$=DspStr$+CHR$(17)+CHR$(16)+CHR$(255)+CHR$(1)+PADR$(RxDMsg2$,20," ") 86 DspStr$=DspStr$+CHR$(17)+CHR$(16)+CHR$(255)+CHR$(2)+PADR$(RxDMsg3$,20," ") 87 DspStr$=DspStr$+CHR$(17)+CHR$(16)+CHR$(255)+CHR$(3)+PADR$(RxDMsg4$,20," ") 88 ON ERROR GOTO 358 89 NetErrors%=0 90 IF DspStr$=LastDsp$ THEN RETURN 91 LastDsp$=DspStr$ 92 IF Cfg%(1)=1 THEN Print #1,DspStr$; 93 IF Cfg%(2)=1 THEN Print #2,DspStr$; 94 IF MFunc%<>1 THEN RETURN 95 IF Cfg%(3)=1 THEN Print #3,DspStr$; 96 IF Cfg%(4)=1 THEN Print #4,DspStr$; 97 RETURN 98 IF ERR()<>32 THEN GOTO 358 99 ON ERROR GOTO 358 100 NetErrors%=NetErrors%+1:IF NetErrors%>30000 THEN NetErrors%=30000 101 IF NetErrors%<3 THEN RETURN 102 DspStr$=CHR$(17)+CHR$(16)+CHR$(255)+CHR$(3)+String$(20," ") 103 GoTo 90 104 RETURN 105 LastDsp$="X-*&~1v&$?":GoSub 286:GOSUB 280 106 FOR SS%=1 TO 4 107 Cfg%(SS%)=0 108 SPO%(SS%)=0 109 NEXT SS% 110 RETURN 111 OpGuide%=0 112 ON ERROR GOTO 119 113 OPEN "SlvSetup" FOR INPUT AS #0 114 FOR LS%=1 TO 4 115 INPUT #0,LS$ 116 Cfg%(LS%)=VAL(LS$) 117 NEXT LS% 118 CLOSE #0 119 ON ERROR GOTO 358 120 GOSUB 122 121 RETURN 122 FOR SSV%=1 TO 4 123 Tmp%=Cfg%(SSV%) 124 IF Tmp%>=40 AND Tmp%<50 THEN SPTerm%(SSV%)=4:Tmp%=Tmp%-40:GOTO 129 125 IF Tmp%>=50 AND Tmp%<60 THEN SPTerm%(SSV%)=5:Tmp%=Tmp%-50:GOTO 129 126 IF Tmp%>=60 AND Tmp%<70 THEN SPTerm%(SSV%)=6:Tmp%=Tmp%-60:GOTO 129 127 IF Tmp%>=70 AND Tmp%<80 THEN SPTerm%(SSV%)=7:Tmp%=Tmp%-70:GOTO 129 128 SPTerm%(SSV%)=0:Tmp%=0 129 SPFilt%(SSV%)=Tmp% 130 NEXT SSV% 131 RETURN 132 ON ERROR GOTO 148 133 IF Cfg%(1)=0 OR SPO%(1)>0 THEN GOTO 149 134 IF Cfg%(1)=1 THEN OpGuide%=1 135 IF Cfg%(1)>39 THEN GOTO 138 136 OPEN "com1: xpr null" FOR OUTPUT AS #1 137 SPO%(1)=1:GOTO 149 138 IF SPTerm%(1)=4 THEN OPEN "com1: event len40 trm10" FOR INPUT AS #1:GOTO 143 139 IF SPTerm%(1)=5 THEN OPEN "com1: event len40 trm13" FOR INPUT AS #1:GOTO 143 140 IF SPTerm%(1)=6 THEN OPEN "com1: event len40 trm3" FOR INPUT AS #1:GOTO 143 141 IF SPTerm%(1)=7 THEN OPEN "com1: event len1" FOR INPUT AS #1:GOTO 143 142 GOTO 149 143 FLUSH #1 144 ON EVENT #1 GOSUB 202 145 SPO%(1)=2 146 S1$="":INPUT #1,S1$ 147 GOTO 149 148 Cfg%(1)=0:SPO%(1)=0 149 ON ERROR GOTO 165 150 IF Cfg%(2)=0 OR SPO%(2)>0 THEN GOTO 166 151 IF Cfg%(2)=1 THEN OpGuide%=1 152 IF Cfg%(2)>39 THEN GOTO 155 153 OPEN "com2: xpr null" FOR OUTPUT AS #2 154 SPO%(2)=1:GOTO 166 155 IF SPTerm%(2)=4 THEN OPEN "com2: event len40 trm10" FOR INPUT AS #2:GOTO 160 156 IF SPTerm%(2)=5 THEN OPEN "com2: event len40 trm13" FOR INPUT AS #2:GOTO 160 157 IF SPTerm%(2)=6 THEN OPEN "com2: event len40 trm3" FOR INPUT AS #2:GOTO 160 158 IF SPTerm%(2)=7 THEN OPEN "com2: event len1" FOR INPUT AS #2:GOTO 160 159 GOTO 166 160 FLUSH #2 161 ON EVENT #2 GOSUB 206 162 SPO%(2)=2 163 S2$="":INPUT #2,S2$ 164 GOTO 166 165 Cfg%(2)=0:SPO%(2)=0 166 IF MFunc%<>1 THEN GOTO 201 167 ON ERROR GOTO 183 168 IF Cfg%(3)=0 OR SPO%(3)>0 THEN GOTO 184 169 IF Cfg%(3)=1 THEN OpGuide%=1 170 IF Cfg%(3)>39 THEN GOTO 173 171 OPEN "com3: xpr null" FOR OUTPUT AS #3 172 SPO%(3)=1:GOTO 184 173 IF SPTerm%(3)=4 THEN OPEN "com3: event len40 trm10" FOR INPUT AS #3:GOTO 178 174 IF SPTerm%(3)=5 THEN OPEN "com3: event len40 trm13" FOR INPUT AS #3:GOTO 178 175 IF SPTerm%(3)=6 THEN OPEN "com3: event len40 trm3" FOR INPUT AS #3:GOTO 178 176 IF SPTerm%(3)=7 THEN OPEN "com3: event len1" FOR INPUT AS #3:GOTO 178 177 GOTO 184 178 FLUSH #3 179 ON EVENT #3 GOSUB 210 180 SPO%(3)=2 181 S3$="":INPUT #3,S3$ 182 GOTO 184 183 Cfg%(3)=0:SPO%(3)=0 184 ON ERROR GOTO 200 185 IF Cfg%(4)=0 OR SPO%(4)>0 THEN GOTO 201 186 IF Cfg%(4)=1 THEN OpGuide%=1 187 IF Cfg%(4)>39 THEN GOTO 190 188 OPEN "com4: xpr null" FOR OUTPUT AS #4 189 SPO%(4)=1:GOTO 201 190 IF SPTerm%(4)=4 THEN OPEN "com4: event len40 trm10" FOR INPUT AS #4:GOTO 195 191 IF SPTerm%(4)=5 THEN OPEN "com4: event len40 trm13" FOR INPUT AS #4:GOTO 195 192 IF SPTerm%(4)=6 THEN OPEN "com4: event len40 trm3" FOR INPUT AS #4:GOTO 195 193 IF SPTerm%(4)=7 THEN OPEN "com4: event len1" FOR INPUT AS #4:GOTO 195 194 GOTO 201 195 FLUSH #4 196 ON EVENT #4 GOSUB 214 197 SPO%(4)=2 198 S4$="":INPUT #4,S4$ 199 GOTO 201 200 Cfg%(4)=0:SPO%(4)=0 201 ON ERROR GOTO 358:RETURN 202 DISABLE 203 SVC$(1)=S1$:SVI%=1:GOSUB 247 204 ENABLE 205 INPUT #1,S1$:RETURN 206 DISABLE 207 SVC$(2)=S2$:SVI%=2:GOSUB 247 208 ENABLE 209 INPUT #2,S2$:RETURN 210 DISABLE 211 SVC$(3)=S3$:SVI%=3:GOSUB 247 212 ENABLE 213 INPUT #3,S3$:RETURN 214 DISABLE 215 SVC$(4)=S4$:SVI%=4:GOSUB 247 216 ENABLE 217 INPUT #4,S4$:RETURN 218 SKPtr%=ASC(SVC$(SVI%)):IF SKPtr%<0 THEN SKPtr%=SKPtr%+256 219 KPKey$=CHR$(SKT%(SKPtr%)):GOTO 221 220 KPKey$=INKEY$ 221 IF KPKey$="" THEN RETURN 222 IF ASC(KPKey$)<>6 THEN GOTO 225 223 KPPtr%=KPPtr%-1:IF KPPtr%<1 THEN KPPtr%=0:KPStr$="":GOTO 228 224 KPStr$=LEFT$(KPStr$,LEN(KPStr$)-1):GOTO 228 225 IF KPKey$=40 THEN KPT$="":GOTO 243 228 IF KPStr$="" OR KPPtr%32 THEN GOTO 358 236 On Error GoTo 358 237 IF Cfg%(1)=1 THEN Print #1,KPOGStr$; 238 IF Cfg%(2)=1 THEN Print #2,KPOGStr$; 239 IF MFunc%<>1 THEN GOTO 220 240 IF Cfg%(3)=1 THEN Print #3,KPOGStr$; 241 IF Cfg%(4)=1 THEN Print #4,KPOGStr$; 242 GOTO 220 243 DISABLE 244 QORDS$=KPStr$:QORDR%=0:QORDT$=KPT$:QORDIP$="":GOSUB 281 245 ENABLE 246 GOSUB 280:GoTo 220 247 IF SVC$(SVI%)="" THEN GOTO 270 248 IF SPTerm%(SVI%)=7 THEN GOTO 218 249 IF SPFilt%(SVI%)=1 THEN GOTO 255 250 IF SPFilt%(SVI%)=2 THEN GOTO 257 251 IF SPFilt%(SVI%)=3 THEN GOTO 259 252 IF SPFilt%(SVI%)=4 THEN GOTO 262 253 IF SPFilt%(SVI%)=5 THEN GOTO 265 254 SVStr$(SVI%)=SVC$(SVI%):GOTO 268 255 IF LEN(SVC$(SVI%))<2 THEN GOTO 270 256 SVStr$(SVI%)=LEFT$(SVC$(SVI%),LEN(SVC$(SVI%))-1):GOTO 268 257 IF LEN(SVC$(SVI%))<3 THEN GOTO 270 258 SVStr$(SVI%)=LEFT$(SVC$(SVI%),LEN(SVC$(SVI%))-2):GOTO 268 259 IF LEN(SVC$(SVI%))<3 THEN GOTO 270 260 SVC$(SVI%)=RIGHT$(SVC$(SVI%),LEN(SVC$(SVI%))-1) 261 SVStr$(SVI%)=LEFT$(SVC$(SVI%),LEN(SVC$(SVI%))-1):GOTO 268 262 IF LEN(SVC$(SVI%))<4 THEN GOTO 270 263 SVC$(SVI%)=RIGHT$(SVC$(SVI%),LEN(SVC$(SVI%))-1) 264 SVStr$(SVI%)=LEFT$(SVC$(SVI%),LEN(SVC$(SVI%))-2):GOTO 268 265 IF LEN(SVC$(SVI%))<5 THEN GOTO 270 266 SVC$(SVI%)=RIGHT$(SVC$(SVI%),LEN(SVC$(SVI%))-1) 267 SVStr$(SVI%)=LEFT$(SVC$(SVI%),LEN(SVC$(SVI%))-3):GOTO 268 268 QORDS$=SVStr$(SVI%):QORDR%=SVI%:QORDT$="":GOSUB 281:SVStr$(SVI%)="" 269 GOSUB 280 270 SVC$(SVI%)="":RETURN 271 IF OpGuide%=0 THEN RETURN 272 BTOGD$=CHR$(1)+SPACE$(60) 273 IF Cfg%(1)=1 THEN Print #1,BTOGD$; 274 IF Cfg%(2)=1 THEN Print #2,BTOGD$; 275 IF MFunc%<>1 THEN RETURN 276 IF Cfg%(3)=1 THEN Print #3,BTOGD$; 277 IF Cfg%(4)=1 THEN Print #4,BTOGD$; 278 RETURN 279 GOSUB 271:RxDMsg1$="":RxDMsg2$="":RxDMsg3$="":RETURN 280 KPStr$="":KPPtr%=1:KPPtrMem%=1:RETURN 281 OMS$(NxtInOM%)=QORDS$:OMR%(NxtInOM%)=QORDR%:OMT$(NxtInOM%)=QORDT$ 282 NxtInOM%=NxtInOM%+1:IF NxtInOM%>1 THEN NxtInOM%=1 283 NumOM%=NumOM%+1:IF NumOM%<=1 THEN GoTo 285 284 NumOM%=1:NxtOtOM%=NxtInOM% 285 QORDS$="":QORDR%=0:QORDT$="":RETURN 286 QORDS$="":QORDR%=0:QORDT$="":NumOM%=0:NxtInOM%=1:NxtOtOM%=1:RETURN 287 FOR LKT%=1 TO 256 288 SKT%(LKT%)=65 289 NEXT LKT% 290 ON ERROR GOTO 298 291 OPEN "SERKEYB.MAP" FOR INPUT AS #0 292 Print "Map Serial Kybrd" 293 FOR LKT%=1 TO 256 294 INPUT #0,LKT$ 295 SKT%(LKT%)=VAL(LKT$) 296 NEXT LKT% 297 CLOSE #0 298 ON ERROR GOTO 358 299 RETURN 300 ON ERROR GOTO 304 301 IF VAL(TxDMsg$)=0 THEN GOTO 308 302 PRINT "MAIN LOOP" 303 RETURN 304 PRINT "NODE";RemoteNode%;" READ FAIL" 305 IF ERR()<>32 THEN GOTO 358 306 ON ERROR GOTO 358 307 RETURN 308 PRINT "MAIN LOOP" 309 IF NumOM%=0 THEN RETURN 310 GOSUB 311:RETURN 311 DISABLE 312 ON ERROR GOTO 318 313 OMstr$=OMS$(NxtOtOM%) 314 OMsrc$=STR$(OMR%(NxtOtOM%)) 315 OMterm$=OMT$(NxtOtOM%) 316 ON ERROR GOTO 358 317 GOTO 320 318 IF ERR()<>32 THEN GOTO 358 319 ON ERROR GOTO 358 320 NumOM%=NumOM%-1:IF NumOM%<1 THEN GOSUB 286:GOTO 322 321 NxtOtOM%=NxtOtOM%+1:IF NxtOtOM%>5 THEN NxtOtOM%=1 322 ENABLE 323 ON ERROR GOTO 327 324 TxDMsg$="51" 325 ON ERROR GOTO 358 326 RETURN 327 IF ERR()<>32 THEN GOTO 358 328 ON ERROR GOTO 358 329 RETURN 330 IF Cfg%(1)=1 THEN Print #1,CHR$(12) 331 IF Cfg%(2)=1 THEN Print #2,CHR$(12) 332 IF MFunc%<>1 THEN RETURN 333 IF Cfg%(3)=1 THEN Print #3,CHR$(12) 334 IF Cfg%(4)=1 THEN Print #4,CHR$(12) 335 RETURN 336 COGRS$=CHR$(17)+CHR$(16)+CHR$(255)+CHR$(2)+SPACE$(20) 337 IF Cfg%(1)=1 THEN Print #1,COGRS$; 338 IF Cfg%(2)=1 THEN Print #2,COGRS$; 339 IF MFunc%<>1 THEN RETURN 340 IF Cfg%(3)=1 THEN Print #3,COGRS$; 341 IF Cfg%(4)=1 THEN Print #4,COGRS$; 342 RETURN 343 IF SPO%(1)=0 THEN GOTO 346 344 IF SPO%(1)=2 THEN DELEVENT #1 345 CLOSE #1:SPO%(1)=0 346 IF SPO%(2)=0 THEN GOTO 349 347 IF SPO%(2)=2 THEN DELEVENT #2 348 CLOSE #2:SPO%(2)=0 349 IF MFunc%<>1 THEN RETURN 350 IF SPO%(3)=0 THEN GOTO 353 351 IF SPO%(3)=2 THEN DELEVENT #3 352 CLOSE #3:SPO%(3)=0 353 IF SPO%(4)=0 THEN RETURN 354 IF SPO%(4)=2 THEN DELEVENT #4 355 CLOSE #4:SPO%(4)=0:RETURN 356 DELEVENT 357 JS%(1)=2:JS%(2)=1:JS%(3)=1:Print "Exiting . . .":GOSUB 343:SLEEP 1000:GOSUB 330 358 PRINT "ERR";ERR();",LIN";ERL() 359 JS%(1)=2:JS%(2)=1:JS%(3)=1 360 GOSUB 279 361 SLEEP 1000 362 END