5 REM LEVEL RECORD
8 DIM Z$(0)*50
10 "A"CLS :USING :WAIT :GOSUB 2350
15 CLS :O$="A":INPUT "Do :?";O$:CLS :GOSUB "W":GOSUB 1460:CLS :GOSUB 1450
18 IF O$="GO"OR O$="BK"THEN WAIT 0:PRINT X;" STAGE  N<";-(Y-5)*(Y>5):PAUSE :WAIT :IF X=0 OR Y<5THEN GOTO 10
20 CLS :GOSUB O$:W$=O$
25 GOTO 15
60 REM ***** BEGIN *****
65 "CLEAR"C$="":INPUT "CLEAR (YES,NO)?";C$:IF C$="YES"THEN GOTO 75
70 GOTO 10
75 GOSUB 1950:Z=W:GOSUB 1290:POKE (W+69),X,Y
80 CLS :T2$="":INPUT "GRADE: ?";T$:T=VAL T$:IF T=3INPUT "METHOD: (M/L)?";T2$
85 O$=T$+T2$:RESTORE O$
90 POKE (W+23),0:POKE (W+60),1:POKE (W+68),0
92 IF ((T<=3) OR (T=6))THEN READ M$:N$=RIGHT$ (M$,1):M$=LEFT$ (M$,1):IF N$="2"POKE (W+60),2
95 IF ((T<=3) OR (T=6))THEN POKE (W+23),ASC M$
100 POKE (W),T,0,0,0
105 READ A,B,C,H1,H2,D,E,G,F
110 IF ((T<=3) OR (T=6))THEN LET D=D*10:E=E*10:G=G*10
115 POKE (W+16),A,B,C,D,E,F,G
120 Z=H1:GOSUB "Z":POKE (W+12),X,Y:Z=H2:GOSUB "Z":POKE (W+14),X,Y
125 T=PEEK (W):Q=W+128
128 Z=W+128+88:GOSUB 1290:POKE (W+110),X,Y
130 Z=Q:GOSUB 1290:POKE (W+4),X,Y,X,Y:POKE (W+104),0,1,0,0,0,0
132 GOSUB "L$":GOTO 10
134 REM ***** OBSERVE *****
135 "GO"O$="GO":IF PEEK W<>6CLS :INPUT "GO,RGx,CGO?";O$
136 POKE (W+1),1:GOTO 145
140 "BK"O$="BK":IF PEEK W<>6CLS :INPUT "BK,RBx,CBK?";O$
141 POKE (W+1),2
145 U=0:POKE (W+8),2,0:N=0:T$="BE":POKE (W+2),0,0:GOSUB 1710
148 GOSUB 2400
150 GOSUB 1190:T$=""
155 "CN"GOSUB "W"
160 REM ***** CHECK ST *****
162 "ST"ST=1:K$=""
165 N=PEEK (W+2)*256+PEEK (W+3):T=PEEK W
170 Q=PEEK (W+6)*256+PEEK (W+7)+PEEK (&BF7A2)*65536
175 U=SGN (PEEK (W+8)-1.5)*PEEK (W+9)
180 F$="N":GOSUB 1000:IF Q>&BF3A0 THEN PRINT "ADDR.  OVER":GOSUB 200:GOTO 10
188 IF O$<>"ST"THEN GOTO 195
190 GOSUB 1700:K$=K$+X$+"  ":POKE (W+119+3*ST-3),PEEK (W+114),PEEK (W+115),PEEK (W+116):ST=ST+1
192 IF ST>2THEN GOSUB 2650:RETURN
195 GOTO 180
200 "EN"CLS :N=PEEK (W+2)*256+PEEK (W+3):IF INT (N/2)<>N/2THEN BEEP 1:PAUSE "CN !!!":GOTO "CN"
202 EN$="":INPUT "END (YES,NO)?";EN$
203 IF EN$<>"YES"THEN GOTO "CN"
204 IF (PEEK W<=3)THEN LET T$="EN":GOSUB 1190
205 K$="":GOSUB 2650:GOSUB 2800:RETURN
220 "B1"IF PEEK (W+2)*256+PEEK (W+3)=1GOTO 10
222 GOSUB 1700:K$=X$:GOTO 228
225 "BN"IF PEEK W<=3 GOTO 10
226 INPUT "Back Name:";B$:K$="Come Back Station"
228 GOSUB 2650
230 GOSUB "W":Q=65536*PEEK &BF7A2+PEEK (W+6)*256+PEEK (W+7)
232 N=PEEK (W+2)*256+PEEK (W+3):POKE (W+10),PEEK (W+2),PEEK (W+3)
235 Q=Q-24:N=N-1
240 IF N<>0 THEN GOTO 235
245 U=0
250 IF PEEK W<=3 LET X=Q:Y=Q+3:GOSUB "SS":U=U+S:X=Q+6:Y=Q+9:GOSUB "SS":U=U-S
252 IF PEEK W=6 LET X=Q+1:Y=Q+4:GOSUB "S":U=U+S:X=Q+7:Y=Q+10:GOSUB "S":U=U-S
255 IF ((PEEK W=4) OR (PEEK W=5)) LET X=Q:Y=Q+2:GOSUB "S":U=U+S:X=Q+4:Y=Q+6:GOSUB "S":U=U-S
260 R=Q:GOSUB "N$":IF PEEK W=6GOSUB "N6$"
265 IF N$=B$ AND O$="BN"THEN 278
270 IF (O$="B1"OR O$="C2") AND N=PEEK (W+10)*256+PEEK (W+11)-2 THEN GOTO 278
272 Q=Q+24:N=N+1:IF Q>=PEEK (W+6)*256+PEEK (W+7)+65536*PEEK &BF7A2 THEN BEEP 1:INPUT "Back Name:";B$:GOTO 230
275 GOTO 250
278 GOSUB 1710:U=U/PEEK (W+60)
280 N=N+1:Q=Q+24:X=SGN (U)*0.5+1.5:Y=ABS (U):POKE (W+8),X,Y:FN=PEEK (W+10)*256+PEEK (W+11)-N
281 IF O$="C2"THEN GOTO 285
282 POKE (W+112),(PEEK (W+112)+FN),(PEEK (W+113)+1)
285 Z=Q:GOSUB 1290:POKE (W+6),X,Y:Z=N:GOSUB "Z":POKE (W+2),X,Y
290 GOTO "CN"
319 REM ***** ST OBSERVE *****
320 "C1"N=-2:OO=1:Z0=2:B=0:D=0:AA=0:AB=0:AC=0:AD=0:GOTO 330
325 "C2"N=-3:OO=2:Z0=1
330 E=PEEK (W+22):T=PEEK W:IF ((T<=3) OR (T=6))THEN LET E=0.1*E
335 GOSUB 1170:GOSUB 1700
340 K$=X$:V$=X$:IF O$="C1"THEN LET K$="         "+X$:U$=X$
342 ON OO GOTO 345,350
345 AA=SGN (PEEK (W+114)-1.5)*(PEEK (W+115)*256+PEEK (W+116))
346 AC=SGN (PEEK (W+116+3*Z0)-1.5)*(PEEK (W+117+3*Z0)*256+PEEK (W+118+3*Z0)):GOTO 352
350 AB=SGN (PEEK (W+114)-1.5)*(PEEK (W+115)*256+PEEK (W+116))
351 AD=SGN (PEEK (W+116+3*Z0)-1.5)*(PEEK (W+117+3*Z0)*256+PEEK (W+118+3*Z0))
352 AE=-((AA-AC)*(OO=1)+(AB-AD)*(OO=2))
353 CLS :WAIT :PRINT "Cdh";OO;"=";AE*0.1;" mm"
354 CLS :WAIT :IF ABS AE*0.1<=E THEN PRINT "CH";OO;"--OK!":GOTO 370
355 A0=AA-AC+AB-AD
360 IF ABS A0*0.1<=E PRINT "CdH 1+2=";A0;"<";E;"mm --OK!":K$=V$+"  "+U$:OO=1:O$="C12":GOTO 370
365 BEEP 1:CLS :WAIT :PRINT "Cdh";OO;"=";AE*0.1;">";E;"mm":GOTO 380
370 GOSUB 2650:IF OO=1THEN GOTO "CN"
375 IF OO=2THEN BEEP 2:GOTO 230
380 RETURN
484 REM ***** CHANGE NAME *****
485 "CE"GOSUB 4100
490 CLS :CX$="*":INPUT "Name(E):?";CX$
492 CY$=" ":INPUT "Name(R):?";CY$:IF LEN CY$>(8+4*(PEEK W=6))BEEP 1:GOTO 492
493 IF CY$=" " OR CY$="  "THEN LET CY$=""
495 GOSUB 2250:R=W0+45:GOSUB 1650:NA$=N$:R=W0+53:GOSUB 1650:NB$=N$:CLS :PAUSE "WAIT...":OK=0
500 FOR QQ=X TO Y STEP 24
505 IF NA$=CX$ THEN LET N$=CY$:Q=W0+45:GOSUB 1230:PAUSE CX$;"->";CY$;" OK !":NA$=CY$:GOTO 530
510 IF NB$=CX$ AND OK=0 THEN LET N$=CY$:Q=W0+53:GOSUB 1230:PAUSE CX$;"->";CY$;" OK !":OK=1:NB$=CY$
515 R=QQ:GOSUB "N$":IF PEEK W=6GOSUB "N6$"
520 IF PEEK W<>6LET Q=QQ:IF N$=CX$ THEN LET N$=CY$:GOSUB 1230:WAIT :CLS :PAUSE CX$;"->";CY$;" OK!":GOTO 530
522 IF PEEK W=6LET Q=QQ:IF N$=CX$ THEN LET N$=CY$:GOSUB 1240:WAIT :CLS :PAUSE CX$;"->";CY$;" OK!":GOTO 530
525 NEXT QQ:BEEP 1:GOTO 490
530 N$=NA$+"-->"+NB$:IF PEEK W>3 LET Z$(0)=" "+N$:Z0=W0+2:L=32:GOSUB 2600
535 RETURN
549 REM ***** STAT S,H *****
550 "STAT"IF PEEK W<=3GOTO 10
552 CCB=PEEK (W+14)*256+PEEK (W+15):CCA=PEEK (W+12)*256+PEEK (W+13)
555 GOSUB 4100:GOSUB 2250:X0=X:Y0=Y:A=0:B=0:Q=X0-24:CLS
558 R=W0+45:GOSUB 1650:N1$=N$
560 Q=Q+24:R=Q:IF Q>=Y0 GOTO 590
565 IF (PEEK W<>6)GOSUB "SH":GOSUB "N$":IF N$<>""GOTO 575
566 IF (PEEK W=6)GOSUB "SH6":GOSUB "N6$":IF N$<>""GOTO 575
570 GOTO 560
575 IF (PEEK W=6)LET A=A*0.1/PEEK (W+60):B=B*0.1/PEEK (W+60)
576 PRINT N1$;"-->";N$;"  S=";A;"m  H=";B*0.001;"m"
580 N1$=N$:A=0:B=0:GOTO 560
590 RETURN
604 REM ***** DISPLAY THE RESULT *****
605 "PT"GOSUB 4100:GOSUB 4150
615 L=3:Z0=W0:GOSUB 2950:PRINT "DIR  :"+Z$(0)
620 L=32:Z0=W0+3:GOSUB 2950:PRINT "SEGM  :"+Z$(0)
630 PN$=STR$ (PEEK (W0+35)*256+PEEK (W0+36)):PRINT "N="+PN$
635 L=8:Z0=W0+41:GOSUB 2950:S=VAL Z$(0):PRINT "S=";S;" m"
640 L=12:Z0=W0+49:GOSUB 2950:H=VAL Z$(0):PRINT "H=";H;" m"
645 RETURN
719 REM ***** IC CHECK *****
720 "IC1"GOSUB "W":D=W+24:POKE (W+68),1:GOTO 725
722 "IC2"GOSUB "W":D=W+24:POKE (W+68),2
725 WAIT 0:AA=0:FOR K=1 TO 2:FOR I=1 TO 2:FOR J=1 TO 4
730 PRINT "J";K;":";CHR$ (64+I);J;"=";:INPUT Z:CLS :GOSUB 1290:POKE (W+55+(2*(K-1)+I)),A:POKE (D+AA),X,Y:AA=AA+2
735 NEXT J:NEXT I:NEXT K:WAIT
740 AA=0:FOR I=1 TO 16
744 XX=PEEK (W+55+(I-1)/4+1)*65536:YY=PEEK (D+2*I-2)*256:ZZ=PEEK (D+2*I-1)
745 AA=AA+(1*(I<5 OR I>12)-(I>4 AND I<13))*(XX+YY+ZZ)
750 NEXT I:AA=AA*2.5:GOSUB 1710:IF PEEK (W+23)=77LET AA=AA*0.01/(PEEK (W+60))
751 IF PEEK (W+68)=1LET AA=AA/2
752 PRINT "i=";AA;CHR$ 34
755 IF ABS AA>(-20*((PEEK W=4)OR (PEEK W=5))-15*((PEEK W<=3) OR (PEEK W=6)))GOTO 725
758 K$="        "+STR$ (AA)+CHR$ 34:IF PEEK (W+106)*256+PEEK (W+107)>0GOSUB 2650
760 IF PEEK (W+106)*256+PEEK (W+107)>0GOTO "CN"
765 RETURN
799 REM ***** DELETE THE STAG *****
800 "DE"INPUT "DELETE No:?";B
802 GOSUB 4105
805 GOSUB 4150:W1=W0
808 GOSUB 2255:W2=Y
809 L=16:Z0=W0+3:GOSUB 2950:WAIT 0:CLS :PRINT "DELETE: "+Z$(0)+"(YES,NO)";:INPUT DE$:WAIT :IF DE$<>"YES"GOTO 10
810 W3=PEEK (W+6)*256+PEEK (W+7)+65536*PEEK &BF7A2
812 FOR Z=0 TO W3-W2:POKE (W1+Z),PEEK (W2+Z):NEXT Z
820 POKE (W+105),(PEEK (W+105)-1)
825 AA=6:GOSUB 850
826 AA=110:GOSUB 850
827 AA=117:GOSUB 850
828 AA=125:GOSUB 850
835 X=W+72+4*B-4:Y=W+72+4*8-4:X0=X:Y0=W+72+4*PEEK (W+105)-4
836 XY=PEEK (X+2)*256+PEEK (X+3)-PEEK (X)*256-PEEK (X+1)
840 FOR Z=X TO Y:POKE (Z),PEEK (Z+4):NEXT Z
842 Z=PEEK (X0)*256+PEEK (X0+1)-XY+65536*PEEK &BF7A2:Z=-Z*(Z>0)+0*(Z<=0):GOSUB 1290:POKE (X0),X,Y:X0=X0+2
843 IF X0<=Y0 GOTO 842
845 RETURN
850 Z=PEEK (W+AA)*256+PEEK (W+AA+1)-(W2-W1)+65536*PEEK &BF7A2:GOSUB 1290:POKE (W+AA),X,Y:RETURN
900 "CD"GOSUB 2650:K$="":GOTO "CN"
949 REM ***** CHECK THE H1H2 MARK *****
950 "UD"Q=&BF3A0:T=PEEK W:H2=PEEK (W+21):N=-100
952 GOSUB 1170:H4=V*0.1:GOSUB 1170:H5=V*0.1
960 WAIT :PRINT "UdH=";(H4-H5);"mm":IF ABS (H4-H5)>H2 THEN BEEP 2:CLS :PRINT "UdH=";(H4-H5);">";H2;"mm":GOTO 952
965 CLS :K$=STR$ ((H4+H5)/2*0.001):GOSUB 2650
970 PAUSE "CHECK OVER!":GOTO "CN"
999 REM ***** OBSERVE RECORD *****
1000 Q$="483A4A7F5A5A4800":GOSUB 1450:IF Y<=10THEN PAUSE Y;"  YET."
1002 A=0:B=0:C=0:D=0:E1=0:F1=0:G1=0:H1=0
1005 GOSUB 1710:ON T-1GOTO 1010,1022,1055,1055,1008
1008 GOSUB 1130:GOSUB 1132:GOTO 1020
1010 IF (PEEK (W+1)=1 AND INT (N/2)=N/2) OR (PEEK (W+1)=2 AND INT (N/2)<>N/2)THEN GOSUB 1120:GOTO 1020
1012 GOSUB 1125
1020 GOTO 1040
1022 GOSUB 1120
1040 XX=E1-F1-H1+G1-(CCB-CCA)*(PEEK (W+1)=1)-(CCA-CCB)*(PEEK (W+1)=2)
1042 WAIT :CLS :IF ABS (XX)>PEEK (W+20)*X THEN BEEP 2:PAUSE "dh OVER.":GOTO 1005
1043 WAIT 0:PRINT "  --ok.";:GCURSOR (7,7):GPRINT Q$;:PAUSE :PAUSE
1044 U=U+E-F:X1=SGN (U)*0.5+1.5:Y1=ABS (U):GOSUB 3230:GOSUB 3270
1045 GOSUB 3240:GOSUB 1180:GOSUB 3250
1046 POKE (Q),0,A,E,0,B,F,0,C,G,0,D,H,A2,E1,A1,B2,F1,B1,C2,G1,C1,D2,H1,D1
1050 GOTO 1085
1055 GOSUB 3120:IF A<1THEN GOTO 10
1058 GOSUB 3150:IF PEEK W=4 GOSUB 4700
1060 GOSUB 3130:WAIT :CLS :IF ABS (A-C)>PEEK (W+17)THEN BEEP 2:PAUSE "D=";A-C;"M":GOTO 1060
1062 IF ABS (U+A-C)>PEEK (W+18)THEN BEEP 2:CLS :PAUSE "MD OVER.":GOTO 1060
1065 GOSUB 3165:IF PEEK W=4 GOSUB 4720
1066 XX=E1-F1-H1+G1-(CCB-CCA)*(PEEK (W+1)=1)-(CCA-CCB)*(PEEK (W+1)=2)
1067 IF ABS (XX)>PEEK (W+20)THEN BEEP 2:PAUSE "dh OVER.":GOSUB 3150:GOTO 1065
1070 WAIT 0:PRINT "   --ok.";:GCURSOR (7,7):GPRINT Q$;:PAUSE :PAUSE
1075 U=U+A-C:X1=SGN (U)*0.5+1.5:Y1=ABS (U)
1080 GOSUB 3230:GOSUB 3240:GOSUB 3250:B=0:F=0:D=0:H=0
1082 POKE (Q),A,E,B,F,C,G,D,H,E1,A1,F1,B1,G1,C1,H1,D1
1085 ON T-1GOSUB 1212,1212,1190,1190,1190,1190
1090 WAIT :RETURN
1100 Z=0:A8$=A7$:Z=A:GOSUB 3200:A=Z:A8$=A6$:Z=B:GOSUB 3200:B=Z:WAIT :CLS :IF A+B=0GOTO 10
1105 E=(A-B)/PEEK (W+60):IF A<=B OR ABS E*0.1>PEEK (W+16)THEN BEEP 2:PAUSE "D=";E*0.1;"m !":GOTO 1100
1108 RETURN
1110 Z=0:A8$=A7$:Z=C:GOSUB 3210:C=Z:A8$=A6$:Z=D:GOSUB 3210:D=Z:WAIT :CLS :IF C+D=0GOTO 10
1115 F=(C-D)/PEEK (W+60):IF C<=D OR ABS F*0.1>PEEK (W+16)THEN BEEP 2:PAUSE "D=";F*0.1;"m !":GOTO 1005
1118 RETURN
1120 GOSUB 1100:GOSUB 1150:GOSUB 1155:GOSUB 1110:IF PEEK W=2 GOSUB 4600
1122 GOSUB 4640:GOSUB 1160:GOSUB 1165:GOSUB 4660:RETURN
1125 GOSUB 1110:GOSUB 1155:GOSUB 1150:GOSUB 1100:IF PEEK W=2 GOSUB 4600
1127 GOSUB 4640:GOSUB 1165:GOSUB 1160:GOSUB 4680:RETURN
1130 GOSUB 1100:GOSUB 1150:GOSUB 1165:GOSUB 4730:RETURN
1132 GOSUB 1110:GOSUB 1155:GOSUB 1160:GOSUB 4750:RETURN
1150 A8$=A1$:A9$=A3$:Z=E1:GOSUB 3220:E1=Z:RETURN
1155 A8$=A2$:A9$=A3$:Z=F1:GOSUB 3220:F1=Z:RETURN
1160 A8$=A2$:A9$=A4$:Z=G1:GOSUB 3220:G1=Z:RETURN
1165 A8$=A1$:A9$=A4$:Z=H1:GOSUB 3220:H1=Z:RETURN
1170 GOSUB 1710:ON T-1GOTO 1172,1172,1174,1174
1172 GOSUB 1150:GOSUB 1155:GOSUB 1160:GOSUB 1165:GOTO 1176
1174 GOSUB 3150:GOSUB 3165
1176 GOSUB 3240:RETURN
1180 Z=65536:A2=INT (E1/Z):B2=INT (F1/Z):C2=INT (G1/Z):D2=INT (H1/Z)
1185 E1=E1-A2*Z:F1=F1-B2*Z:G1=G1-C2*Z:H1=H1-D2*Z:RETURN
1189 REM ***** INPUT NAME *****
1190 N$="":CLS :IF (T=4 AND (INT (N/2)<>N/2)) OR (T=5) OR (T=6) OR T$="BE" OR T$="EN"THEN INPUT "Name:?";N$
1191 IF LEN N$>8+4*(T=6)BEEP 1:GOTO 1190
1193 IF ((T$="BE" OR T$="EN") AND (LEN N$=0))GOTO 1190
1194 GOSUB "W0":IF T$="BE" LET Z$=N$:GOSUB "LETN$":POKE (W0+61),A,B,C,D,E,F,G,H:GOTO 1225
1195 LET Z$=N$:GOSUB "LETN$":POKE (W0+69),A,B,C,D,E,F,G,H
1200 IF PEEK W<=3 GOTO 1212
1206 IF PEEK W<>6GOSUB 1230:IF T$="BE" OR T$="EN"LET X1=2:Y1=0
1208 IF PEEK W=6GOSUB 1240:IF T$="BE" OR T$="EN"LET X1=2:Y1=0
1212 POKE (W+8),X1,Y1
1215 Q=Q+24:Z=Q:GOSUB 1290:POKE (W+6),X,Y
1220 N=N+1:Z=N:GOSUB "Z":POKE (W+2),X,Y:POKE (W+108),X,Y
1225 RETURN
1230 Z$=N$:GOSUB "LETN$":POKE (Q+16),A,B,C,D,E,F,G,H:RETURN
1240 Z$=N$:GOSUB "LETN$":POKE (Q+0),A:POKE (Q+3),B:POKE (Q+6),C:POKE (Q+9),D:RETURN
1270 "CW"Z=PEEK (W+I)*256+PEEK (W+I+1)+W-PEEK (W+69)*256-PEEK (W+70):GOSUB 1290:POKE (W+I),X,Y:RETURN
1289 REM ***** DIVIDE W VALUE *****
1290 A=INT (Z/65536):Z=Z-A*65536
1300 "Z"X=INT (Z/256):Y=Z-256*X:RETURN
1450 X=9-PEEK (W+105):Y=INT ((&BF3A0-65536*PEEK &BF7A2-PEEK (W+6)*256-PEEK (W+7))/24):RETURN
1459 REM ***** CHECK COMMAND *****
1460 Z1=PEEK (W+108)*256+PEEK (W+109):Z2=PEEK (W+106)*256+PEEK (W+107)
1461 IF (O$="B1" OR O$="BN" OR O$="CN" OR O$="C1" OR O$="EN")AND (Z1=0)GOTO 10
1462 IF O$="C2" AND W$="C2"GOTO 1480
1465 IF O$="C2" AND W$<>"C1"GOTO 10
1470 IF (O$="ST" OR O$="CD" OR O$="UD") AND (Z2=0)GOTO 10
1478 IF (O$="GO" OR O$="BK") AND (Z1+Z2<>0)GOSUB 1490
1480 RETURN
1490 C$="":INPUT "CLEAR DATA (YES/NO)??";C$
1495 IF C$<>"YES"GOTO 10
1498 RETURN
1500 "LETN$"A=ASC MID$ (Z$,1,1):B=ASC MID$ (Z$,2,1):C=ASC MID$ (Z$,3,1):D=ASC MID$ (Z$,4,1)
1502 E=ASC MID$ (Z$,5,1):F=ASC MID$ (Z$,6,1):G=ASC MID$ (Z$,7,1):H=ASC MID$ (Z$,8,1)
1505 RETURN
1550 "SS"S=PEEK (X)*65536+PEEK (X+1)*256+PEEK (X+2)-PEEK (Y)*65536-PEEK (Y+1)*256-PEEK (Y+2):RETURN
1555 "S"S=PEEK (X)*256+PEEK (X+1)-PEEK (Y)*256-PEEK (Y+1):RETURN
1650 "N$"N$="":FOR J=16 TO 23:IF PEEK (R+J)=0GOTO 1660
1655 N$=N$+CHR$ (PEEK (R+J))
1660 NEXT J:RETURN
1670 "N6$"N$="":FOR J=0TO 9STEP 3:IF PEEK (R+J)=0GOTO 1674
1672 N$=N$+CHR$ (PEEK (R+J))
1674 NEXT J:RETURN
1699 REM ***** COME BACK B1 *****
1700 X$=STR$ (SGN (PEEK (W+114)-1.5)*(PEEK (W+115)*256+PEEK (W+116))*0.0001)
1702 RETURN
1710 CCB=PEEK (W+14)*256+PEEK (W+15):CCA=PEEK (W+12)*256+PEEK (W+13)
1715 NL=PEEK (W+2)*256+PEEK (W+3)
1718 IF INT (NL/2)<>NL/2GOTO 1725
1720 CCB=PEEK (W+12)*256+PEEK (W+13):CCA=PEEK (W+14)*256+PEEK (W+15)
1725 CC=CCB:RETURN
1750 N=0:A=0:B=0:C=0:D=0:E=0:F=0:G=0:H=0:V=0
1760 RETURN
1824 REM ***** STAT THE S,H VALUE *****
1825 "SH"IF PEEK W<=3GOTO 1850
1830 X=Q:Y=Q+2:GOSUB "S":A=A+S:X=Q+4:Y=Q+6:GOSUB "S":A=A+S
1831 X=Q+8:Y=Q+10:GOSUB "S":UU=S:X=Q+14:Y=Q+12:GOSUB "S":VV=S+CCA-CCB
1832 WW=S+CCB-CCA:IF (CCB=CCA)LET B=B+UU*0.5+VV*0.5:RETURN
1833 XX=UU-VV:IF XX<0LET XX=-XX
1834 YY=UU-WW:IF YY<0LET YY=-YY
1835 B=B+UU*0.5-VV*0.5*(XX<10)-WW*0.5*(YY<10):RETURN
1850 X=Q:Y=Q+3:GOSUB "SS":A=A+S:X=Q+6:Y=Q+9:GOSUB "SS":A=A+S
1851 X=Q+12:Y=Q+15:GOSUB "SS":UU=S:X=Q+21:Y=Q+18:GOSUB "SS":VV=S+CCA-CCB
1852 WW=S+CCB-CCA:IF (CCB=CCA)LET B=B+UU*0.5+VV*0.5:RETURN
1853 XX=UU-VV:IF XX<0LET XX=-XX
1854 YY=UU-WW:IF YY<0LET YY=-YY
1855 B=B+UU*0.5-VV*0.5*(XX<10)-WW*0.5*(YY<10):RETURN
1870 "SH6"X=Q+1:Y=Q+4:GOSUB "S":A=A+S:X=Q+7:Y=Q+10:GOSUB "S":A=A+S
1871 X=Q+12:Y=Q+15:GOSUB "SS":UU=S:X=Q+21:Y=Q+18:GOSUB "SS":VV=S+CCA-CCB
1872 WW=S+CCB-CCA:IF (CCB=CCA)LET B=B+UU*0.5+VV*0.5:RETURN
1873 XX=UU-VV:IF XX<0LET XX=-XX
1874 YY=UU-WW:IF YY<0LET YY=-YY
1875 B=B+UU*0.5-VV*0.5*(XX<10)-WW*0.5*(YY<10):RETURN
1880 GOSUB 1710:A=A*0.1/PEEK (W+60)
1885 IF PEEK (W+23)<>76THEN LET B=B*0.1/PEEK (W+60)
1890 RETURN
1899 REM ***** SET DATA AREA *****
1900 "RESET"CLS :WAIT 0:PRINT "CLEAR ALL DATA! BE SURE?! (YES,NO)";:INPUT SU$:WAIT :IF SU$<>"YES"GOTO 10
1902 CLS :INPUT "1 (500), 2(200), 3(0) ?";K:ON K GOTO 1905,1910,1915
1905 POKE &BFE03,&1A,&FD,&B,&47,&38,&0:GOSUB 1920:CALL &FFFD8
1910 POKE &BFE03,&1A,&FD,&B,&27,&1C,&0:GOSUB 1920:CALL &FFFD8
1915 POKE &BFE03,&1A,&FD,&B,&00,&10,&0:GOSUB 1920:CALL &FFFD8
1920 W=&BFBFF-256*PEEK (&BFE07)-PEEK (&BFE06)
1925 Z=W:GOSUB 1290:POKE &BF7A2,A,X,Y
1930 RETURN
1934 REM ***** BACKUP W VALUE *****
1935 POKE &BF7A2,PEEK (W+65),PEEK (W+66),PEEK (W+67):RETURN
1940 "W"W=65536*PEEK (&BF7A2)+256*PEEK (&BF7A3)+PEEK &BF7A4:RETURN
1949 REM ***** ALL CLEAR DATA *****
1950 GOSUB 1920:FOR I=W+40TO &BF3A0 STEP 20
1955 POKE (I),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1960 NEXT I:POKE (W+65),PEEK &BF7A2,PEEK &BF7A3,PEEK &BF7A4
1970 POKE (W+2),0,0:RETURN
2200 GOSUB "W0":R=W0+61-16:GOSUB 1650:K$=N$:R=W0+69-16:GOSUB 1650:K$=K$+"-->"+N$
2205 RETURN
2249 REM ***** CALCULATE ADDRESS *****
2250 GOSUB 4150:X=W0+80+50*(PEEK (W0+39)*256+PEEK (W0+40))
2255 Y=PEEK (W+72+4*B-2)*256+PEEK (W+72+4*B-1)+65536*PEEK &BF7A2
2260 RETURN
2300 IF PEEK (W+69)*256+PEEK (W+70)=PEEK (W+117)*256+PEEK (W+118)GOTO 10
2305 RETURN
2349 REM ***** CHINESE WORD *****
2350 A1$="00403F75555575":A2$="007A2B7A025B7A"
2355 A3$="0057357F3F7557":A4$="00545E15427E42"
2360 A5$="00777D577F555D"
2362 REM A7$="0001017F091101":A6$="0040407F444444"
2365 A6$="0001017F091101":A7$="0040407F444444"
2370 RETURN
2399 REM ***** NEXT STAG *****
2400 IF PEEK (W+105)=1LET Z=W+216:GOTO 2445
2405 W0=PEEK (W+105)-1
2410 B=W0:GOSUB 2255:Z=Y+1
2445 W0=PEEK (W+105)
2450 GOSUB 1290:POKE (W+72+4*W0-4),X,Y
2455 POKE (W+106),0,0,0,0:POKE (W+112),0,0
2460 GOSUB "W0":Z0=W0
2465 Z$(0)=O$
2470 L=3:GOSUB 2600
2472 Z=Z0:GOSUB 1290:POKE (W+125),X,Y:IF PEEK W>3LET Z0=Z0+32:GOTO 2485
2475 CLS :INPUT "CeDuanShuoMing(SEGM:32)=";Z$(0):IF LEN Z$(0)>32GOTO 2475
2480 L=32:GOSUB 2600
2485 FOR Z=35 TO 79:POKE (W0+Z),0:Z0=Z0+1:NEXT Z
2495 Z0=W0+80:Z=Z0:GOSUB 1290:POKE (W+110),X,Y
2500 K$="":IF PEEK W<>6GOSUB 2650
2505 Q=W0+80+50*20:Z=Q:GOSUB 1290:POKE (W+6),X,Y
2510 RETURN
2549 REM ***** ASK CURRENT STAG FIRST ADDRESS *****
2550 "W0"W0=PEEK (W+105)
2555 W0=256*PEEK (W+72+4*W0-4)+PEEK (W+72+4*W0-3)+65536*PEEK &BF7A2
2560 RETURN
2600 FOR Z=1TO L
2605 X=ASC (MID$ (Z$(0),Z,1)):POKE (Z0),(X-(X=0)*32):Z0=Z0+1
2610 NEXT Z:RETURN
2649 REM ***** RECORD CONDITION *****
2650 Z0=PEEK (W+106)*256+PEEK (W+107):IF Z0>=20 OR (Z0=19 AND O$<>"EN")GOTO 2760
2655 Z0=PEEK (W+110)*256+PEEK (W+111)+65536*PEEK &BF7A2:Z$(0)=O$
2660 L=3:GOSUB 2600
2662 Z$(0)="":IF PEEK W>4LET L=26:GOSUB 2600:GOTO 2750
2665 CLS :Z$(0)="":INPUT "ShiJian(TIME:8)=";Z$(0):IF LEN Z$(0)<>8BEEP 1:GOTO 2665
2670 L=8:GOSUB 2600
2675 AT=PEEK (W+2)*256+PEEK (W+3)-1
2676 IF O$="C2"LET AT=AT-1
2677 IF T$="BE" OR (O$="UD" AND AT<=1)LET AT=1
2680 Z$(0)=STR$ AT:L=3:GOSUB 2600
2685 CLS :Z$(0)="":INPUT "WenDu(AT:5)=";AT:Z$(0)=CHR$ (44-(AT<0)+(AT>=0))+STR$ (ABS AT)
2688 IF LEN Z$(0)>5BEEP 1:GOTO 2685
2690 L=5:GOSUB 2600
2695 CLS :Z$(0)="":INPUT "TianQi(WE:2)=";Z$(0):IF LEN Z$(0)<>2BEEP 1:GOTO 2695
2700 L=2:GOSUB 2600
2705 CLS :Z$(0)="":INPUT "ChengXiang(IMG:1)=";Z$(0):IF LEN Z$(0)<>1BEEP 1:GOTO 2705
2710 L=2:GOSUB 2600
2715 CLS :Z$(0)="":INPUT "TaiYang(SUN:1)=";Z$(0):IF LEN Z$(0)<>1BEEP 1:GOTO 2715
2720 L=2:GOSUB 2600
2725 CLS :Z$(0)="":INPUT "FengLi(WIND:2)=";Z$(0):IF LEN Z$(0)<>2BEEP 1:GOTO 2725
2730 L=2:GOSUB 2600
2735 CLS :Z$(0)="":INPUT "TuZhi(LAND:2)=";Z$(0):IF LEN Z$(0)<>2BEEP 1:GOTO 2735
2740 L=2:GOSUB 2600
2750 Z$(0)=K$:L=21:GOSUB 2600
2755 Z=Z0:GOSUB 1290:POKE (W+110),X,Y
2758 Z=PEEK (W+106)*256+PEEK (W+107)+1:GOSUB "Z":POKE (W+106),X,Y
2760 RETURN
2799 REM ***** OBSERVE OVER *****
2800 GOSUB "W0"
2805 P0=PEEK (W+106)*256+PEEK (W+107)
2810 W1=W0+80+P0*50:W2=W0+80+20*50
2815 W3=(PEEK (W+108)*256+PEEK (W+109))*24:IF W1=W2 GOTO 2840
2820 FOR Z=0TO W3-1
2825 POKE (W1+Z),PEEK (W2+Z)
2830 NEXT Z
2840 POKE (W0+35),PEEK (W+108),PEEK (W+109)+1*(PEEK W<=3)
2842 POKE (W0+37),PEEK (W+112)
2844 POKE (W0+38),PEEK (W+113)
2846 POKE (W0+39),PEEK (W+106),PEEK (W+107)
2850 X0=W1:Y0=W1+W3:A=0:B=0:IF PEEK W<=3 LET Y0=Y0-24
2852 FOR Q=X0 TO Y0 STEP 24:IF PEEK W<>6GOSUB "SH"
2853 IF PEEK W=6GOSUB "SH6"
2854 NEXT Q
2855 IF ((PEEK W<=3) OR (PEEK W=6))GOSUB 1880
2860 Z0=W0+41:Z$(0)="        "+STR$ (A):Z$(0)=RIGHT$ (Z$(0),8):L=8:GOSUB 2600
2865 Z0=W0+49:Z$(0)="            "+STR$ (B*0.001):Z$(0)=RIGHT$ (Z$(0),12):L=12:GOSUB 2600
2910 W0=PEEK (W+105)
2915 Z=W1+W3:GOSUB 1290:POKE (W+72+4*W0-2),X,Y:POKE (W+6),X,Y
2920 B=PEEK (W+105)
2925 IF PEEK W<=3GOTO 2935
2930 GOSUB 2200:Z$(0)=" "+K$:Z0=W0+2:L=32:GOSUB 2600
2935 POKE (W+105),(PEEK (W+105)+1)
2940 POKE (W+106),0,0,0,0:RETURN
2950 Z$(0)="":FOR Z=0TO L-1:Z$(0)=Z$(0)+CHR$ (PEEK (Z0+Z)):NEXT Z:RETURN
3120 Z=0:A8$="":Z=A:GOSUB 3200:A=Z:WAIT :CLS :IF A>PEEK (W+16)THEN BEEP 2:GOTO 3120
3125 RETURN
3130 Z=0:A8$="":Z=C:GOSUB 3210:C=Z:WAIT :CLS :IF C<1 OR C>PEEK (W+16)THEN BEEP 2:GOTO 3130
3135 RETURN
3150 A8$=A1$:A9$=A3$:Z=E1:GOSUB 3220:E1=Z:A9$=A4$:Z=H1:GOSUB 3220:H1=Z
3155 XX=E1-CCB*(PEEK (W+1)=1)-CCA*(PEEK (W+1)=2)-H1
3156 WAIT :CLS :IF ABS (XX)>PEEK (W+19)THEN BEEP 2:PAUSE "B: C OVER.":GOTO 3150
3160 RETURN
3165 A8$=A2$:A9$=A3$:Z=F1:GOSUB 3220:F1=Z:A9$=A4$:Z=G1:GOSUB 3220:G1=Z
3170 XX=F1-CCA*(PEEK (W+1)=1)-CCB*(PEEK (W+1)=2)-G1
3171 WAIT :CLS :IF ABS (XX)>PEEK (W+19)THEN BEEP 2:PAUSE "A: C OVER.":GOTO 3165
3175 RETURN
3200 A9$=A1$
3205 MD=SGN (PEEK (W+8)-1.5)*PEEK (W+9):IF ((T<=3) OR (T=6))LET MD=MD*0.1
3206 LE=LEN (STR$ (N+1)+STR$ (MD)):CLS :WAIT 0:PRINT "N=";N+1;" MD=";MD;"       =";
3208 GCURSOR (70+LE*5,7):GPRINT A9$+A5$+A8$;:PRINT Z;"/";:INPUT Z
3209 RETURN
3210 A9$=A2$:GOTO 3205
3220 LE=LEN (STR$ (N+1)+STR$ (MD)):CLS :WAIT 0:PRINT "N=";N+1;" MD=";MD;"       =";
3222 GCURSOR (70+LE*5,7):GPRINT A8$+A9$;:PRINT Z;"/";:INPUT Z
3225 RETURN
3230 Z=A:GOSUB "Z":A=X:E=Y:Z=C:GOSUB "Z":C=X:G=Y:RETURN
3240 V=(E1-F1+H1-G1)/2*10:GOSUB 1710
3241 IF ((PEEK W=6) OR (PEEK W<=3 AND PEEK (W+23)=77))LET V=V/10/PEEK (W+60)
3242 P=SGN (V)*0.5+1.5:Z=ABS (V):GOSUB "Z":POKE (W+114),P,X,Y:RETURN
3250 Z=E1:GOSUB "Z":E1=X:A1=Y:Z=F1:GOSUB "Z":F1=X:B1=Y
3255 Z=G1:GOSUB "Z":G1=X:C1=Y:Z=H1:GOSUB "Z":H1=X:D1=Y:RETURN
3270 Z=B:GOSUB "Z":B=X:F=Y:Z=D:GOSUB "Z":D=X:H=Y:RETURN
3300 U$=STR$ U:IF LEN U$>=V GOTO 3315
3305 U$=" "+U$
3310 IF LEN U$<V GOTO 3305
3315 RETURN
4000 "L$"GOSUB "W":Z0=W+128
4005 CLS :Z$(0)="":INPUT "RiQi(DATE:8)=";Z$(0)
4006 IF LEN Z$(0)>8BEEP 1:GOTO 4005
4007 L=8:GOSUB 2600
4010 CLS :Z$(0)="":INPUT "YiQiMing(INST:8)=";Z$(0)
4011 IF LEN Z$(0)>8BEEP 1:GOTO 4010
4012 L=8:GOSUB 2600
4015 CLS :Z$(0)="":INPUT "YiQiHao(INO:7)=";Z$(0)
4016 IF LEN Z$(0)>7BEEP 1:GOTO 4015
4017 L=7:GOSUB 2600
4020 CLS :Z$(0)="":INPUT "BiaoChiHao(BFNO:15)=";Z$(0)
4021 IF LEN Z$(0)>15BEEP 1:GOTO 4020
4022 L=15:GOSUB 2600
4025 Z$(0)=STR$ (PEEK (W+12)*256+PEEK (W+13))+STR$ (PEEK (W+14)*256+PEEK (W+15))
4027 L=14:GOSUB 2600
4030 CLS :Z$(0)="":INPUT "GuanCeZhe(OBS:18)=";Z$(0)
4031 IF LEN Z$(0)>18BEEP 1:GOTO 4030
4032 L=18:GOSUB 2600
4035 CLS :Z$(0)="":INPUT "JiLuZhe(REG:18)=";Z$(0)
4036 IF LEN Z$(0)>18BEEP 1:GOTO 4035
4037 L=18:GOSUB 2600
4038 RETURN
4100 INPUT "STG: ?";B
4105 IF (B>PEEK (W+105)-1) OR B<1GOTO 10
4110 RETURN
4150 W0=B:GOSUB 2555:RETURN
4199 REM ***** PUT OUT THE FILE *****
4200 "OUT"GOSUB "W":N=PEEK (W+6)*256+PEEK (W+7)+65536*PEEK &BF7A2:M=W:MM=(N-M)/40:KK=0
4205 WAIT 0:PRINT "Input Data File Name :";:INPUT WW$:WAIT :CLS
4210 WW$="E:"+WW$+".DAT":DIM AA$(40)
4215 OPEN WW$ FOR OUTPUT AS #1
4220 FOR I=M TO N STEP 40
4222 CLS :WAIT 0:PRINT "SUCESS:";INT (KK/MM*100);"%";:KK=KK+1
4225 FOR J=0TO 40-1
4230 Q=PEEK (I+J):GOSUB "Q":AA$(J)=UV$
4235 NEXT J
4240 AA$="":FOR J=0TO 40-1:AA$=AA$+AA$(J):NEXT J
4245 PRINT #1,AA$
4260 NEXT I
4265 CLOSE #1:WAIT :CLS :PAUSE "FINISH!":ERASE AA
4300 "Q"X=INT (Q/18):Y=Q-18*X:U$=CHR$ (X+65):V$=CHR$ (Y+65):UV$=U$+V$:RETURN
4600 X=0.5*10000*PEEK (W+60):Y=0.3*10000*PEEK (W+60)
4605 IF (E>=20*10 AND E1<X) OR (E<20*10 AND E1<Y)THEN BEEP 2:CLS :PAUSE "B  LOW.":GOTO 1120
4610 IF ABS ((A+B)/2-E1*0.1)>Y/1000THEN BEEP 2:CLS :PAUSE "B READ >3mm":GOTO 1120
4625 IF (F>=20*10 AND F1<X) OR (F<20*10 AND F1<Y)THEN BEEP 2:CLS :PAUSE "A  LOW.":GOTO 1120
4630 IF ABS ((C+D)/2-F1*0.1)>Y/1000THEN BEEP 2:CLS :PAUSE "A READ >3mm":GOTO 1120
4635 RETURN
4640 IF ABS (E-F)*0.1>PEEK (W+17)THEN BEEP 2:CLS :PAUSE "D=";(E-F)*0.1;"M":GOTO 1120
4645 IF ABS (U+E-F)*0.1>PEEK (W+18)THEN BEEP 2:CLS :PAUSE "MD OVER.":GOTO 1120
4650 RETURN
4660 WAIT :CLS :X=0.1:IF PEEK (W+23)=77THEN LET X=PEEK (W+60)
4662 IF ABS (E1-CCB*(PEEK (W+1)=1)-CCA*(PEEK (W+1)=2)-H1)>PEEK (W+19)*X THEN BEEP 2:PAUSE "B: C OVER.":GOTO 1120
4665 IF ABS (F1-CCA*(PEEK (W+1)=1)-CCB*(PEEK (W+1)=2)-G1)>PEEK (W+19)*X THEN BEEP 2:PAUSE "A: C OVER.":GOTO 1120
4670 RETURN
4680 WAIT :CLS :X=0.1:IF PEEK (W+23)=77THEN LET X=PEEK (W+60)
4682 IF ABS (F1-CCA*(PEEK (W+1)=1)-CCB*(PEEK (W+1)=2)-G1)>PEEK (W+19)*X THEN BEEP 2:PAUSE "A: C OVER.":GOTO 1120
4685 IF ABS (E1-CCB*(PEEK (W+1)=1)-CCA*(PEEK (W+1)=2)-H1)>PEEK (W+19)*X THEN BEEP 2:PAUSE "B: C OVER.":GOTO 1120
4690 RETURN
4700 IF (((E1-A*5)<=0) OR ((E1+A*5)>3000)) BEEP 2:PAUSE "3-CROSS CAN NOT READ !":GOTO 1055
4705 RETURN
4720 IF (((F1-C*5)<=0) OR ((F1+C*5)>3000)) BEEP 2:PAUSE "3-CROSS CAN NOT READ !":GOTO 1060
4725 RETURN
4730 X=0.5*10000*PEEK (W+60):Y=0.3*10000*PEEK (W+60)
4732 IF (E>=20*10 AND E1<X) OR (E<20*10 AND E1<Y)THEN BEEP 2:CLS :PAUSE "B  LOW.":GOTO 1130
4734 IF ABS ((A+B)/2-E1*0.1)>Y/1000THEN BEEP 2:CLS :PAUSE "B READ >3mm":GOTO 1130
4736 WAIT :CLS :X=0.1:IF PEEK (W+23)=77THEN LET X=PEEK (W+60)
4738 IF ABS (E1-CCB*(PEEK (W+1)=1)-CCA*(PEEK (W+1)=2)-H1)>PEEK (W+19)*X THEN BEEP 2:PAUSE "B: C OVER.":GOTO 1130
4740 RETURN
4750 IF ABS (E-F)*0.1>PEEK (W+17)THEN BEEP 2:CLS :PAUSE "D=";(E-F)*0.1;"M":GOTO 1132
4755 IF ABS (U+E-F)*0.1>PEEK (W+18)THEN BEEP 2:CLS :PAUSE "MD OVER.":GOTO 1132
4760 X=0.5*10000*PEEK (W+60):Y=0.3*10000*PEEK (W+60)
4762 IF (F>=20*10 AND F1<X) OR (F<20*10 AND F1<Y)THEN BEEP 2:CLS :PAUSE "A  LOW.":GOTO 1132
4764 IF ABS ((C+D)/2-F1*0.1)>Y/1000THEN BEEP 2:CLS :PAUSE "A READ >3mm":GOTO 1132
4766 WAIT :CLS :X=0.1:IF PEEK (W+23)=77THEN LET X=PEEK (W+60)
4768 IF ABS (F1-CCA*(PEEK (W+1)=1)-CCB*(PEEK (W+1)=2)-G1)>PEEK (W+19)*X THEN BEEP 2:PAUSE "A: C OVER.":GOTO 1132
4770 RETURN
5000 "2"DATA "M2",50,1.0,3.0,60650,50650,0.5,0.7,1.0,1.0
5005 "3M"DATA "M",75,2.0,5.0,30155,30155,1.0,1.5,3.0,3.0
5010 "3L"DATA "L",75,2.0,5.0,4687,4787,2.0,3.0,3.0,3.0
5015 "4"DATA 100,3,10,4687,4787,3,5,5,5
5020 "5"DATA 120,10,50,3015,3015,4,6,6,6
5025 "6"DATA "M2",50,1.0,3.0,60650,50650,0.5,0.7,1.0,1.0

