Listing of file='PATCH' on disk='vmedia/701-2118F.wvd.zip'
# Sector 618, program filename = 'PATCH', protected file 0010 REM - PATCH UTILITY - 8/17/76 4.30 PM DA 0020 REM - PURPOSE; TO PATCH 2200 VP MICROCODE ON A DISK 0030 DIM A2$2,A3$3,A$(4)60,P$120,N$8,G$6,E$2,F$2,D$3,D1$2,D$(6)3,S1$2,S2$2,S3$ 2,S4$2,T$2 0040 D$()="F10R10F20R20F30R30" 0060 SELECT PRINT 005(64),LIST 005(64),CO 005(64),DISK 310 : GOSUB '0 0070 DEFFN'0 : RETURN CLEAR : REM %MENU LIST 0075 PRINT HEX(03);AT(1,10);"PATCH UTILITY MENU" 0080 PRINT AT(3,3);"'0 - MENU LISTING";AT(4,3);"'1 - INSTRUCTIONS FOR PATCHING ";AT(5,3);"'2 - PATCH DISK" 0085 PRINT : PRINT "***** USE ONLY UNDER GUIDANCE OF WANG FIELD SERVICE *****" 0090 STOP " PRESS S.F. KEY TO BEGIN" : GOSUB '0 0100 DEFFN'1 : RETURN CLEAR : REM %INSTRUCTIONS FOR PATCHING 0110 PRINT HEX(03);AT(1,10);"INSTRUCTIONS FOR PATCHING";AT(3,0); : RESTORE 1 0120 READ P$ : PRINT TAB(3);P$ : IF P$<>" " THEN 120 0130 STOP "PRESS S.F. KEY '2 TO BEGIN PATCHING" 0140 DATA "PATCHING TAKES PLACE IN TWO AREAS, INSTRUCTION MEMORY AND "," PROG RAM MEMORY." 0150 DATA "PATCHES TO INSTRUCTION MEMORY ARE 6 HEX DIGITS, AND","PATCHES TO PR OGRAM MEMORY ARE 2 HEX DIGITS." 0160 DATA "BEFORE ENTERING PATCHES, TYPE AN ORIGIN COMMAND:"," OF THE FORM ' PCXXXX' OR 'ICXXXX'." 0170 DATA "TO EXIT FROM PATCH ROUTINE TYPE 'END'" 0180 DATA " " 0250 DEFFN'2 : RETURN CLEAR : REM %PATCH DISK 0260 PRINT "MOUNT (UNPROTECTED) DISK PLATTER TO BE PATCHED" 0263 D$="F10" : LINPUT " ADDRESS OF DISK PLATTER (F10,R10, ...) ",D$ : MAT SEARCH D$(),=STR(D$)TO D1$ STEP 3 : IF D1$=HEX(0000)THEN 263 : ON (VAL(D1$,2)+2)/3 SELECT DISK 310;DISK B10;DISK 320;DISK B20;DISK 330;D ISK B30 0270 N$="@@" : LINPUT " NAME OF FILE TO BE MODIFIED: ",N$ 0280 REM OPEN THE FILE AND MODIFY THE REVISION COUNT 0290 PRINT "------- PRE-SCANNING DISK FILE ---------"; 0310 LIMITS T N$,I,S1,S1,S1 : IF S1=0 THEN 270 : F$=HEX(FFFF) 0315 A2$,A3$,A$()=" " : DATA LOAD DA T(I)A2$,A3$,A$() : IF END THEN 400 : IF A2$<>HEX(0000)THEN 340 : $TRAN(A$(),HEX(2000))R : GOTO 325 0320 A$()= A$()& "- R00" 0325 S1=LEN(A$()) : IF S1<3 THEN 340 : G$=STR(A$(),S1-2) : IF STR(G$,1,1)<>"R"THEN 320 : IF NUM(STR(G$,2,2))<2THEN 320 0330 CONVERT STR(G$,2,2) TO S3 : S3=S3+1 : CONVERT S3 TO STR(G$,2,2),(##) : STR(A$(),S1-2)=G$ : DATA SAVE DA T (I)A2$,A3$,A$() : S1,S3=0 : S1$,S2$,S3$,S4$=HEX(0000) 0335 A2$,A3$,A$()=" " : DATA LOAD DA T(I,I)A2$,A3$,A$() : IF END THEN 400 : IF A2$=F$THEN 335 : IF A2$=HEX(0000)THEN 345 : IF A2$=HEX(0001)THEN 350 : IF A2$=HEX(0003)THEN 360 0340 PRINT "FORMAT ERROR" : GOTO 335 0345 PRINT A$() : GOTO 335 0350 IF S1>0 THEN 355 : S1$=A3$ : S1=I-1 : GOTO 335 0355 S2$=STR(A3$,,2) ADDC STR(A3$,3) : GOTO 335 0360 IF S3>0 THEN 365 : S3$=A3$ : S3=I-1 : GOTO 335 0365 S4$=STR(A3$,,2) ADDC STR(A3$,3) : GOTO 335 0400 PRINT : PRINT "LOCATION:","DATA:"; : E$="IC" : F$=HEX(0000) : REM INITIAL PATCH LOCATION 0410 PRINT : PRINT E$;HEXOF(F$), : G$=" " : LINPUT -G$ : PRINT TAB(30);HEX(0C); : IF G$<>" " THEN 420 : F$=ADDC HEX(01) : GOTO 410 0420 IF G$="END" THEN GOSUB '0 : IF STR(G$,,2)<>"PC"AND STR(G$,,2)<>"IC"THEN 440 : IF VER(STR(G$,3),"HHHH")<>4 THEN 600 : E$=G$ : HEXPACK F$ FROM STR(G$,3) : GOTO 410 0440 G=.5*VER(G$,"HHHHHH") : IF G+G<>LEN(G$)THEN 600 : G1$=ALL(00) : IF E$="PC"THEN 470 : IF E$="IC"THEN REM : ELSE STOP "THIS CAN'T HAPPEN!!!"# 0450 IF G<>3 THEN 600 : HEXPACK G1$ FROM G$ : GOSUB '60 : GOTO 410 0470 IF G<>INT(G) THEN 600 : HEXPACK G1$ FROM G$ : GOSUB '50 : GOTO 410 0600 PRINT "ERROR IN INPUT" : GOTO 410 0810 DEFFN'50 : REM %PC WRITE : IF F$<S1$ OR F$>=S2$ THEN 980 : T$=F$ SUBC S1$ : T=S1+INT(VAL(T$,2)/240) : GOTO 815 0812 DATA SAVE DA T (T,T)A2$,A3$,A$() : IF G=0 THEN RETURN 0815 A2$,A3$,A$()=" " : DATA LOAD DA T (T)A2$,A3$,A$() : IF A2$<>HEX(0001) THEN 980 0820 T$=F$ SUBC STR(A3$,,2) : T1=1+VAL(T$,2) : IF T1>VAL(STR(A3$,3))THEN 812 : PRINT HEXOF(STR(A$(),T1,1)); : STR(A$(),T1,1)=G1$ : G=G-1 : F$=ADDC HEX(01) : IF G=0 THEN 812 : G1$=STR(G1$,2) : GOTO 820 0910 DEFFN'60 : REM %IC WRITE : IF F$<S3$ OR F$>=S4$ THEN 980 : T$=F$ SUBC S3$ : T=S3+INT(VAL(T$,2)/80) 0915 A2$,A3$,A$()=" " : DATA LOAD DA T (T)A2$,A3$,A$() : IF A2$<>HEX(0003) THEN 980 0920 T$=F$ SUBC STR(A3$,,2) : T1=VAL(T$,2) : IF T1+1>VAL(STR(A3$,3))THEN 915 : PRINT HEXOF(STR(A$(),1+3*T1,3)); : STR(A$(),1+3*T1,3)=G1$ : DATA SAVE DA T (T)A2$,A3$,A$() : F$=ADDC HEX(01) : RETURN 0980 PRINT "ERROR IN WRITING TO DISK"; : RETURN