Listing of file='WDMD020A' on disk='vmedia/701-2046C.wvd.zip'
# Sector 495, program filename = 'WDMD020A'
0010 REM . WDMD020A, 00-00 (6/28/75), 12002
0100 DIM C$(16),A$40,Q0$42,W1$1,N$8,N1$8,L$2,L$(1)2,A$(2),A1$(2,2),X(2),X1(2,2
),H$2,H1$1,Y2$5,Y3$5
: P9=P9+1
: ON ERRORE1$,E2$GOTO 4190
: S9=1023
: Y2=2
: Y2$="DATA2"
: Y3$="DATA3"
: H1$=HEX(00)
0180 PRINT HEX(03);"MOUNT SCRATCH DISKS IN ALL TEST DRIVES."
: PRINT "KEY EXEC TO RESUME"
0200 SELECT P2
: PRINT HEX(010A0A);" (DATA ON SCRATCH DISKS WILL BE DESTROYED)"
: KEYIN Z$,250,250
: PRINT HEX(0C);TAB(64);
: GOTO 200
0250 SELECT P
: GOSUB 3910
: IF O8=1THEN 300
: GOSUB '100
: GOSUB 3910
0300 PRINT "DATA SAVE DA";
: E=0
: GOSUB '44(1,2,100)
: GOSUB '44(2,1,200)
: GOSUB '44(5,3,1000)
: IF E>0THEN 370
: PRINT "OK"
0370 PRINT "DATA LOAD DA ";
: E=0
: GOSUB '45(2,2,200)
: GOSUB '45(1,3,100)
: GOSUB '45(5,1,1000)
: IF E>0THEN 440
: PRINT "OK"
0440 PRINT "DATA SAVE BA ";
: E=0
: GOSUB '46(4,4,900)
: GOSUB '46(5,1,400)
: GOSUB '46(1,3,100)
: IF E>0THEN 510
: PRINT "OK"
0510 PRINT "DATA LOAD BA ";
: E=0
: GOSUB '47(1,2,100)
: GOSUB '47(4,1,900)
: GOSUB '47(5,3,400)
: GOSUB '47(4,4,900)
: IF E>0THEN 590
: PRINT "OK"
0590 PRINT "SCRATCH DISK ";
: E=0
: SCRATCH DISK FLS=4,END =1000
: GOSUB '40(4,4,1000,0)
: GOSUB '53(3)
: SCRATCH DISK T#1,LS=24,END =S9
: GOSUB '40(24,24,S9,0)
: GOSUB '53(23)
: IF E>0THEN 690
: PRINT "OK"
0690 PRINT "MOVE END ";
: E=0
: MOVE END F=1000
: GOSUB '40(24,24,1000,0)
: MOVE END T#1=INT((S9+1)/12)*12+3
: GOSUB '40(24,24,S9,0)
: IF E>0THEN 770
: PRINT "OK"
0770 PRINT "LIMITS ";
: DATA SAVE DC OPEN F$#5,100,STR(Y3$,1,5)
: DATA SAVE DC OPEN F#Y2,Y2*50,Y2$
: MOVE END F=800
: GOSUB '40(24,224,800,0)
: DATA SAVE DC OPEN F$#1,100,"DATA1"
: GOSUB '41(1,10)
: GOSUB '41(Y2,12)
: GOSUB '41(5,10)
: E=0
: LIMITS F#Y2,Y2$,L1,L2,X(1)
0890 GOSUB '42(L1,L2,X(1),124,223,26)
: LIMITS T#5,STR(Y3$,1,5),X1(1,1),L1,L2
: GOSUB '42(X1(1,1),L1,L2,24,123,22)
: IF E>0THEN 940
: PRINT "OK"
0940 PRINT "VERIFY ";
: E=0
: VERIFY F(0,Y2*10)
: VERIFY T#4,(1000,1023)
: IF E>0THEN 1000
: PRINT "OK"
1000 PRINT "SCRATCH ";
: E=0
: SCRATCH F#Y2,Y2$
: GOSUB '43(Y2$)
: SCRATCH T#1,"DATA1",STR(Y3$,1,5)
: GOSUB '43("DATA1")
: GOSUB '43(STR(Y3$,1,5))
: IF E>0THEN 1090
: PRINT "OK"
1090 PRINT "DATASAVE DC OPEN ";
: E=0
: SCRATCH DISK FEND =800
: DATA SAVE DC OPEN F#1,100,"DATA1"
: SCRATCH F#1,"DATA1"
: DATA SAVE DC OPEN F#1,"DATA1","DATA1"
: GOSUB '41(1,5)
: DATA SAVE DC OPEN F$#Y2,100,Y2$
: GOSUB '41(Y2,6)
: DATA SAVE DC OPEN T#3,100,STR(Y3$,1,5)
: GOSUB '41(3,8)
1190 DATA SAVE DC OPEN T$#5,INT(S9/16)+37,"DATA5"
: GOSUB '41(5,4)
: DATA SAVE DC OPEN F#4,TEMP,801,900
: GOSUB '41(4,6)
: GOSUB '48("DATA1",24,123,12)
: GOSUB '48(Y2$,124,223,14)
: GOSUB '48(STR(Y3$,1,5),224,323,18)
: IF E>0THEN 1310
: PRINT "OK"
1310 PRINT "DATASAVE DC CLOSE ";
: E=0
: DATA SAVE DC CLOSE#3
: GOSUB '49(3,0,0,0)
: DATA SAVE DC CLOSE#Y2
: GOSUB '49(2,0,0,0)
: DATA SAVE DC CLOSEALL
: GOSUB '49(1,0,0,0)
: GOSUB '49(5,0,0,0)
: GOSUB '49(4,0,0,0)
: IF E>0THEN 1470
: PRINT "OK"
: FOR I=1TO 200
: NEXT I
: PRINT HEX(03);
1470 PRINT "DATALOAD DC OPEN ";
: E=0
: DATA LOAD DC OPEN F#1,"DATA1"
: DATA LOAD DC OPEN T#Y2,Y2$
: DATA LOAD DC OPEN T#5,"DATA5"
: DATA LOAD DC OPEN F#3,STR(Y3$,1,5)
: DATA LOAD DC OPEN T#4,TEMP,801,900
: GOSUB '49(1,24,123,24)
: GOSUB '49(2,124,223,124)
: GOSUB '49(3,224,323,224)
1580 GOSUB '49(4,801,900,801)
: GOSUB '49(5,324,423,324)
: IF E>0THEN 1630
: PRINT "OK"
1630 PRINT "DSKIP ";
: E=0
: GOSUB '50(1,1,8,32)
: GOSUB '50(2,2,3,130)
: GOSUB '50(3,3,0,240)
: GOSUB '50(4,1,3,804)
: GOSUB '50(5,3,0,332)
: IF E>0THEN 1730
: PRINT "OK"
1730 PRINT "DBACKSPACE ";
: E=0
: GOSUB '51(1,2,2,28)
: GOSUB '51(2,1,3,127)
: GOSUB '51(3,2,5,230)
: GOSUB '51(4,3,0,801)
: GOSUB '51(5,1,4,328)
: IF E>0THEN 1830
: PRINT "OK"
1830 PRINT "DATALOAD DC ";
: E=0
: GOSUB '54(3,7)
: GOSUB '54(4,1)
: GOSUB '54(1,5)
: GOSUB '54(2,5)
: GOSUB '54(5,5)
: IF E>0THEN 1930
: PRINT "OK"
1930 IF O2>1THEN 1960
: IF E0=0THEN 1960
: E9$(P9)="NG"
1960 SELECT PRINT 005(64)
: PRINT HEX(03);"2200 HARDWARE DIAGNOSTIC - DISK INST."
: PRINT "MOUNT PROGRAM DISK"
: INPUT "KEY EXEC TO RESUME",Z$
: IF E9$(P9)<>"NG"THEN 2010
: GOTO 2030
2010 IF T0=0THEN 2030
: LOAD DC T#6,"WDMD030A"
2030 LOAD DC T#6,"S/START"
2040 DEFFN'40(V1,V2,V3,V4)
: DATA LOAD BA T#1,(0,L$)C$()
: GOSUB '61(STR(C$(1),1,1))
: IF V1<>VAL(STR(C$(1),2,1))THEN 3860
: GOSUB '61(STR(C$(1),3,2))
: IF V4=0THEN 2110
: AND (STR(C$(1),3,1),7F)
2110 GOSUB '62(STR(C$(1),3,2))
: IF V2<>V0THEN 3860
: IF V4=0THEN 2150
: AND (STR(C$(1),5,1),7F)
2150 GOSUB '62(STR(C$(1),5,2))
: IF V3<>V0-1THEN 3860
: FOR I=1TO 10
: IF STR(C$(1),6+I,1)<>HEX(00)THEN 3860
: NEXT I
: RETURN
2210 DEFFN'41(F,V1)
: V1=V1*2
: FOR I=1TO V1STEP 2
: IF F<>0THEN 2270
: T=3
: GOTO 2300
2270 T=T+1
: IF T<3THEN 2300
: T=1
2300 ON TGOTO 2320,2350,2380
: GOTO 3900
2320 DATA SAVE DC #F,I,A$(),X(),A1$(),A$,X1(),Q0$,"ABC",I+1,A$(),X(),A1$(),X1(
),Q0$,"ABC",A$
: NEXT I
: GOTO 2420
2350 DATA SAVE DC $#F,I,A$(),X(),A1$(),A$,X1(),Q0$,"ABC",I+1,A$(),X(),A1$(),X1
(),Q0$,"ABC",A$
: NEXT I
: GOTO 2440
2380 DATA SAVE DC I,A$(),X(),A1$(),X1(),A$,Q0$,"ABC",I+1,A$(),X(),A1$(),X1(),Q
0$,"ABC",A$
: NEXT I
: DATA SAVE DC END
: RETURN
2420 DATA SAVE DC #F,END
: RETURN
2440 DATA SAVE DC $#F,END
: RETURN
2460 DEFFN'42(V1,V2,V3,A,B,C)
: IF V1<>ATHEN 3860
: IF V2<>BTHEN 3860
: IF V3<>CTHEN 3860
: RETURN
2510 DEFFN'43(N$)
: N1$=N$
: XOR (STR(N1$,2),N1$)
: W1$=STR(N1$,8,1)
: H1$=HEX(0000)
: ADDC(H$,W1$)
: ADDC(H$,W1$)
: ADDC(H$,W1$)
: ADD(STR(H$,1,1),STR(H$,2,1))
: H=VAL(H$)-INT(VAL(H$)/24)*24
2610 DATA LOAD BA T#1,(H,L$)C$()
: MAT SEARCHC$(),=STR(N$,1,8)TO L$()STEP 8
: IF L$(1)<>HEX(0000)THEN 2680
: H=H-1
: IF H>0THEN 2610
: H=23
: GOTO 2610
2680 GOSUB '62(L$(1))
: V1=INT(V0/16)
: V2=V0-V1*16
: IF STR(C$(V1+1),1,1)<>HEX(11)THEN 3860
: RETURN
2730 DEFFN'44(F,T,V1)
: GOSUB 2950
: ON TGOTO 2770,2810,2860
: GOTO 3860
2770 DATA SAVE DA T#F,(V1,V0)V1,A$(),X(),A1$(),X1(),"ABC",Q0$
: IF V0<>V1+1THEN 3860
: DATA SAVE DA T#F,(V0,V0)END
: RETURN
2810 DATA SAVE DA T$#F,(V1,L$)V1,A$(),X(),A1$(),X1(),"ABC",Q0$
: GOSUB '62(L$)
: IF V0<>V1+1THEN 3860
: DATA SAVE DA T$#F,(V0,L$)END
: RETURN
2860 DATA SAVE DA F$(L$,L$)V1,A$(),X(),A1$(),X1(),"ABC",Q0$
: GOSUB '62(L$)
: IF V0<>V1+1THEN 3860
: DATA SAVE DA F$(L$,L$)END
: RETURN
2910 DATA SAVE DA F$(L$,V0)V1,A$(),X(),A1$(),X1(),"ABC",Q0$
: IF V0<>V1+1THEN 3860
: DATA SAVE DA F(L$,V0)END
: RETURN
2950 V0=INT(V1/256)
: BIN(STR(L$,1,1))=V0
: BIN(STR(L$,2,1))=V1-V0*256
: RETURN
2990 DEFFN'45(F,T,V1)
: GOSUB 2950
: ON TGOTO 3030,3060,3090,3110
: GOTO 3900
3030 DATA LOAD DA T#F,(V1,V0)I,A$(),X(),A1$(),X1(),L1$,Q0$
3040 IF I<>V0-1THEN 3860
: RETURN
3060 DATA LOAD DA F#F,(V1,L$)I,A$(),X(),A1$(),X1(),L1$,Q0$
3070 GOSUB '62(L$)
: GOTO 3040
3090 DATA LOAD DA F(L$,L$)I,A$(),X(),A1$(),X1(),L1$,Q0$
: GOTO 3070
3110 DATA LOAD DA F(L$,V0)I,A$(),X(),A1$(),X1(),L1$,Q0$
: GOTO 3040
3130 DEFFN'46(F,T,V1)
: GOSUB 2950
: STR(C$(1),1,2)=L$
: ON TGOTO 3180,3210,3240,3260
: GOTO 3900
3180 DATA SAVE BA F#F,(V1,V0)C$()
3190 IF V0<>V1+1THEN 3860
: RETURN
3210 DATA SAVE BA F$#F,(V1,L$)C$()
3220 GOSUB '62(L$)
: GOTO 3190
3240 DATA SAVE BA T$#1,(L$,L$)C$()
: GOTO 3220
3260 DATA SAVE BA T#F,(L$,V0)C$()
: GOTO 3190
3280 DEFFN'47(F,T,V1)
: GOSUB 2950
: ON TGOTO 3320,3360,3400,3420
: GOTO 3900
3320 DATA LOAD BA T#F,(V1,V2)C$()
3330 GOSUB '62(STR(C$(1),1,2))
: IF V2<>V0+1THEN 3860
: RETURN
3360 DATA LOAD BA T#1,(V1,L$)C$()
3370 GOSUB '62(L$)
: V2=V0
: GOTO 3330
3400 DATA LOAD BA F#F,(L$,L$)C$()
: GOTO 3370
3420 DATA LOAD BA F#F,(L$,V2)C$()
: GOTO 3330
3440 DEFFN'48(N$,V1,V2,V3)
: LIMITS FN$,A,B,C
3460 GOSUB '42(V1,V2,V3,A,B,C)
: RETURN
3480 DEFFN'49(F,V1,V2,V3)
: LIMITS F#F,A,B,C
: GOTO 3460
3510 DEFFN'50(F,T,V1,M)
: ON TGOTO 3540,3560,3580
: GOTO 3900
3540 DSKIP #F,V1S
: GOTO 3600
3560 DSKIP #F,V1
: GOTO 3600
3580 DSKIP #F,END
: GOTO 3630
3600 LIMITS F#F,A,B,I
: IF I<>MTHEN 3860
: RETURN
3630 LIMITS F#F,A,B,C
: IF M<>CTHEN 3860
: RETURN
3660 DEFFN'51(F,T,V1,M)
: ON TGOTO 3690,3710,3730
: GOTO 3900
3690 DBACKSPACE #F,V1S
: GOTO 3600
3710 DBACKSPACE #F,V1
: GOTO 3600
3730 DBACKSPACE #F,BEG
: GOTO 3600
3750 DEFFN'61(W1$)
: AND (W1$,80)
: IF V4=0THEN 3800
: IF W1$<>HEX(80)THEN 3860
: RETURN
3800 IF W1$>HEX(00)THEN 3860
: RETURN
3820 DEFFN'62(L$)
: V0=VAL(STR(L$,1,1))*256+VAL(STR(L$,2,1))
: RETURN
3850 IF E>OTHEN 3890
3860 PRINT "ERROR"
: E=E+1
: E0=E0+1
3890 RETURN
3900 STOP "SYS ERROR"
3910 PRINT HEX(0A0A);
: PRINT HEX(03);"2200 HARDWARE DIAGNOSTIC - DISK INSTRUCTION"
: RETURN
3940 DEFFN'53(V1)
: X=17
: V0=0
3970 DATA LOAD BA T#1,(V0,V0)C$()
: MAT SEARCHC$()<X,256-X+1>,<>H1$TO L$()
: X=1
: IF L$(1)>HEX(0000)THEN 3860
: IF V0<=V1THEN 3970
: RETURN
4030 DEFFN'54(F,V1)
: DATA LOAD DC #F,I,A$(),X(),A1$()
: IF I<>V1THEN 3860
: RETURN
4070 DEFFN'100
: ON O8GOTO 4100,4120,4140
: STOP "SYSTEM ERROR"
4100 SELECT PRINT 005
: RETURN
4120 SELECT PRINT 215
: RETURN
4140 SELECT PRINT 211
: RETURN
4160 DEFFN'15
: COM CLEAR
: LOAD DC T#6,"START"
4190 E9$(P9)="NG"
: PRINT "ERROR ";E1$;" AT STMT #";E2$
: GOTO 1960