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