'EDAS - (C) 1996 - microMETER Corp. DIM D%(64),D1%(16),D2%(16),D3%(16),D4%(16) DIM D5%(16),D6%(16),D7%(16),D8%(16) DIM D9%(16),DA%(16),DB%(16),DC%(16) COMMON SHARED D%() DECLARE SUB AQB (M%, BYVAL D%, F%) DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 COL = 0: SET = 0: Z = 0: INH = 0 C00 = 0: C01 = 1: C02 = 2: C03 = 3: C04 = 4: C05 = 5: C06 = 6: C07 = 7 C2 = 7: C3 = 0: '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht DEF SEG = &HB800 INH = 0 FOR I = 1 TO 80 SB$ = SB$ + CHR$(196) DB$ = DB$ + CHR$(205) NEXT I FILE$ = "EDAS.TXT" FIL3$ = "SEND.DAT" OPEN "A", #3, FIL3$ CL$ = CHR$(13) + CHR$(10) CLS GOSUB S780 COL = VAL(MID$(TXT$(8), 14, 1)) LG$ = MID$(TXT$(8), 15, 1) PG$ = MID$(TXT$(8), 16, 1) GOSUB S800 GOSUB S805 S120: 'NEW FILENAME LOOP FIL2$ = MID$(TXT$(8), 1, 12) OPEN "A", #2, FIL2$ PRINT #2, "START " + DATE$ + " " + TIME$ IF COL = 1 THEN COLOR C01, C2, C3 LOCATE (25): PRINT " "; CHR$(176); " (C) 1996 - microMETER Corporation - v 1.04 "; CHR$(176); " " M% = &H82:CALL AQB(M%, VARPTR(D%(0)), F%) D%(0) = 1:D%(1) = &H2E0:D%(2) = 5:D%(3) = 0 M% = &H80:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H84:CALL AQB(M%, VARPTR(D%(0)), F%) S130: IF COL = 1 THEN COLOR C01, C2, C3 PRINT TXT$(1) TIM2$ = TIME$: DAT2$ = DATE$ PRINT "<>EDAS Main Menu Start T/D " + TIM2$ + " " + DAT2$ PRINT DB$; IF COL = 1 THEN COLOR C00, C2, C3 FOR I = 1 TO 1: PRINT : NEXT I FOR I = 1 TO 3: PRINT TXT$(I + 7) + " "; : NEXT I PRINT SB$ FOR I = 1 TO 2: PRINT : NEXT I PRINT " MENU" PRINT " 0 - Exit to DOS (type EDAS or reboot to start)" PRINT " 1 - Requeue day to send (eg. 095) " PRINT " 2 - Send now" PRINT " 3 - Change send time (HHMM-HHMM military)" PRINT " 4 - Change phone #" FOR I = 1 TO 1: PRINT : NEXT I FOR J = 2 TO 7: PRINT TXT$(J): NEXT J IF COL = 1 THEN COLOR C04, C2, C3 PRINT "MENU choice: _ " PRINT S140:'MAIN LOOP REC$ = INKEY$ IF REC$ = "0" THEN GOSUB S790: GOSUB S950: GOTO S999 IF REC$ = "1" THEN INPUT "DAY# (001-999)? ", X$: PRINT #3, X$ + "R" IF REC$ = "2" THEN PRINT #3, "NOW ": GOSUB S790: GOSUB S950: GOTO S990 IF REC$ = "3" THEN INPUT "HHMM-HHMM? ", X$: MID$(TXT$(10), 1, 9) = X$ IF REC$ = "4" THEN INPUT "ATDT 999 9999? ", X$: TXT$(9) = X$ GOSUB S800 GOSUB S600:'CHECK FOR PULSE NN = MN IF NN > 30 THEN NN = NN - 30 IF NN > 15 THEN NN = NN - 15 IF NN <> 0 AND NN <> 5 AND NN <> 10 AND NN <> 15 THEN INH = 0: GOTO S160 IF INH = 1 THEN GOTO S160 'NEW FIVE MINUTE INTERVAL INH = 1 'ACQUTEK - GET 1 SET OF AVERAGED VALUES EVERY 5 MINUTES AND WRITE TO FILE S141: IF MID$(TIME$,7,2) <> "00" THEN GOSUB S600: GOTO S141 GOSUB S600 FOR I = 1 to 16:D1%(I)=D%(I):NEXT I GOSUB S600 FOR I = 1 to 16:D2%(I)=D%(I):NEXT I GOSUB S600 FOR I = 1 to 16:D3%(I)=D%(I):NEXT I GOSUB S600 FOR I = 1 to 16:D4%(I)=D%(I):NEXT I FOR I = 1 to 16:D%(I)=D1%(I)/4+D2%(I)/4+D3%(I)/4+D4%(I)/4:NEXT I HZ$="" IF PG$ = " " THEN D%(16) = DA% DA% = 0:DAF = 0 FOR I = 0 TO 15 HX$= LEFT$(RIGHT$("0000" + HEX$(D%(I + 1)), 4), 4) HY$= MID$(HX$,1,3) HZ$= HZ$+HY$ :'CONCATENATE 3 BYTES TO LINE NEXT I PRINT #2, HZ$:'PRINT THE WHOLE LINE S160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO S500 IF SET = 1 THEN GOTO S500 SET = 1 FIL4$=FIL2$ PRINT #3, DV$ + "Q" DV = DV + 1 DW = DV GOSUB S800 GOSUB S805 GOSUB S790 PRINT #2, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 SHL$="COPY "+FIL4$+" A:" IF LG$ = " " THEN SHELL SHL$ GOTO S120 S500: 'SEE IF WE CAN SEND YET GOSUB S850 GOTO S140 S600: M% = &H9A:CALL AQB(M%, VARPTR(D%(0)), F%) IF DAF = 0 AND D%(16) < 1000 AND DA% < 4095 THEN DA% = DA% + 1:DAF = 1 IF DAF <> 0 AND DA%(16) > 1000 THEN DAF = 0 RETURN S780: 'LOAD GLOBAL CLOSE #1 OPEN "I", #1, FILE$ FOR I = 1 TO 10 LINE INPUT #1, TXT$(I) NEXT I RETURN S790: 'WRITE GLOBAL CLOSE #1 OPEN "O", #1, FILE$ FOR I = 1 TO 10 PRINT #1, TXT$(I) NEXT I RETURN S800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) K = 560 POKE K + 0, H1 POKE K + 2, H2 POKE K + 4, ASC(":") POKE K + 6, M1 POKE K + 8, M2 POKE K + 10, ASC(":") POKE K + 12, S1 POKE K + 14, S2 RETURN S805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 'IF DW > 0 AND DV <> DW THEN DV = DW :'PREVENT NON-ADVANCE OF JULIAN DATE DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ MID$(TXT$(8), 10, 3) = DV$ RETURN S850: 'SEND QUEUED DATA IF CUSTOMER WINDOW IS OPEN HHMN = HH * 100 + MN IF HHMN < VAL(MID$(TXT$(10), 1, 4)) THEN GOTO S890 IF HHMN > VAL(MID$(TXT$(10), 6, 4)) THEN GOTO S890 GOSUB S790 GOSUB S950 GOTO S990 S890: RETURN S950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ CLOSE COLOR 7, 0, 0 CLS RETURN S990: 'ATTEMPT TO SEND UNTIL CUSTOMER WINDOW CLOSES CHAIN "SEND" S999: M% = &H81:CALL AQB(M%, VARPTR(D%(0)), F%) SYSTEM 'EDAS2 - (C) 1996 - microMETER Corp. 'PROCESS UPLOADED FILES TO FILL TEMPORAL GAPS WITH ZEROES (288 LINES) INPUT "Julian date (eg 045) ";JUL$ FIL2$ = "EDAS2.OUT" FIL3$ = "EDAS.TXT" FIL4$ = "EDAS.FIL" OPEN "I", #1, FIL3$ FOR I = 1 TO 8 LINE INPUT #1,REC$ NEXT I CLOSE #1 RE2$=MID$(REC$,1,8) FILE$=RE2$+"."+JUL$ OPEN "I", #1, FILE$ OPEN "O", #2, FIL2$ RC = 0 END$ = "ENDED 00-00-0000 00:00:00" ZER$ = "000000000000000000000000000000000000000000000000" S100: IF EOF(1) <> 0 THEN GOTO S500 LINE INPUT #1, REC$ IF MID$(REC$, 1, 5) = "START" THEN GOSUB S300 IF MID$(REC$, 1, 5) = "ENDED" THEN END$ = REC$: GOTO S100 IF MID$(REC$, 1, 5) <> "START" THEN PRINT #2, REC$: RC = RC + 1 GOTO S100 S300: H2 = VAL(MID$(REC$, 18, 2)) M2 = VAL(MID$(REC$, 21, 2)) HH = VAL(MID$(END$, 18, 2)) MN = VAL(MID$(END$, 21, 2)) HD = H2 - HH: MD = M2 - MN HH = H2: MN = M2 M3 = HD * 60 + MD II = INT(M3 / 5) IF II = 0 THEN GOTO S305 FOR I = 1 TO II PRINT #2, ZER$ RC = RC + 1 NEXT I S305: RETURN S500: HH = VAL(MID$(END$, 18, 2)) MN = VAL(MID$(END$, 21, 2)) H2 = 23: M2 = 60 HD = H2 - HH: MD = M2 - MN M3 = HD * 60 + MD II = INT(M3 / 5) IF II = 0 THEN GOTO S505 FOR I = 1 TO II IF RC < 288 THEN PRINT #2, ZER$: RC = RC + 1 NEXT I S505: SC = RC IF RC > 287 THEN GOTO S600 FOR I = SC TO 287 PRINT #2, ZER$ RC = RC + 1 NEXT I S600: CLOSE PRINT RC; " REC " OPEN "O" ,#1, FIL4$ PRINT #1,FILE$ CLOSE #1 'CHAIN "EDAS3" 'EDAS3 - (C) 1996 - microMETER Corp. 'CONVERT DISPLAY HEX TO SCALED DECIMAL VALUES (288 lines) DIM V(16),V2(16),V3(16),V4(16),V5(16) DIM F1M(16),F1D(16),F1B(16),F2M(16),F2D(16),F2B(16) 'FIL2$ = COMMAND$ FILE$ = "EDAS2.OUT" 'FIL2$ = "EDAS3.OUT" FIL3$ = "SCALE.DAT" FIL4$ = "EDAS.FIL" OPEN "I", #1, FIL4$ LINE INPUT #1,FIL2$ CLOSE #1 MID$(FIL2$,8,1) = "2" OPEN "I", #1, FILE$ OPEN "O", #2, FIL2$ OPEN "I", #3, FIL3$ FOR I = 1 TO 16 INPUT #3, F1M(I),F1D(I),F1B(I),F2M(I),F2D(I),F2B(I) NEXT I CLOSE #3 NUL=0 INPUT "Drop nulls? (y,n) ",X$ IF X$ = "Y" OR X$ = "y" THEN NUL=1 RCI = 0:RCO = 0 S100: IF EOF(1) <> 0 THEN GOTO S500 LINE INPUT #1, REC$ RCI=RCI+1 FOR I = 1 TO 16 J = I * 3 - 2 HX$ = MID$(REC$,J,3) B$ = MID$(HX$,1,1) GOSUB S200 B01 = B1 B$ = MID$(HX$,2,1) GOSUB S200 B02 = B1 B$ = MID$(HX$,3,1) GOSUB S200 B03 = B1 V(I) = B01 * 256 + B02 * 16 + B03 V2(I) = V(I):' -2047 NEXT I FOR I = 1 TO 16 V3(I) = V2(I) * 5 / 4098:' * 10 / 2047 V4(I) = V3(I) * F1M(I) / F1D(I) + F1B(I) V5(I) = V4(I) * F2M(I) / F2D(I) + F2B(I) IF NUL=1 AND V2(5)=0 AND V2(6)=0 AND V2(7)=0 THEN GOTO S180 IF I=1 THEN RCO=RCO+1 PRINT #2, USING "####.##";V5(I); IF I < 16 THEN PRINT #2, ","; IF I = 16 THEN PRINT #2, ",";RCI;" " S180: NEXT I GOTO S100 S200: IF B$ = "0" THEN B1 = 0 IF B$ = "1" THEN B1 = 1 IF B$ = "2" THEN B1 = 2 IF B$ = "3" THEN B1 = 3 IF B$ = "4" THEN B1 = 4 IF B$ = "5" THEN B1 = 5 IF B$ = "6" THEN B1 = 6 IF B$ = "7" THEN B1 = 7 IF B$ = "8" THEN B1 = 8 IF B$ = "9" THEN B1 = 9 IF B$ = "A" THEN B1 = 10 IF B$ = "B" THEN B1 = 11 IF B$ = "C" THEN B1 = 12 IF B$ = "D" THEN B1 = 13 IF B$ = "E" THEN B1 = 14 IF B$ = "F" THEN B1 = 15 RETURN S500: CLOSE PRINT RCO;" REC" 'EDAS3 - (C) 1996 - microMETER Corp. 'CONVERT DISPLAY HEX TO SCALED DECIMAL VALUES (288 lines) DIM V(16),V2(16),V3(16),V4(16),V5(16) DIM F1M(16),F1D(16),F1B(16),F2M(16),F2D(16),F2B(16) 'FIL2$ = COMMAND$ FILE$ = "EDAS2.OUT" 'FIL2$ = "EDAS3.OUT" FIL3$ = "SCALE.DAT" FIL4$ = "EDAS.FIL" OPEN "I", #1, FIL4$ LINE INPUT #1,FIL2$ CLOSE #1 MID$(FIL2$,8,1) = "2" OPEN "I", #1, FILE$ OPEN "O", #2, FIL2$ OPEN "I", #3, FIL3$ FOR I = 1 TO 16 INPUT #3, F1M(I),F1D(I),F1B(I),F2M(I),F2D(I),F2B(I) NEXT I CLOSE #3 NUL=0 INPUT "Drop nulls? (y,n) ",X$ IF X$ = "Y" OR X$ = "y" THEN NUL=1 RCI = 0:RCO = 0 S100: IF EOF(1) <> 0 THEN GOTO S500 LINE INPUT #1, REC$ RCI=RCI+1 FOR I = 1 TO 16 J = I * 3 - 2 HX$ = MID$(REC$,J,3) B$ = MID$(HX$,1,1) GOSUB S200 B01 = B1 B$ = MID$(HX$,2,1) GOSUB S200 B02 = B1 B$ = MID$(HX$,3,1) GOSUB S200 B03 = B1 V(I) = B01 * 256 + B02 * 16 + B03 V2(I) = V(I) -2047 NEXT I FOR I = 1 TO 16 V3(I) = V2(I) * 10 / 2047 V4(I) = V3(I) * F1M(I) / F1D(I) + F1B(I) V5(I) = V4(I) * F2M(I) / F2D(I) + F2B(I) IF NUL=1 AND V2(5)=0 AND V2(6)=0 AND V2(7)=0 THEN GOTO S180 IF I=1 THEN RCO=RCO+1 PRINT #2, USING "####.##";V5(I); IF I < 16 THEN PRINT #2, ","; IF I = 16 THEN PRINT #2, ",";RCI;" " S180: NEXT I GOTO S100 S200: IF B$ = "0" THEN B1 = 0 IF B$ = "1" THEN B1 = 1 IF B$ = "2" THEN B1 = 2 IF B$ = "3" THEN B1 = 3 IF B$ = "4" THEN B1 = 4 IF B$ = "5" THEN B1 = 5 IF B$ = "6" THEN B1 = 6 IF B$ = "7" THEN B1 = 7 IF B$ = "8" THEN B1 = 8 IF B$ = "9" THEN B1 = 9 IF B$ = "A" THEN B1 = 10 IF B$ = "B" THEN B1 = 11 IF B$ = "C" THEN B1 = 12 IF B$ = "D" THEN B1 = 13 IF B$ = "E" THEN B1 = 14 IF B$ = "F" THEN B1 = 15 RETURN S500: CLOSE PRINT RCO;" REC" 'EDASCALL - (C) 1996 - microMETER Corp. DIM D%(64) COMMON SHARED D%() DECLARE SUB AQB (M%, BYVAL D%, F%) M% = &H82:CALL AQB(M%, VARPTR(D%(0)), F%) D%(0) = 1:D%(1) = &H2E0:D%(2) = 5:D%(3) = 0 M% = &H80:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H84:CALL AQB(M%, VARPTR(D%(0)), F%) S130: 'ACQUTEK - GET 1 SET OF VALUES M% = &H9A:CALL AQB(M%, VARPTR(D%(0)), F%) HZ$="" FOR I = 0 TO 15 HX$= LEFT$(RIGHT$("0000" + HEX$(D%(I + 1)), 4), 4) HY$= MID$(HX$,1,3) HZ$= HZ$+HY$ :'CONCATENATE 3 BYTES TO LINE NEXT I OPEN "O",#1,"ACQUTEK1.OUT" PRINT #1, HZ$:'PRINT THE WHOLE LINE CLOSE #1 'PRINT HZ$:'PRINT THE WHOLE LINE S999: M% = &H81:CALL AQB(M%, VARPTR(D%(0)), F%) SYSTEM 'EDASMAIN - (C) 1996 - microMETER Corp. DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 COL = 0: SET = 0: Z = 0: INH = 0 C00 = 0: C01 = 1: C02 = 2: C03 = 3: C04 = 4: C05 = 5: C06 = 6: C07 = 7 C2 = 7: C3 = 0: '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht DEF SEG = &HB800 FOR I = 1 TO 80 SB$ = SB$ + CHR$(196) DB$ = DB$ + CHR$(205) NEXT I CLS GOSUB S780:'LOAD GLOBAL COL = VAL(MID$(TXT$(8), 14, 1)) S118: 'NEW FILENAME LOOP GOSUB S800 GOSUB S805 FIL2$ = MID$(TXT$(8), 1, 8) + DV$ OPEN "A", #2, FIL2$ PRINT #2, "START " + DATE$ + " " + TIME$ CLOSE #2 IF COL = 1 THEN COLOR C01, C2, C3 LOCATE (25): PRINT " "; CHR$(176); " (C) 1996 - microMETER Corporation - v 1.04 "; CHR$(176); " " S130: IF COL = 1 THEN COLOR C01, C2, C3 PRINT TXT$(1) TIM2$ = TIME$: DAT2$ = DATE$ PRINT "<>EDASMAIN Main Menu Start T/D " + TIM2$ + " " + DAT2$ PRINT DB$; IF COL = 1 THEN COLOR C00, C2, C3 FOR I = 1 TO 1: PRINT : NEXT I FOR I = 1 TO 3: PRINT TXT$(I + 7) + " "; : NEXT I PRINT SB$ FOR I = 1 TO 2: PRINT : NEXT I PRINT " MENU" PRINT " 0 - Exit to DOS " FOR I = 1 TO 5: PRINT : NEXT I FOR J = 2 TO 7: PRINT TXT$(J): NEXT J IF COL = 1 THEN COLOR C04, C2, C3 PRINT "MENU choice: _ " PRINT S140:'MAIN LOOP REC$ = INKEY$ IF REC$ = "0" THEN GOSUB S950: GOTO S999 GOSUB S800 NN = MN IF NN > 30 THEN NN = NN - 30 IF NN > 15 THEN NN = NN - 15 IF NN <> 0 AND NN <> 5 AND NN <> 10 AND NN <> 15 THEN INH = 0: GOTO S160 IF INH = 1 THEN GOTO S160 'NEW FIVE MINUTE INTERVAL INH = 1 'ACQUTEK - GET 1 SET OF VALUES EVERY 5 MINUTES AND WRITE TO FILE S141: IF MID$(TIME$,7,2) <> "00" THEN GOTO S141 SHELL "EDASCALL" OPEN "I",#4,"ACQUTEK1.OUT" LINE INPUT #4,HZ$ CLOSE #4 OPEN "A",#2,FIL2$ PRINT #2, HZ$:'PRINT THE WHOLE LINE CLOSE #2 IF COL = 2 THEN PRINT HZ$;" ";DATE$;" ";TIME$ S160: 'IF MIDNITE, START A NEW FILE IF HH > 0 THEN SET = 0: GOTO S500 IF SET = 1 THEN GOTO S500 SET = 1 OPEN "A",#2,FIL2$ PRINT #2, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 GOTO S118 S500: 'SEE IF WE CAN SEND YET 'GOSUB S850 GOTO S140 S780: 'LOAD GLOBAL CLOSE #1 OPEN "I", #1, "EDAS.TXT" FOR I = 1 TO 10 LINE INPUT #1, TXT$(I) NEXT I CLOSE #1 RETURN S800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) K = 560 POKE K + 0, H1 POKE K + 2, H2 POKE K + 4, ASC(":") POKE K + 6, M1 POKE K + 8, M2 POKE K + 10, ASC(":") POKE K + 12, S1 POKE K + 14, S2 RETURN S805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ MID$(TXT$(8), 10, 3) = DV$ RETURN S950: OPEN "A",#2,FIL2$ PRINT #2, "ENDED " + DATE$ + " " + TIME$ CLOSE COLOR 7, 0, 0 CLS RETURN S999: SYSTEM 'HVACEDA2 - (C) 1996 - microMETER Corp. 'PROCESS UPLOADED FILES TO FILL TEMPORAL GAPS WITH ZEROES (288 LINES) INPUT "Julian date (eg 045) ";JUL$ FIL2$ = "HVACEDA2.OUT" FIL3$ = "HVACEDAS.TXT" FIL4$ = "HVACEDAS.FIL" OPEN "I", #1, FIL3$ FOR I = 1 TO 8 LINE INPUT #1,REC$ NEXT I CLOSE #1 RE2$=MID$(REC$,1,8) FILE$=RE2$+"."+JUL$ OPEN "I", #1, FILE$ OPEN "O", #2, FIL2$ RC = 0 END$ = "ENDED 00-00-0000 00:00:00" ZER$ = "000000000000000000000000000000000000000000000000" ZE2$ = "0000000000000000000000000000000000" S100: IF EOF(1) <> 0 THEN GOTO S500 LINE INPUT #1, REC$ IF MID$(REC$, 1, 5) = "START" THEN GOSUB S300 IF MID$(REC$, 1, 5) = "ENDED" THEN END$ = REC$: GOTO S100 IF MID$(REC$, 1, 5) <> "START" THEN PRINT #2, REC$: RC = RC + 1 GOTO S100 S300: H2 = VAL(MID$(REC$, 18, 2)) M2 = VAL(MID$(REC$, 21, 2)) HH = VAL(MID$(END$, 18, 2)) MN = VAL(MID$(END$, 21, 2)) HD = H2 - HH: MD = M2 - MN HH = H2: MN = M2 M3 = HD * 60 + MD II = INT(M3 / 5) IF II = 0 THEN GOTO S305 FOR I = 1 TO II PRINT #2, ZER$+ZE2$ RC = RC + 1 NEXT I S305: RETURN S500: HH = VAL(MID$(END$, 18, 2)) MN = VAL(MID$(END$, 21, 2)) H2 = 23: M2 = 60 HD = H2 - HH: MD = M2 - MN M3 = HD * 60 + MD II = INT(M3 / 5) IF II = 0 THEN GOTO S505 FOR I = 1 TO II IF RC < 288 THEN PRINT #2, ZER$+ZE2$: RC = RC + 1 NEXT I S505: SC = RC IF RC > 287 THEN GOTO S600 FOR I = SC TO 287 PRINT #2, ZER$+ZE2$ RC = RC + 1 NEXT I S600: CLOSE PRINT RC; " REC " OPEN "O" ,#1, FIL4$ PRINT #1,FILE$ CLOSE #1 'CHAIN "EDAS3" 'HVACEDA3 - (C) 1996 - microMETER Corp. 'CONVERT DISPLAY HEX TO SCALED DECIMAL VALUES (288 lines) DIM V(48),V2(48),V3(48),V4(48),V5(48) DIM F1M(16),F1D(16),F1B(16),F2M(16),F2D(16),F2B(16) DIM BK(16),PF(16),LV(16) FILE$ = "HVACEDA2.OUT" FIL3$ = "SCALE.DAT" FIL4$ = "HVACEDAS.FIL" FIL5$ = "MICRO.DAT" FIL6$ = "CT.DAT" CLOSE OPEN "I", #1, FIL5$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE CLOSE OPEN "I", #1, FIL6$ FOR I = 1 TO 16 LINE INPUT #1, REC$ BK(I) = VAL(MID$(REC$, 28, 3)) PF(I) = VAL(MID$(REC$, 32, 4)) LV(I) = VAL(MID$(REC$, 37, 3)) 'PRINT BK(I),PF(I),LV(I),SCAL NEXT I CLOSE OPEN "I", #1, FIL4$ LINE INPUT #1,FIL2$ CLOSE #1 MID$(FIL2$,8,1) = "2" OPEN "I", #1, FILE$ OPEN "O", #2, FIL2$ OPEN "I", #3, FIL3$ FOR I = 1 TO 16 INPUT #3, F1M(I),F1D(I),F1B(I),F2M(I),F2D(I),F2B(I) NEXT I CLOSE #3 NUL=0 INPUT "Drop nulls? (y,n) ",X$ IF X$ = "Y" OR X$ = "y" THEN NUL=1 RCI = 0:RCO = 0 S100: IF EOF(1) <> 0 THEN GOTO S500 LINE INPUT #1, REC$ RCI=RCI+1 FOR I = 1 TO 16 J = I * 3 - 2 HX$ = MID$(REC$,J,3) B$ = MID$(HX$,1,1) GOSUB S200 B01 = B1 B$ = MID$(HX$,2,1) GOSUB S200 B02 = B1 B$ = MID$(HX$,3,1) GOSUB S200 B03 = B1 V(I) = B01 * 256 + B02 * 16 + B03 V2(I) = V(I):' -2047 NEXT I FOR I = 17 TO 33 J = I * 2 - 1 + 16 HX$ = MID$(REC$,J,2) B$ = MID$(HX$,1,1) GOSUB S200 B02 = B1 B$ = MID$(HX$,2,1) GOSUB S200 B03 = B1 V(I) = B02 * 16 + B03 V2(I) = V(I):' -2047 NEXT I FOR I = 1 TO 16 V3(I) = V2(I) * 5 / 4098:' * 10 / 2047 V4(I) = V3(I) * F1M(I) / F1D(I) + F1B(I) V5(I) = V4(I) * F2M(I) / F2D(I) + F2B(I) NEXT I FOR I = 17 TO 32 J = I - 16 V5(I) = V2(I) / SCAL * BK(J) / 20 * LV(J) * PF(J) / 1000 :'SCALE TO KW NEXT I V5(33) = V2(33) 'FOR I = 33 TO 48 'J = I - 32 'V5(I) = V2(I) / SCAL * BK(J) / 20 * LV(J) / 1000 :'SCALE TO KVA 'NEXT I FOR I = 1 TO 33 IF NUL=1 AND V2(5)=0 AND V2(6)=0 AND V2(7)=0 THEN GOTO S180 IF I=1 THEN RCO=RCO+1 PRINT #2, USING "####.##";V5(I); IF I < 33 THEN PRINT #2, ","; IF I = 33 THEN PRINT #2, ",";RCI;" " S180: NEXT I GOTO S100 S200: IF B$ = "0" THEN B1 = 0 IF B$ = "1" THEN B1 = 1 IF B$ = "2" THEN B1 = 2 IF B$ = "3" THEN B1 = 3 IF B$ = "4" THEN B1 = 4 IF B$ = "5" THEN B1 = 5 IF B$ = "6" THEN B1 = 6 IF B$ = "7" THEN B1 = 7 IF B$ = "8" THEN B1 = 8 IF B$ = "9" THEN B1 = 9 IF B$ = "A" THEN B1 = 10 IF B$ = "B" THEN B1 = 11 IF B$ = "C" THEN B1 = 12 IF B$ = "D" THEN B1 = 13 IF B$ = "E" THEN B1 = 14 IF B$ = "F" THEN B1 = 15 RETURN S500: CLOSE PRINT RCO;" REC" 'HVACEDAS - (C) 1996 - microMETER Corp. DIM D%(64),D1%(16),D2%(16),D3%(16),D4%(16) DIM D5%(16),D6%(16),D7%(16),D8%(16) COMMON SHARED D%() DECLARE SUB AQB (M%, BYVAL D%, F%) DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 COL = 0: SET = 0: Z = 0: INH = 0 C00 = 0: C01 = 1: C02 = 2: C03 = 3: C04 = 4: C05 = 5: C06 = 6: C07 = 7 C2 = 7: C3 = 0: '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht JS = 1 DEF SEG = &HB800 INH = 0 FOR I = 1 TO 80 SB$ = SB$ + CHR$(196) DB$ = DB$ + CHR$(205) NEXT I FILE$ = "HVACEDAS.TXT" FIL3$ = "SEND.DAT" OPEN "A", #3, FIL3$ CL$ = CHR$(13) + CHR$(10) CLS GOSUB S780 COL = VAL(MID$(TXT$(8), 14, 1)) LG$ = MID$(TXT$(8), 15, 1) PG$ = MID$(TXT$(8), 16, 1) GOSUB S800 GOSUB S805 S120: 'NEW FILENAME LOOP FIL2$ = MID$(TXT$(8), 1, 12) OPEN "A", #2, FIL2$ PRINT #2, "START " + DATE$ + " " + TIME$ IF COL = 1 THEN COLOR C01, C2, C3 LOCATE (25): PRINT " "; CHR$(176); " (C) 1996 - microMETER Corporation - v 1.03 "; CHR$(176); " " M% = &H82:CALL AQB(M%, VARPTR(D%(0)), F%) D%(0) = 1:D%(1) = &H2E0:D%(2) = 5:D%(3) = 0 M% = &H80:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H84:CALL AQB(M%, VARPTR(D%(0)), F%) S130: IF COL = 1 THEN COLOR C01, C2, C3 PRINT TXT$(1) TIM2$ = TIME$: DAT2$ = DATE$ PRINT "<>HVACEDAS Main Menu Start T/D " + TIM2$ + " " + DAT2$ PRINT DB$; IF COL = 1 THEN COLOR C00, C2, C3 FOR I = 1 TO 1: PRINT : NEXT I FOR I = 1 TO 3: PRINT TXT$(I + 7) + " "; : NEXT I PRINT SB$ FOR I = 1 TO 2: PRINT : NEXT I PRINT " MENU" PRINT " 0 - Exit to DOS (type HVACEDAS or reboot to start)" PRINT " 1 - Requeue day to send (eg. 095) " PRINT " 2 - Send now" PRINT " 3 - Change send time (HHMM-HHMM military)" PRINT " 4 - Change phone #" FOR I = 1 TO 1: PRINT : NEXT I FOR J = 2 TO 7: PRINT TXT$(J): NEXT J IF COL = 1 THEN COLOR C04, C2, C3 PRINT "MENU choice: _ " PRINT S140:'MAIN LOOP REC$ = INKEY$ IF REC$ = "0" THEN GOSUB S790: GOSUB S950: GOTO S999 IF REC$ = "1" THEN INPUT "DAY# (001-999)? ", X$: PRINT #3, X$ + "R" IF REC$ = "2" THEN PRINT #3, "NOW ": GOSUB S790: GOSUB S950: GOTO S990 IF REC$ = "3" THEN INPUT "HHMM-HHMM? ", X$: MID$(TXT$(10), 1, 9) = X$ IF REC$ = "4" THEN INPUT "ATDT 999 9999? ", X$: TXT$(9) = X$ GOSUB S800 GOSUB S600:'CHECK FOR PULSE NN = MN IF NN > 30 THEN NN = NN - 30 IF NN > 15 THEN NN = NN - 15 IF NN <> 0 AND NN <> 5 AND NN <> 10 AND NN <> 15 THEN INH = 0: GOTO S160 IF INH = 1 THEN GOTO S160 'NEW FIVE MINUTE INTERVAL INH = 1 'ACQUTEK - GET 1 SET OF AVERAGED VALUES EVERY 5 MINUTES AND WRITE TO FILE S141: IF MID$(TIME$,7,2) <> "00" THEN GOSUB S600: GOTO S141 GOSUB S600 FOR I = 1 to 16:D1%(I)=D%(I):NEXT I GOSUB S600 FOR I = 1 to 16:D2%(I)=D%(I):NEXT I GOSUB S600 FOR I = 1 to 16:D3%(I)=D%(I):NEXT I GOSUB S600 FOR I = 1 to 16:D4%(I)=D%(I):NEXT I FOR I = 1 to 16:D%(I)=D1%(I)/4+D2%(I)/4+D3%(I)/4+D4%(I)/4:NEXT I HZ$="":HM$="":HN$="" 'IF PG$ = " " THEN D%(16) = DA% 'DA% = 0:DAF = 0 FOR I = 0 TO 15 HX$= LEFT$(RIGHT$("0000" + HEX$(D%(I + 1)), 4), 4) HY$= MID$(HX$,1,3) HZ$= HZ$+HY$ :'CONCATENATE 3 BYTES TO LINE NEXT I JS = JS * -1 IF JS = -1 THEN OUT 888,255 IF JS = 1 THEN OUT 888,0 GOSUB C100 FOR I = 0 TO 15 HX$= LEFT$(RIGHT$("0000" + HEX$(D5%(I + 1)), 4), 4) HY$= MID$(HX$,3,2) 'IF I = 15 AND JS = -1 THEN HY$ = "FF" 'IF I = 15 AND JS = 1 THEN HY$ = "00" HM$= HM$+HY$ :'CONCATENATE 2 BYTES TO LINE 'print HY$,D5%(I+1) NEXT I IF JS = -1 THEN HN$ = "FF" IF JS = 1 THEN HN$ = "00" PRINT #2, HZ$+HM$+HN$:'PRINT THE WHOLE LINE S160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO S500 IF SET = 1 THEN GOTO S500 SET = 1 FIL4$=FIL2$ PRINT #3, DV$ + "Q" DV = DV + 1 DW = DV GOSUB S800 GOSUB S805 GOSUB S790 PRINT #2, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 SHL$="COPY "+FIL4$+" A:" IF LG$ = " " THEN SHELL SHL$ GOTO S120 S500: 'SEE IF WE CAN SEND YET GOSUB S850 GOTO S140 S600: M% = &H9A:CALL AQB(M%, VARPTR(D%(0)), F%) 'IF DAF = 0 AND D%(16) < 1000 AND DA% < 4095 THEN DA% = DA% + 1:DAF = 1 'IF DAF <> 0 AND DA%(16) > 1000 THEN DAF = 0 RETURN S780: 'LOAD GLOBAL CLOSE #1 OPEN "I", #1, FILE$ FOR I = 1 TO 10 LINE INPUT #1, TXT$(I) NEXT I RETURN S790: 'WRITE GLOBAL CLOSE #1 OPEN "O", #1, FILE$ FOR I = 1 TO 10 PRINT #1, TXT$(I) NEXT I RETURN S800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) K = 560 POKE K + 0, H1 POKE K + 2, H2 POKE K + 4, ASC(":") POKE K + 6, M1 POKE K + 8, M2 POKE K + 10, ASC(":") POKE K + 12, S1 POKE K + 14, S2 RETURN S805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 'IF DW > 0 AND DV <> DW THEN DV = DW :'PREVENT NON-ADVANCE OF JULIAN DATE DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ MID$(TXT$(8), 10, 3) = DV$ RETURN S850: 'SEND QUEUED DATA IF CUSTOMER WINDOW IS OPEN HHMN = HH * 100 + MN IF HHMN < VAL(MID$(TXT$(10), 1, 4)) THEN GOTO S890 IF HHMN > VAL(MID$(TXT$(10), 6, 4)) THEN GOTO S890 GOSUB S790 GOSUB S950 GOTO S990 S890: RETURN S950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ CLOSE COLOR 7, 0, 0 CLS RETURN S990: 'ATTEMPT TO SEND UNTIL CUSTOMER WINDOW CLOSES CHAIN "SEND" S999: M% = &H81:CALL AQB(M%, VARPTR(D%(0)), F%) SYSTEM C100: I = 0 'IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): N = VAL(MID$(COMMAND$, 3, 6)): SEL$ = MID$(COMMAND$, 10, 1): GOTO 100 CP=1 N=16 IF CP = 1 THEN OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #4 IF CP = 2 THEN OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #4 LINE INPUT #4, XX$: 'DISCARD FIRST READING C210: INPUT #4, A, B, C, D I = I + 1 'PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D D5%(A)=B IF INKEY$ = "x" THEN GOTO C310 IF I < N THEN GOTO C210 C310: CLOSE #4 RETURN 'REALTIM.BAS (C) microMETER 1996 'CONVERT DISPLAY HEX TO SCALED DECIMAL VALUES INREALTIME DIM D%(64) DIM V(16),V2(16),V3(16),V4(16),V5(16) DIM F1M(16),F1D(16),F1B(16),F2M(16),F2D(16),F2B(16) COMMON SHARED D%() DECLARE SUB AQB (M%, BYVAL D%, F%) FILE$ = "SCALE.DAT" OPEN "I", #1, FILE$ FOR I = 1 TO 16 INPUT #1, F1M(I),F1D(I),F1B(I),F2M(I),F2D(I),F2B(I) NEXT I CLOSE #1 LOOP1: M% = &H82:CALL AQB(M%, VARPTR(D%(0)), F%) D%(0) = 1:D%(1) = &H2E0:D%(2) = 5:D%(3) = 0 M% = &H80:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H84:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H9A:CALL AQB(M%, VARPTR(D%(0)), F%) CLS FOR X = 0 TO 15:'TAD - 1 HX$= LEFT$(RIGHT$("0000" + HEX$(D%(X + 1)), 4), 4) PRINT HX$;"H"; Z2=D%(X+1)-X Z3= Z2/16 Z4=Z3:'+2047 'IF MID$(HX$,1,1) < "8" THEN Z4=Z3-2047 Z4=Z4*5/4098:'10/2047 I=X+1 IF Z4 < 0 THEN Z4 = Z4 + 5 V(I)=Z4 V2(I) = V(I) V3(I) = V2(I) V4(I) = V3(I) * F1M(I) / F1D(I) + F1B(I) V5(I) = V4(I) * F2M(I) / F2D(I) + F2B(I) PRINT I;" "; PRINT USING "####.######";V5(I) NEXT X IF INKEY$ <> "" THEN GOTO SKIP1 FOR I= 1 TO 30000:NEXT I GOTO LOOP1 SKIP1: M% = &H81:CALL AQB(M%, VARPTR(D%(0)), F%) END 'REALTIM2 - show microMETER data - CJC 10/10/1994 (C) DIM BK(16),PF(16),LV(16) KEY OFF: CLS : SEL$ = "0" FIL5$ = "MICRO.DAT" FIL6$ = "CT.DAT" CLOSE OPEN "I", #1, FIL5$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE CLOSE OPEN "I", #1, FIL6$ FOR I = 1 TO 16 LINE INPUT #1, REC$ BK(I) = VAL(MID$(REC$, 28, 3)) PF(I) = VAL(MID$(REC$, 32, 4)) LV(I) = VAL(MID$(REC$, 37, 3)) 'PRINT BK(I),PF(I),LV(I),SCAL NEXT I CLOSE INPUT "Please enter LPT1 code " ; LC OUT 888,LC INPUT "Please enter COM port (1 or 2) "; CP N=16: I=0: CLS LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.07 "; CHR$(176): LOCATE 1 'PRINT "CAPture program - Selection Code: "; SEL$ IF CP = 1 THEN OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 IF INKEY$ = "x" THEN GOTO S310 LINE INPUT #1, XX$: 'DISCARD FIRST READING 'PRINT "CAPture program - System synchronized." PRINT "PC: time date mM: CT#, KW/KVA" S210: INPUT #1, A, B, C, D I = I + 1 BB = B / SCAL * BK(A) / 20 * LV(A) * PF(A) / 1000 :'SCALE TO KW PRINT TIME$; " "; DATE$; " "; A; ","; BB IF INKEY$ = "x" THEN GOTO S310 IF I < N THEN GOTO S210 S310: 'PRINT I; " readings" STOP 'REALTIME.BAS (C) microMETER 1996 'CONVERT ACQUTEK DATA TO SCALED DECIMAL VALUES IN REALTIME 'Refer to Acqutek example SB.BAS for use of AQB calls: 'H82 read parameters H80 setup H84 read config H9A get data H81 shutdown DIM D%(64) DIM V(16),V2(16),V3(16),V4(16),V5(16) DIM F1M(16),F1D(16),F1B(16),F2M(16),F2D(16),F2B(16) COMMON SHARED D%() DECLARE SUB AQB (M%, BYVAL D%, F%) FILE$ = "SCALE.DAT" OPEN "I", #1, FILE$ FOR I = 1 TO 16 INPUT #1, F1M(I),F1D(I),F1B(I),F2M(I),F2D(I),F2B(I) NEXT I CLOSE #1 LOOP1: M% = &H82:CALL AQB(M%, VARPTR(D%(0)), F%) ' PORT IRQ D%(0) = 1:D%(1) = &H2E0:D%(2) = 5:D%(3) = 0 M% = &H80:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H84:CALL AQB(M%, VARPTR(D%(0)), F%) M% = &H9A:CALL AQB(M%, VARPTR(D%(0)), F%) CLS FOR X = 0 TO 15 HX$= LEFT$(RIGHT$("0000" + HEX$(D%(X + 1)), 4), 4) PRINT HX$;"H"; Z2=D%(X+1)-X Z3= Z2/16 Z4=Z3 * 5 / 4096 I=X+1 IF Z4 < 0 THEN Z4 = Z4 + 5 V(I) = Z4 V2(I) = V(I) V3(I) = V2(I) V4(I) = V3(I) * F1M(I) / F1D(I) + F1B(I) V5(I) = V4(I) * F2M(I) / F2D(I) + F2B(I) PRINT I;" "; PRINT USING "####.######";V5(I) NEXT X IF INKEY$ <> "" THEN GOTO SKIP1 FOR I= 1 TO 30000:NEXT I GOTO LOOP1 SKIP1: M% = &H81:CALL AQB(M%, VARPTR(D%(0)), F%) END 'SEND - (C) 1996 - microMETER Corp. DIM TXT$(10), QUE$(10) INH = 0 FILE$ = "EDAS.TXT" FIL3$ = "SEND.DAT" KEY OFF: CLS GOSUB S780 GOSUB S760 S500: GOSUB S800 GOSUB S850 GOTO S500 S760: 'LOAD QUEUE CLOSE #3 OPEN "I", #3, FIL3$ I = 1 S761: IF EOF(3) <> 0 THEN GOTO S762 LINE INPUT #3, QUE$(I) IF MID$(QUE$(I), 1, 3) = QUP$ THEN GOTO S761 IF MID$(QUE$(I), 1, 3) = "" THEN GOTO S761 IF QUE$(I) = "NOW " THEN MID$(TXT$(10), 1, 9) = "0000-2400": GOTO S761 IF MID$(QUE$(I), 4, 1) <> "Q" AND MID$(QUE$(I), 4, 1) <> "R" THEN GOTO S761 PRINT I, QUE$(I) QUP$ = MID$(QUE$(I), 1, 3) I = I + 1 GOTO S761 S762: IMAX = I - 1 RETURN S770: 'EMPTY QUEUE CLOSE #3 'PEN "O", #3, FIL3$ CLOSE #3 RETURN S780: 'LOAD GLOBAL CLOSE #1 OPEN "I", #1, FILE$ FOR I = 1 TO 10 LINE INPUT #1, TXT$(I) NEXT I RETURN S790: 'WRITE GLOBAL CLOSE #1 OPEN "O", #1, FILE$ FOR I = 1 TO 10 PRINT #1, TXT$(I) NEXT I RETURN S800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) RETURN S850: 'SEND QUEUED DATA IF CUSTOMER WINDOW IS OPEN GOSUB S800 HHMN = HH * 100 + MN IF HHMN < VAL(MID$(TXT$(10), 1, 4)) THEN GOTO S999 IF HHMN > VAL(MID$(TXT$(10), 6, 4)) THEN GOTO S999 IF INH <> 0 THEN GOTO S850: 'WAIT FOR WINDOW TO CLOSE INH = 1 'open com or shell "b" 'atdt 'look for connect 'logon my BBS or host CLOSE #4 OPEN "A", #4, "SEND.FIL" FOR I = 1 TO IMAX FIL2$ = MID$(TXT$(8), 1, 9) + MID$(QUE$(I), 1, 3) PRINT #4, "SENDING " + FIL2$, I 'send req to upload 'send the filename to the BBS 'send the file 'send end sentinel NEXT I 'logoff the BBS IF MID$(TXT$(10), 1, 9) = "0000-2400" THEN GOTO S999 GOTO S850 S890: RETURN S999: GOSUB S770 CLOSE CHAIN "EDAS"