Listing of file='2229PB' on disk='vmedia/2229_diagnostics.wvd.zip'
# Sector 42, program filename = '2229PB' 0010 COM F9$8 : F9$="2229PB" : LOAD T"2229STRT" 0020 REM % File name "2229PB" - 2229 utilities ver 2.0 - ST 02/22/1986 0025 REM % COPYRIGHT WANG LABORATORIES, INC., 1986,1987 0030 REM % Back up a complete platter to tape 0040 SELECT PRINT 005(80),CO 005(80),LIST 005(80) : RETURN CLEAR ALL 0050 DIM T$30,A$(16),K$1,A1$(16,16)64,E$20,C$2,D$3,C(4),S$30,R$16 0060 REM T$ TITLE : REM D$ SOURCE ADDRESS : REM A1$() DATA BUFFER : REM A$() SECTOR BUFFER : REM E$ ERROR MESSAGE : REM C$ EMBEDDED BLOCK COUNT : REM C() STARTING SECTOR OF BLOCK 0070 DIM V$(16),D1$6,T1$6,L1$3 0080 DIM F$(16) : REM FILE LABEL : DIM M$80 : REM MESSAGE 0090 LOAD T#1,"2229SUB"5000,8999BEG 100 0100 INIT(00)V$() : REM VOLUME LABEL : FOR K=1TO 4 : C(K)=0 : NEXT K : REM CLEAR OUT SECTOR ARRAY 0110 T$="BACKUP PLATTER TO TAPE" : $OPEN #4 : GOSUB '151 0120 REM % Get source disk address : PRINT HEX(0F); 0130 A=0 : IF D$=" "THEN D$="D11" : PRINT AT(3,0); : PRINT "Source platter address ";AT(3,22); : LINPUT -D$ : IF VER(D$,"HHH")<>3THEN 135 : SELECT #2<D$> : ERRORA=1 : GOTO 150 0132 GOTO 140 0135 PRINT AT(3,30);"ERROR";HEX(07) : GOTO 120 0140 VERIFY T#2,(0,0)G1 : ERRORA=1 0150 IF A=0THEN 170 0160 PRINT AT(3,30);"ERROR ";ERR;HEX(07); : GOTO 120 0170 PRINT AT(3,0,79);"Source Platter "; : PRINT AT(3,23); D$ : DATA LOAD BA T#2,(0)A$() : ERRORGOTO 160 0180 G1=VAL(STR(A$(1),2,2)) : G3=VAL(STR(A$(1),3,2),2)-1 : G2=VAL(STR(A$(1),5,2),2)-1 0190 PRINT : PRINTUSING 200,"INDEX SECTORS = ",G1 : PRINTUSING 200,"END CAT. AREA = ",G2 : PRINTUSING 200,"CURRENT END = ",G3 0200 %############### ##### 0210 M$=" " : GOSUB '160 : K$="Y" : LINPUT "Is this the correct platter?",-K$ : ERRORGOTO 210 0220 IF K$="Y" OR K$="y"THEN 230 : IF K$="N"OR K$="n"THEN 221 : GOTO 210 0221 PRINT HEX(06);AT(3,0,) : GOTO 120 0230 M$=" " : GOSUB '160 0240 S1=0 : REM FIRST SECTOR 0250 GOSUB '240 : REM Get volume label parameters : GOSUB '241 : REM GET FILE PARAMETERS 0255 PRINT AT(3,40);"Sectors 0 to";G3 0260 CONVERT STR(V$(),13,2)TO V : M$="Insert tape cartridge and press ONLINE" : GOSUB '160 : PRINT : GOSUB '152 0270 PRINT HEX(06);AT(5,0,); : PRINTUSING 280,V : GOSUB '104 : REM LOAD TAPE 0280 %Tape sequence number # 0290 GOSUB '102 : REM TAKE STATUS 0300 IF STR(S$,07,1)=HEX(00)THEN 310 : GOSUB '208 : GOTO 270 0310 K$=HEX(10) : STR(S$,08,1)=AND K$ : IF STR(S$,08,1) =HEX(00)THEN 320 : M$="Tape is write protected " : GOSUB '160 : GOSUB '152 : GOTO 270 0320 STR(F$(),69,80)=D$&ALL(20) : STR(F$(),72,23)=" BASIC-2 platter backup" : STR(F$(),149,1)=HEX(00) 0330 REM WRITE FILE MARK : GOSUB '115 : IF E<>0THEN 9050 0340 REM % Write volume label 0350 MAT COPY V$()TO A1$() : REM MOVE LABEL INTO DATA BLOCK 0360 GOSUB '213 : REM WRITE VOLUME HEADER LABEL : IF E=0THEN 370 : IF E<>3THEN 9050 : GOSUB '208 : GOTO 360 0370 GOSUB '115 : REM WRITE FILE MARK : IF E<>0THEN 9050 0380 REM % Write file header label 0390 GOSUB '245 : REM SET UP FILE HEADER : STR(F$(),5,2)=BIN(1,2) : REM FIRST FILE ON TAPE 0400 MAT COPY F$()TO A1$() : REM MOVE LABEL INTO DATA ARRAY 0410 GOSUB '213 : REM WRITE LABEL : IF E=0THEN 420 : IF E<>3THEN 9050 : GOSUB '208 : GOTO 410 0420 REM % Start writing data blocks 0430 S2=S1 : GOSUB '225 : REM GET DATA BLOCK : B=P-1 : REM # OF BYTES 0440 PRINT HEX(06);AT(10,0,79);"Now on sectors ";S2;"to ";S1-1 : GOSUB '113 : REM WRITE DATA : IF E<>0THEN 460 0450 IF S1<=G3 THEN 430 : GOSUB '220 : REM IF NOT DONE, GET MORE DATA : REM ELSE GET RESULTS OF WRITE 0460 IF E=0THEN 500 : REM ALL GOOD : IF E=2THEN 470 : REM OUT OF TAPE : IF E<>3THEN 9050 : GOSUB '208 : GOTO 440 0470 REM % Out of tape - finish off file and volume labels and continue on nex t cartridge if not done 0480 REM 0490 S1=C(VAL(STR(R$,2,1))+1) : REM RESET STARTING SECTOR ADDRESS TO ACCOUNT FOR BLOCKS NOT WRITTEN 0500 GOSUB '115 : REM WRITE FILE MARK : IF E=2THEN 500 : IF E<>0THEN 9050 0510 C=C-VAL(STR(R$,2,1)) : GOSUB '242 : REM NEW BLOCK COUNT 0520 REM % Write file trailer : MAT COPY F$()TO A1$() : GOSUB '213 : IF E=2THEN 520 : IF E<>0THEN 9050 0530 IF E<>0THEN 9050 0540 GOSUB '115 : REM WRITE FILE MARK : IF E=2THEN 540 : IF E<>0THEN 9050 0550 REM % Write volume trailer 0560 STR(V$(),1,4)="VEND" : V=V+1 : IF S1>G3THEN STR(V$(),39,8)=ALL(00) : REM NEXT VOLUME NAME : MAT COPY V$()TO A1$() 0570 GOSUB '213 : IF E=2THEN 570 : IF E<>0THEN 9050 0580 GOSUB '105 : IF S1<=G3THEN 590 : REM JUMP IF ANOTHER CARTRIDGE NEEDED : M$="Backup done - remove cartridge" : GOSUB '160 : $CLOSE#4 : GOSUB '153 : STOP 0590 M$="Backup requires another cartridge" : GOSUB '160 : PRINT "Insert next cartridge" : GOSUB '152 0600 CONVERT VTO STR(V$(),13,2),(##) 0610 STR(V$(),1,4)="VHDR" : GOTO 270 : REM CONTINUE WITH NEXT CARTRIDGE 9050 PRINT AT(10,0,79);"Tape error ";E : PRINT E$ : $CLOSE : GOSUB '153 : STOP : GOTO 10