📄 lk607a.bas
字号:
7610 ON ET% GOTO 7630, 7640, 7650, 7660, 7670, 7680, 7690
7620 T0% = 0: GOTO 7700
7630 T1% = 12: GOTO 7700
7640 T2% = 12: GOTO 7700
7650 T1% = 9: T2% = 14: GOTO 7700
7660 T3% = 12: GOTO 7700
7670 T1% = 9: T3% = 14: GOTO 7700
7680 T2% = 9: T3% = 14: GOTO 7700
7690 T0% = 0: T1% = 7: T2% = 12: T3% = 17
7700 RETURN 150
10280 '***** MAKE DISPLAY BOXES *****
10290 LOCATE TOPROW1, LEFTCOL1, 0: PRINT TLC$; STRING$(BWIDTH - 2, HORIZ$); TRC$;
10300 LOCATE TOPROW1 + 1, LEFTCOL1, 0: PRINT VERT$; LEFT$(MS$, BWIDTH - 2); VERT$;
10310 LOCATE TOPROW1 + 2, LEFTCOL1, 0: PRINT LST$; STRING$(BWIDTH - 2, HORIZ$); RST$;
10320 FOR K = 3 TO BHEIGHT - 2: LOCATE TOPROW1 + K, LEFTCOL1, 0: PRINT VERT$; LEFT$(MS$, BWIDTH - 2); VERT$; : NEXT K
10330 LOCATE TOPROW1 + BHEIGHT - 1, LEFTCOL1, 0: PRINT BLC$; STRING$(BWIDTH - 2, HORIZ$); BRC$;
10340 RETURN
10350 '
10360 '============================================================
10370 REM $$$ READ 1 BYTE OF FORMAT $$$
10380 CH$ = INPUT$(1, 1): CH% = ASC(CH$): CS% = CS% XOR CH%: CH% = CH% - 128: RETURN
10390 '
10400 REM $$$ READ J% BYTES OF FORMAT INTO LB$ $$$
10410 PRINT ".";
10420 LB$ = LEFT$(FC$, J%): FOR K = 1 TO J%: CH% = ASC(INPUT$(1, 1)): CS% = CS% XOR CH%: MID$(LB$, K) = CHR$(CH% - 128): NEXT K: RETURN
10430 '
10440 REM $$$ EXIT PROGRAM $$$
10475 COLOR 7, 0, 0: CLS : LOCATE 1, 1: PRINT "THANKS FOR USE LK607MSR, SEE YOU NEXT TIME": SYSTEM
60000 '===================================================================
60010 ' 60000 - READ THE SERIAL BUFFER - added 870622
60020 ' Reads the serial buffer into LB$ until
60030 ' an ETX=chr$(2) is encountered, or the
60040 ' length of LB$ is greater than 255, or
60050 ' more than a second expires.
60060 '
60070 ' CALLING SEQUENCE :
60080 '
60090 ' LB$=<STRING LE 255>
60093 '
60095 '===================================================================
60100
60110 '***** WAIT FOR START OF MESSAGE ******
60120 WHILE LOC(1) <= 0
60130 FOR I = 1 TO 100
60140 NEXT I
60150 WEND
60160 ETX = 0: CNTGE255 = 0: TIMEOUT = 0
60170 STIME% = 0
60180 WHILE NOT ETX AND NOT CNTGT255 AND NOT TIMEOUT
60190 LB$ = LB$ + INPUT$(LOC(1), 1)
60200 ' ******* CHECK LENGTH *******
60210 IF LEN(LB$) > 255 THEN CNTGT255 = -1
60220 ' ******* SCAN FOR ETX *******
60230 FOR I = 2 TO LEN(LB$)
IF BCC% THEN 60240
IF MID$(LB$, I, 1) = CHR$(3) THEN EXT = -1
60240 IF MID$(LB$, I - 1, 1) = CHR$(3) THEN ETX = -1
60250 NEXT I
60260 ' ******* CHECK TIME *******
STIME% = 0
60270 WHILE LOC(1) <= 0 AND NOT ETX AND NOT TIMEOUT
STIME% = STIME% + 1
60280 IF STIME% > 10000 THEN TIMEOUT = -1
60290 WEND
60300 WEND
60310 RETURN
70000
'=========================================================
' 70000 - PARSE THE INPUT
' DATE - 870916
'=========================================================
PERCENT.POS% = INSTR(LB$, "%")
FIRST.START.CHAR$ = ""
SEMICOLON.POS% = INSTR(LB$, ";")
PLUS.POS% = INSTR(LB$, "+")
POS.OF.FIRST% = 10000
IF PERCENT.POS% > 0 AND PERCENT.POS% < POS.OF.FIRST% THEN
POS.OF.FIRST% = PERCENT.POS%
FIRST.START.CHAR$ = "%"
END IF
IF SEMICOLON.POS% > 0 AND SEMICOLON.POS% < POS.OF.FIRST% THEN
POS.OF.FIRST% = SEMICOLON.POS%
FIRST.START.CHAR$ = ";"
END IF
IF PLUS.POS% > 0 AND PLUS.POS% < POS.OF.FIRST% THEN
POS.OF.FIRST% = PLUS.POS%
FIRST.START.CHAR$ = "+"
END IF
IF FIRST.START.CHAR$ = "%" THEN
I% = INSTR(LB$, "%") ' FIND BEGIN OF TRACK 1
J% = INSTR(LB$, "?") ' FIND END OF TRACK 1
O1$ = MID$(LB$, I%, J% - I% + 1) ' EXTRACT TRACK 1
I% = INSTR(LB$, "?;") ' FIND BEGIN OF TRACK 2
IF I% <> 0 THEN
I% = I% + 1
J% = INSTR(I%, LB$, "?") ' FIND END OF TRACK 2
O2$ = MID$(LB$, I%, J% - I% + 1)' EXTRACT TRACK 2
END IF
I% = INSTR(LB$, "?+") ' FIND BEGIN OF TRACK 3
IF I% <> 0 THEN
I% = I% + 1
J% = INSTR(I%, LB$, "?") ' FIND END OF TRACK 3
O3$ = MID$(LB$, I%, J% - I% + 1)' EXTRACT TRACK 3
END IF
END IF
IF FIRST.START.CHAR$ = ";" THEN
I% = INSTR(LB$, ";") ' FIND BEGIN OF TRACK 2
J% = INSTR(LB$, "?") ' FIND END OF TRACK 2
O2$ = MID$(LB$, I%, J% - I% + 1) ' EXTRACT TRACK 2
I% = INSTR(LB$, "?+") ' FIND BEGIN OF TRACK 3
IF I% <> 0 THEN
I% = I% + 1
J% = INSTR(I%, LB$, "?") ' FIND END OF TRACK 3
O3$ = MID$(LB$, I%, J% - I% + 1)' EXTRACT TRACK 3
END IF
END IF
IF FIRST.START.CHAR$ = "+" THEN
I% = INSTR(LB$, "+") ' FIND BEGIN OF TRACK 3
J% = INSTR(LB$, "?") ' FIND END OF TRACK 3
O3$ = MID$(LB$, I%, J% - I% + 1)' EXTRACT TRACK 3
END IF
RETURN
90000
'======================================================================
' 90000 - UNABLE TO OPEN SERIAL PORT
' DATE - 880125
'======================================================================
CLS
BEEP
PRINT : PRINT : PRINT : PRINT : PRINT
PRINT " OPERATION ABORTED!"
PRINT " PROGRAM TERMINATED!"
PRINT
PRINT " UNABLE TO OPEN SERIAL PORT."
PRINT " PLEASE CHECK YOUR SERIAL PORT (COM1 OR COM2)"
PRINT
PRINT " To change your serial port, hit the ESC key"
PRINT " immediately after entering MRW600"
PRINT : PRINT : PRINT
GOTO THE.END
THE.END:
END
8000 '******************************
8001 '****** ENCODE CARDS ********
8002 '******************************
8005
8010 DIM TRACE$(3)
8020 CLS : SCREEN , , 0, 0: T8% = 1: O1$ = " ": O2$ = " ": O3$ = " ": TRACE$(1) = " ": TRACE$(2) = " ": TRACE$(3) = " "
8022 GOSUB 3750
8025 GOSUB 9000
IF M9% = 1 THEN X1% = 1
8027 IF M9% = 2 THEN X2% = 1
8029 IF M9% = 3 THEN X3% = 1
8030 GOSUB 3030
8032 IF M9% = 1 THEN L% = LEN(O1$): O1$ = LEFT$(O1$, L% - 1): O1$ = RIGHT$(O1$, L% - 2): TRCAE$(1) = O1$: X1% = 1
8034 IF M9% = 2 THEN L% = LEN(O2$): O2$ = LEFT$(O2$, L% - 1): O2$ = RIGHT$(O2$, L% - 2): TRACE$(2) = O2$: X2% = 1
8036 IF M9% = 3 THEN L% = LEN(O3$): O3$ = LEFT$(O3$, L% - 1): O3$ = RIGHT$(O3$, L% - 2): TRACE$(3) = O3$: X3% = 1
8040 TRACE$(1) = O1$: TRACE$(2) = O2$: TRACE$(3) = O3$
8050 'GOSUB 9000
8060 FOR I% = 0 TO N% - 1
8070 CLS : SCREEN , , 0, 0
8080 LOCATE 2, 20, 0: COLOR 5, 0, 0: PRINT "****** ENCODE CARDS ******"
8090 LOCATE 5, 1, 0: COLOR FG2, BG2: PRINT "TRACE 1 DATA": COLOR FG1, BG1: PRINT STRING$(76, "."): LOCATE 6, 1, 0: PRINT TRACE$(1)
8100 LOCATE 10, 1, 0: PRINT STRING$(80, " "): LOCATE 10, 1, 0: COLOR FG2, BG2: PRINT "TRACE 2 DATA": COLOR FG1, BG1: PRINT STRING$(36, "."): LOCATE 11, 1, 0: PRINT TRACE$(2)
8110 LOCATE 15, 1, 0: PRINT STRING$(80, " "): LOCATE 15, 1, 0: COLOR FG2, BG2: PRINT "TRACE 3 DATA": COLOR FG1, BG1: PRINT STRING$(104, "."): LOCATE 16, 1, 0: PRINT TRACE$(3)
8120 O1$ = TRACE$(1): O2$ = TRACE$(2): O3$ = TRACE$(3)
8124 IF M9% = 1 THEN OB$ = SX$ + B1$ + O1$ + B4$ + EX$
8126 IF M9% = 2 THEN OB$ = SX$ + B2$ + O2$ + B4$ + EX$
8128 IF M9% = 3 THEN OB$ = SX$ + B3$ + O3$ + B4$ + EX$
8130 ER% = 0
8140 GOSUB 2060
8150 L% = LEN(TRACE$(M9%))
8155 IF L% = 0 THEN TRACE$(M9%) = "0" + TRACE$(M9%): L% = 1
8160 C$ = MID$(TRACE$(M9%), L%, 1)
8170 J% = ASC(C$): J% = J% + 1
8180 IF J% = 58 THEN J% = 48: A$ = CHR$(J%): MID$(TRACE$(M9%), L%, 1) = A$: L% = L% - 1: GOTO 8155
8182 A$ = CHR$(J%): MID$(TRACE$(M9%), L%, 1) = A$
8190 NEXT I%
8192 CLS
8200 LOCATE 15, 25, 0: COLOR 15, 0, 0: PRINT "PRESS"; : COLOR 5, 0, 0: PRINT " ESC "; : COLOR 15, 0, 0: PRINT "TO RETURN !"
8210 IF INKEY$ = CHR$(27) THEN 9500
8220 GOTO 8200
8230 RETURN
9000 '****************************
9001 '
9002 '****************************
9005 KY$ = INKEY$
9010 IF KY$ = CHR$(27) THEN GOTO 5590
9100 TOPROW2 = 19: LEFTCOL2 = 12: D2 = 48: BHEIGHT2 = 8
9200 LOCATE TOPROW2, LEFTCOL2, 0: PRINT TLC$; STRING$(D2 - 2, HORIZ$); TRC$;
9215 FOR I% = 1 TO 3
9210 LOCATE TOPROW2 + I%, LEFTCOL2, 0: PRINT VERT$; LEFT$(MS$, D2 - 2); VERT$;
9220 NEXT I%
9230 LOCATE TOPROW2 + 4, LEFTCOL2, 0: PRINT BLC$; STRING$(D2 - 2, HORIZ$); BRC$
9240 LOCATE TOPROW2 + 1, LEFTCOL2 + 1, 0: PRINT "HOW MANY CARDS DO YOU WANT TO ENCODE "; : INPUT N%
9250 LOCATE 22, 13, 0: PRINT STRING$(46, " "): LOCATE TOPROW2 + 3, LEFTCOL2 + 1, 1: COLOR 7, 0, 0: PRINT "Which TRACK do you want to write?(1,2,3):";
9251 KKK$ = INKEY$
IF KKK$ = "1" THEN
M9% = 1
ELSEIF KKK$ = "2" THEN
M9% = 2
ELSEIF KKK$ = "3" THEN
M9% = 3
ELSE
GOTO 9251
END IF
9255 '
9260 RETURN
9265 '
9266 '
9300 '*****************************
9301 '***** MAKE A DATAFILE *****
9302 '*****************************
9305 CLS : SCREEN , , 0, 0
9310 LOCATE 3, 20, 0: COLOR 5, 0, 0: PRINT "****** WRITE CARDS FROM DATAFILE ******": PRINT
9320 PRINT "DO YOU WANT TO CREATE A DATAFILE? (Y/N) ";
9330 KY$ = INKEY$: IF KY$ = "" THEN 9330
9340 IF KY$ = "Y" THEN PRINT "Y": GOTO 9360
9350 IF KY$ = "N" THEN PRINT "N": GOTO 9425
9360 LOCATE 7, 1, 0: PRINT "PLEASE INPUT THE FILENAME: "; : LINE INPUT NAME$: PRINT
9370 PRINT STRING$(80, "=")
9380 COLOR 7, 0, 0: PRINT "INPUT "; : COLOR 5, 0, 0: PRINT "OK "; : COLOR 7, 0, 0: PRINT "THEN END !"
9390 OPEN NAME$ FOR OUTPUT AS #2
9395 Q% = 0
9397 LOCATE 18, 1, 0: PRINT "QUANTITY: "; Q%
9400 LOCATE 12, 1, 0: PRINT STRING$(80, " "): LOCATE 12, 1, 0: INPUT "TRACE DATA 1 : "; TX$(1): O1$ = B1$ + TX$(1) + B4$
9401 IF TX$(1) = "OK" THEN 9420
9402 LOCATE 14, 1, 0: PRINT STRING$(80, " "): LOCATE 14, 1, 0: INPUT "TRACE DATA 2 :"; TX$(2): O2$ = B2$ + TX$(2) + B4$
9403 LOCATE 16, 1, 0: PRINT STRING$(80, " "): LOCATE 16, 1, 0: INPUT "TRACE DATA 3 :"; TX$(3): O3$ = B3$ + TX$(3) + B4$
9405 Q% = Q% + 1
9408 TX$ = O1$ + O2$ + O3$
9410 PRINT #2, TX$
9415 GOTO 9397
9420 CLOSE #2
9425 LOCATE 20, 1, 0: PRINT STRING$(80, "=")
9430 LOCATE 22, 1, 0: PRINT "DO YOU WANT TO WRITE CARDS ? (Y/N)";
9435 KY$ = INKEY$: IF KY$ = "" THEN 9435
9440 IF KY$ = "Y" THEN PRINT "Y": GOTO 9830
9445 IF KY$ = "N" THEN PRINT "N": RETURN
9450 IF KY$ = CHR$(27) THEN RETURN
9500 IF T7% = 1 THEN CLOSE 2
9501 IF T8% = 1 THEN ON ERROR GOTO 0
9502 T7% = 0: T8% = 0: X1% = 0: X2% = 0: X3% = 0
9510 CLS : SCREEN , , 0, 0:
9520 TOPROW = 7: LEFTCOL = 19: WIDTH1 = 40: HEIGHT = 11
9530 COLOR FG1, SCRN2: CLS : COLOR FG1, BG1: GOSUB 9700
9540 LOCATE TOPROW + 1, LEFTCOL + 14, 0: PRINT "WRITE CARD"
9550 LOCATE TOPROW + 4, LEFTCOL + 2, 0: PRINT "1. WRITE A CARD"
9560 LOCATE TOPROW + 6, LEFTCOL + 2, 0: PRINT "2. WRITE CARDS WITH CONTINUSLY CODE"
9570 LOCATE TOPROW + 8, LEFTCOL + 2, 0: PRINT "3. WRITE CARDS FROM FILE"
9580 LOCATE TOPROW + 11, LEFTCOL + 4, 0: PRINT "ENTER 1, 2 OR 3 ===>"
9590 KY$ = INKEY$
9600 IF KY$ = CHR$(49) THEN 3025
9610 IF KY$ = CHR$(50) THEN GOSUB 8000
9620 IF KY$ = CHR$(51) THEN GOSUB 9300: GOTO 9510
9630 IF KY$ = CHR$(27) THEN 5590
9640 GOTO 9590
9700 LOCATE TOPROW, LEFTCOL, 0: PRINT TLC$; STRING$(WIDTH1 - 2, HORIZ$); TRC$;
9710 LOCATE TOPROW + 1, LEFTCOL, 0: PRINT VERT$; LEFT$(MS$, WIDTH1 - 2); VERT$;
9720 LOCATE TOPROW + 2, LEFTCOL, 0: PRINT LST$; STRING$(WIDTH1 - 2, HORIZ$); RST$;
9730 FOR I% = 3 TO HEIGHT - 2
9740 LOCATE TOPROW + I%, LEFTCOL, 0: PRINT VERT$; LEFT$(MS$, WIDTH1 - 2); VERT$;
9750 NEXT I%
9760 LOCATE TOPROW + 10, LEFTCOL, 0: PRINT LST$; STRING$(WIDTH1 - 2, HORIZ$); RST$;
9780 LOCATE TOPROW + 11, LEFTCOL, 0: PRINT VERT$; LEFT$(MS$, WIDTH1 - 2); VERT$;
9790 LOCATE TOPROW + 12, LEFTCOL, 0: PRINT BLC$; STRING$(WIDTH1 - 2, HORIZ$); BRC$;
9800 RETURN
9810 '***************************************
9811 '***** WRITE CARDS FROM DATAFILE *****
9812 '***************************************
9820 '
9830 CLS : SCREEN , , 0, 0: T7% = 1: Q% = 0
9840 LOCATE 5, 15, 0: COLOR 5, 0, 0: PRINT "****** WRITE CARDS FROM FILE ******"
9850 LOCATE 8, 3, 0: PRINT "PLEASE INPUT DATA FILENAME: "; : LINE INPUT NAME$
9855 ON ERROR GOTO 9950
9860 OPEN NAME$ FOR INPUT AS #2
9870 '
9880 IF EOF(2) THEN CLOSE #2: RETURN
9890 LINE INPUT #2, TX$
9895 Q% = Q% + 1: LOCATE 12, 3, 0: PRINT "QUANTITY: "; Q%
9900 'TX$ = B2$ + TX$ + B4$
9902 ER% = 0
9905 ON ERROR GOTO 0
9907 LOCATE 5, 15, 0: COLOR 5, 0, 0: PRINT "****** WRITE CARDS FROM FILE ******"
9910 LOCATE 10, 3, 0: PRINT "TRACE:"; : PRINT TX$: IF T9% = 1 THEN RETURN
9912 OB$ = SX$ + TX$ + EX$
9913 GOSUB 2060
9914 KY$ = INKEY$
9915 IF KY$ = CHR$(27) THEN 9510
9920 T9% = 0: GOTO 9880
9950 CLS : LOCATE 8, 32, 0: COLOR 31, 0, 0: PRINT "BAD FILE NAME !": LOCATE 16, 26, 0: COLOR 15, 0, 0: PRINT "Depress any key to retry !": LOCATE 17, 28, 0: PRINT "Press ESC to return !"
9952 KY$ = INKEY$
9955 IF KY$ = CHR$(27) THEN RESUME 9510
9957 IF KY$ = "" THEN 9952
9558 RESUME 9830
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -