image of READY prompt

Wang2200.org

Listing of file='2229PR' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'

# Sector 1564, program filename = '2229PR'
0010 COM F9$8
   : F9$="2229PR"
   : LOAD T"2229STRT"
0020 REM % FILE "2229PR" - Part of 2229 utilities package
   : REM  ST 01/21/1983
   : REM % Recover complete platter from tape(s)
0030 COM D$3,O$3
   : DIM T$30,V$(16),F$(16),K$1,A1$(16,16)64,E$20,V$8,C$2,M$60,V1$8,C(4),S$30
0040 LOAD T#1,"2229SUB"5000,8999BEG 50
0050 C1=0
   : REM EXP BC
   : C2=0
   : REM CONTINUATION FLAG
   : V1=1
   : REM EXP TAPE SEQUENCE
0060 S=0
   : REM FIRST SECTOR TO WRITE
   : T1=0
   : REM EXPECTED TAPE FILE SECTION NUMBER
   : REM T$ TITLE
   : REM D$ SOURCE ADDRESS
   : REM A1$() DATA BUFFER
0070 T$="RECOVER PLATTER FROM TAPE"
   : $OPEN #4
   : GOSUB '151
   : REM TITLE
0080 REM % GET DISK ADDRESS
   : PRINT HEX(0F);
0090 IF D$=" "THEN D$="D11"
   : PRINT AT(2,0);
   : LINPUT "Destination platter address ",D$
   : SELECT #2<D$>
   : ERRORA=1
   : GOTO 140
0100 VERIFY T#2,(0,0)A
   : ERRORA=1
   : GOTO 140
0110 $OPEN #2
   : DATA LOAD BA T#2,(0)V$()
   : ERRORA=1
   : GOTO 140
0120 DATA SAVE BA T#2,(0)V$()
   : ERRORA=1
   : GOTO 140
0130 $CLOSE#2
   : IF A=0THEN 150
0140 $CLOSE#2
   : PRINT AT(2,35);"ERROR ";ERR;HEX(07);
   : GOTO 80
0150 PRINT HEX(06);AT(2,35,),AT(5,0);
   : PRINTUSING 160,"INDEX SECTORS = ",VAL(STR(V$(1),2,2))
   : PRINTUSING 160,"END CAT. AREA = ",VAL(STR(V$(1),5,2),2)-1
   : PRINTUSING 160,"CURRENT END   = ",VAL(STR(V$(1),3,2),2)-1
0160 %############### #####
0170 M$="ALL DATA WILL BE OVERWRITTEN"
   : GOSUB '160
0180 K$="Y"
   : PRINT AT(12,0);
   : LINPUT "Is this the correct platter?",K$
   : ERRORGOTO 180
0190 IF K$="Y" OR K$="y"THEN 200
   : GOTO 70
0200 PRINT HEX(06),AT(4,0,)
   : M$="Insert tape cartridge and press ONLINE"
   : GOSUB '160
   : GOSUB '152
0210 GOSUB '104
   : REM LOAD TAPE
0220 REM % FILE MARK SHOULD BE FIRST
   : GOSUB '112
   : M$="File mark expected"
   : IF F3<>1THEN 9100
0230 REM % READ LABEL
   : M$="Reading volume label"
   : GOSUB '160
   : GOSUB '112
   : M$="Expected volume label"
   : IF F3=1THEN 9100
0240 M$="Label is not 256 bytes"
   : IF B<>256THEN 9100
0250 MAT COPY STR(A1$(),1,256)TO V$()
   : M$="First record is not Volume Header"
   : IF STR(V$(),1,4)<>"VHDR"THEN 9100
0260 CONVERT STR(V$(),13,2)TO V
   : M$="  "
   : GOSUB '160
   : PRINT AT(4,0);
   : PRINTUSING 270,"Tape volume name",STR(V$(),5,8)
   : PRINTUSING 270,"Date ",STR(V$(),17,6)
   : PRINTUSING 270,"Time ",STR(V$(),23,6)
   : PRINTUSING 270,"Comments",STR(V$(),202,55)
   : PRINT
   : IF V=V1THEN 300
0270 %#################     ##################################################
     #####
0280 M$=" "
   : GOSUB '160
   : PRINT "Expected volume sequence ";V1
   : PRINT "Mounted volume is sequence ";V
   : PRINT "Press return to unload tape"
   : GOSUB '154
0290 GOSUB '105
   : REM UNLOAD
   : GOTO 200
0300 PRINT AT(9,0);
   : PRINTUSING 310,V
   : IF C2=1THEN 320
   : PRINT AT(13,0);
   : K$="Y"
   : LINPUT "Is this the correct volume? ",K$
   : IF K$="Y" OR K$="y"THEN 340
   : GOTO 290
0310 %Tape sequence number  #
0320 REM JUMP HERE IF NOT FIRST VOLUME
   : IF STR(V$(),5,8)=V1$THEN 340
0330 PRINT "Incorrect volume mounted "
   : GOTO 620
0340 V1=V1+1
   : V1$=STR(V$(),5,8)
   : PRINT HEX(06),AT(5,0,);
   : PRINTUSING 310,V
   : REM SAVE THIS VOLUME NAME
   : M$=" "
   : GOSUB '160
   : GOSUB '112
   : REM LOOK FOR NEXT FILE MARK
   : M$="Expected file mark"
   : IF F3<>1THEN 9100
0350 GOSUB '112
   : REM READ FILE LABEL
0360 M$="File label not 256 bytes"
   : IF B<>256THEN 9100
0370 MAT COPY STR(A1$(),1,256)TO F$()
0375 IF VAL(STR(F$(),5,2),2)<>0THEN 380
   : PRINT HEX(06),AT(8,0,);"Tape cartridge is file backup, not platter backup
     "
   : PRINT "Run 'Recover files from tape' utility"
   : GOSUB '153
   : STOP
   : GOTO 10
0380 T1=T1+1
   : M$="Tape file section incorrect"
   : IF VAL(STR(F$(),7,1))<>T1THEN 9100
0390 M$="File header block count not = 0"
   : IF STR(F$(),28,2)<>HEX(0000)THEN 9100
0400 M$="Record format byte wrong"
   : IF STR(F$(),30,1)<>HEX(FF)THEN 9100
0410 M$="Record/Block count incorrect"
   : IF MOD(VAL(STR(F$(),31,2),2),VAL(STR(F$(),33,2),2))<>2THEN 9100
0420 M$="Not a platter backup (System ID incorrect)"
   : IF STR(F$(),35,1)<>HEX(11)THEN 9100
0430 GOTO 450
   : M$="File name is:"
   : GOSUB '160
   : PRINTUSING 440,STR(F$(),69,MIN(POS(STR(F$(),69)=HEX(00)),80))
0440 %########################################################################
     ########
0450 REM % START READING DATA
   : REM NEXT SECTOR TO WRITE IS S
   : PRINT AT(10,0,);
   : C1=0
   : REM EXPECTED PHYSICAL RECORD COUNT
0460 GOSUB '112
   : IF STR(R$,1,1)=HEX(07)THEN 520
   : REM JUMP IF LABEL IS HIT
0470 M$="Data not on page boundary"
   : IF MOD(B,256)<>0THEN 9100
0480 B1=1
   : REM POINTER INTO ARRAY
0490 $OPEN #2
   : PRINT HEX(06),AT(10,0);"Recovering sectors ";S;" to ";S+(B/256)-1
0500 DATA SAVE BA T#2,(S,S)STR(A1$(),B1,256)
   : ERRORGOTO 9000
0510 B1=B1+256
   : IF B1<BTHEN 500
   : $CLOSE#2
   : GOTO 460
   : REM GET NEXT BLOCK
0520 REM % FILE MARK JUMPS HERE, SHOULD BE END LABEL
0530 GOSUB '112
   : MAT COPY STR(A1$(),1,256)TO F$()
   : M$="File trailer label not 256 bytes"
   : IF B<>256THEN 9100
0540 M$="File trailer block count incorrect"
   : IF VAL(STR(F$(),28,2),2)<>C1THEN 9100
0550 C2=0
   : IF STR(F$(),44,1)=HEX(00)THEN 560
   : C2=1
   : REM CONTINUATION FLAG
0560 GOSUB '112
   : REM LOOK FOR FILE MARK
   : M$="Expected file mark"
   : IF F3<>1THEN 9100
0570 GOSUB '112
   : MAT COPY STR(A1$(),1,256)TO V$()
   : REM VOLUME TRAILER
   : M$="Expected volume trailer label"
   : IF F3<>0THEN 9100
0580 MAT COPY STR(A1$(),1,256)TO V$()
0590 STR(V$(),39,8)=STR(V$(),5,8)
   : REM NEXT VOLUME NAME
0600 GOSUB '105
   : REM UNLOAD TAPE
0610 IF C2=1THEN 620
   : M$="Platter recovery done - remove cartridge"
   : GOSUB '160
   : GOSUB '153
   : STOP
   : GOTO 10
0620 PRINT HEX(06);AT(9,0,);
   : M$="Insert next cartridge"
   : GOSUB '160
   : GOSUB '152
   : GOTO 210
9000 PRINT AT(10,0,79);"Disk error "; ERR
   : $CLOSE
   : STOP
   : GOTO 10
9050 PRINT AT(10,0,79);"Tape error ";E
   : PRINT E$
   : $CLOSE
   : STOP
   : GOTO 10
9100 REM FATAL ERROR TERMINATOR
   : PRINT AT(10,0,80);M$
   : $CLOSE
   : STOP
   : GOTO 10